summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-05-29 14:38:25 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-05-29 14:38:25 +0000
commit489d2ba1a76c64a935808591571ca63a053172c8 (patch)
tree8cd12e3f53b7ffaa15271650b3b7c0b0253e1b86
parentc3821a78162fe6d89455ab5ed4e925bafec2a845 (diff)
don't always rebuild peakfiles for compound regions
git-svn-id: svn://localhost/ardour2/branches/3.0@9627 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--libs/ardour/ardour/audio_playlist_source.h3
-rw-r--r--libs/ardour/ardour/midi_playlist_source.h3
-rw-r--r--libs/ardour/ardour/playlist_source.h1
-rw-r--r--libs/ardour/audio_playlist_source.cc10
-rw-r--r--libs/ardour/audiosource.cc12
-rw-r--r--libs/ardour/midi_playlist_source.cc9
6 files changed, 18 insertions, 20 deletions
diff --git a/libs/ardour/ardour/audio_playlist_source.h b/libs/ardour/ardour/audio_playlist_source.h
index 273651b7d1..42359414e9 100644
--- a/libs/ardour/ardour/audio_playlist_source.h
+++ b/libs/ardour/ardour/audio_playlist_source.h
@@ -32,7 +32,7 @@ namespace ARDOUR {
class AudioPlaylist;
-class AudioPlaylistSource : public AudioSource, public PlaylistSource {
+class AudioPlaylistSource : public PlaylistSource, public AudioSource {
public:
virtual ~AudioPlaylistSource ();
@@ -59,6 +59,7 @@ class AudioPlaylistSource : public AudioSource, public PlaylistSource {
AudioPlaylistSource (Session&, const PBD::ID& orig, const std::string& name, boost::shared_ptr<AudioPlaylist>, uint32_t chn,
frameoffset_t begin, framecnt_t len, Source::Flag flags);
AudioPlaylistSource (Session&, const XMLNode&);
+
private:
uint32_t _playlist_channel;
diff --git a/libs/ardour/ardour/midi_playlist_source.h b/libs/ardour/ardour/midi_playlist_source.h
index 85f7a960ad..1042b61369 100644
--- a/libs/ardour/ardour/midi_playlist_source.h
+++ b/libs/ardour/ardour/midi_playlist_source.h
@@ -50,8 +50,6 @@ class MidiPlaylistSource : public MidiSource, public PlaylistSource {
void load_model(bool lock=true, bool force_reload=false);
void destroy_model();
- static void ensure_buffers_for_level (uint32_t);
-
protected:
friend class SourceFactory;
@@ -70,6 +68,7 @@ class MidiPlaylistSource : public MidiSource, public PlaylistSource {
framepos_t write_unlocked (MidiRingBuffer<framepos_t>& dst,
framepos_t position,
framecnt_t cnt);
+
private:
int set_state (const XMLNode&, int version, bool with_descendants);
framecnt_t _length;
diff --git a/libs/ardour/ardour/playlist_source.h b/libs/ardour/ardour/playlist_source.h
index b41569cbdd..b4ff2fa413 100644
--- a/libs/ardour/ardour/playlist_source.h
+++ b/libs/ardour/ardour/playlist_source.h
@@ -50,7 +50,6 @@ class PlaylistSource : virtual public Source {
PlaylistSource (Session&, const XMLNode&);
void add_state (XMLNode&);
-
};
} /* namespace */
diff --git a/libs/ardour/audio_playlist_source.cc b/libs/ardour/audio_playlist_source.cc
index f225db9c45..eb71dc449b 100644
--- a/libs/ardour/audio_playlist_source.cc
+++ b/libs/ardour/audio_playlist_source.cc
@@ -49,8 +49,8 @@ using namespace PBD;
AudioPlaylistSource::AudioPlaylistSource (Session& s, const ID& orig, const std::string& name, boost::shared_ptr<AudioPlaylist> p,
uint32_t chn, frameoffset_t begin, framecnt_t len, Source::Flag flags)
: Source (s, DataType::AUDIO, name)
- , AudioSource (s, name)
, PlaylistSource (s, orig, name, p, DataType::AUDIO, begin, len, flags)
+ , AudioSource (s, name)
, _playlist_channel (chn)
{
AudioSource::_length = len;
@@ -59,8 +59,8 @@ AudioPlaylistSource::AudioPlaylistSource (Session& s, const ID& orig, const std:
AudioPlaylistSource::AudioPlaylistSource (Session& s, const XMLNode& node)
: Source (s, node)
- , AudioSource (s, node)
, PlaylistSource (s, node)
+ , AudioSource (s, node)
{
/* PlaylistSources are never writable, renameable, removable or destructive */
_flags = Flag (_flags & ~(Writable|CanRename|Removable|RemovableIfEmpty|RemoveAtDestroy|Destructive));
@@ -93,7 +93,6 @@ AudioPlaylistSource::get_state ()
return node;
}
-
int
AudioPlaylistSource::set_state (const XMLNode& node, int version)
@@ -106,8 +105,8 @@ AudioPlaylistSource::set_state (const XMLNode& node, int version, bool with_desc
{
if (with_descendants) {
if (Source::set_state (node, version) ||
- AudioSource::set_state (node, version) ||
- PlaylistSource::set_state (node, version)) {
+ PlaylistSource::set_state (node, version) ||
+ AudioSource::set_state (node, version)) {
return -1;
}
}
@@ -226,3 +225,4 @@ AudioPlaylistSource::peak_path (string /*audio_path_IGNORED*/)
return _peak_path;
}
+
diff --git a/libs/ardour/audiosource.cc b/libs/ardour/audiosource.cc
index 25e1d2222d..de6c5edfec 100644
--- a/libs/ardour/audiosource.cc
+++ b/libs/ardour/audiosource.cc
@@ -252,8 +252,14 @@ AudioSource::initialize_peakfile (bool newfile, string audio_path)
int err = stat (audio_path.c_str(), &stat_file);
if (err) {
- _peaks_built = false;
- _peak_byte_max = 0;
+
+ /* no audio path - nested source or we can't
+ read it or ... whatever, use the peakfile as-is.
+ */
+
+ _peaks_built = true;
+ _peak_byte_max = statbuf.st_size;
+
} else {
/* allow 6 seconds slop on checking peak vs. file times because of various
@@ -996,6 +1002,8 @@ AudioSource::ensure_buffers_for_level_locked (uint32_t level, framecnt_t frame_r
_mixdown_buffers.clear ();
_gain_buffers.clear ();
+ cerr << "Allocating nested buffers for level " << level << endl;
+
while (_mixdown_buffers.size() < level) {
_mixdown_buffers.push_back (boost::shared_ptr<Sample> (new Sample[nframes]));
_gain_buffers.push_back (boost::shared_ptr<gain_t> (new gain_t[nframes]));
diff --git a/libs/ardour/midi_playlist_source.cc b/libs/ardour/midi_playlist_source.cc
index c39d5e2389..713aadf5b1 100644
--- a/libs/ardour/midi_playlist_source.cc
+++ b/libs/ardour/midi_playlist_source.cc
@@ -52,7 +52,6 @@ MidiPlaylistSource::MidiPlaylistSource (Session& s, const ID& orig, const std::s
, MidiSource (s, name, flags)
, PlaylistSource (s, orig, name, p, DataType::AUDIO, begin, len, flags)
{
- ensure_buffers_for_level (_level);
}
MidiPlaylistSource::MidiPlaylistSource (Session& s, const XMLNode& node)
@@ -106,8 +105,6 @@ MidiPlaylistSource::set_state (const XMLNode& node, int version, bool with_desce
}
}
- ensure_buffers_for_level (_level);
-
return 0;
}
@@ -183,9 +180,3 @@ MidiPlaylistSource::empty () const
return !_playlist || _playlist->empty();
}
-void
-MidiPlaylistSource::ensure_buffers_for_level (uint32_t level)
-{
-}
-
-