diff options
-rwxr-xr-x | gtk2_ardour/arval | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/audio_track.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/route.h | 2 | ||||
-rw-r--r-- | libs/ardour/audio_track.cc | 43 | ||||
-rw-r--r-- | libs/ardour/diskstream.cc | 3 |
5 files changed, 30 insertions, 25 deletions
diff --git a/gtk2_ardour/arval b/gtk2_ardour/arval index 5254ad4df0..dcbef15a0f 100755 --- a/gtk2_ardour/arval +++ b/gtk2_ardour/arval @@ -1,3 +1,3 @@ #!/bin/sh source ardev_common.sh -exec valgrind --num-callers=12 --tool=memcheck ./ardour.bin --novst $* +exec valgrind --num-callers=15 --tool=memcheck ./ardour.bin --novst $* diff --git a/libs/ardour/ardour/audio_track.h b/libs/ardour/ardour/audio_track.h index 4dae06eeff..c7af9fc5d8 100644 --- a/libs/ardour/ardour/audio_track.h +++ b/libs/ardour/ardour/audio_track.h @@ -85,6 +85,7 @@ class AudioTrack : public Route void bounce_range (jack_nframes_t start, jack_nframes_t end, InterThreadInfo&); XMLNode& get_state(); + XMLNode& get_template(); int set_state(const XMLNode& node); MIDI::Controllable& midi_rec_enable_control() { @@ -102,6 +103,8 @@ class AudioTrack : public Route MeterPoint _saved_meter_point; TrackMode _mode; + XMLNode& state (bool full); + void passthru_silence (jack_nframes_t start_frame, jack_nframes_t end_frame, jack_nframes_t nframes, jack_nframes_t offset, int declick, bool meter); @@ -144,8 +147,6 @@ class AudioTrack : public Route sigc::connection recenable_connection; sigc::connection ic_connection; - XMLNode& state(bool); - int deprecated_use_diskstream_connections (); void set_state_part_two (); void set_state_part_three (); diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index b6cc90c42c..8a707eb902 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -200,7 +200,7 @@ class Route : public IO XMLNode& get_state(); int set_state(const XMLNode& node); - XMLNode& get_template(); + virtual XMLNode& get_template(); sigc::signal<void,void*> SelectedChanged; diff --git a/libs/ardour/audio_track.cc b/libs/ardour/audio_track.cc index ae3d1719c7..702d167a4f 100644 --- a/libs/ardour/audio_track.cc +++ b/libs/ardour/audio_track.cc @@ -243,24 +243,6 @@ AudioTrack::set_meter_point (MeterPoint p, void *src) Route::set_meter_point (p, src); } -XMLNode& -AudioTrack::state(bool full_state) -{ - XMLNode& track_state (Route::state (full_state)); - char buf[64]; - - /* we don't return diskstream state because we don't - own the diskstream exclusively. control of the diskstream - state is ceded to the Session, even if we create the - diskstream. - */ - - snprintf (buf, sizeof (buf), "%" PRIu64, diskstream->id()); - track_state.add_property ("diskstream-id", buf); - - return track_state; -} - int AudioTrack::set_state (const XMLNode& node) { @@ -363,10 +345,22 @@ AudioTrack::set_state (const XMLNode& node) return 0; } +XMLNode& +AudioTrack::get_template () +{ + return state (false); +} + +XMLNode& +AudioTrack::get_state () +{ + return state (true); +} + XMLNode& -AudioTrack::get_state() +AudioTrack::state(bool full_state) { - XMLNode& root (Route::get_state()); + XMLNode& root (Route::state(full_state)); XMLNode* freeze_node; char buf[32]; @@ -441,6 +435,15 @@ AudioTrack::get_state() break; } + /* we don't return diskstream state because we don't + own the diskstream exclusively. control of the diskstream + state is ceded to the Session, even if we create the + diskstream. + */ + + snprintf (buf, sizeof (buf), "%" PRIu64, diskstream->id()); + root.add_property ("diskstream-id", buf); + return root; } diff --git a/libs/ardour/diskstream.cc b/libs/ardour/diskstream.cc index 542ff29e9a..66b719da86 100644 --- a/libs/ardour/diskstream.cc +++ b/libs/ardour/diskstream.cc @@ -470,7 +470,8 @@ DiskStream::use_destructive_playlist () Playlist::RegionList* rl = _playlist->regions_at (0); if (rl->empty()) { - throw failed_constructor(); + reset_write_sources (false, true); + return; } AudioRegion* region = dynamic_cast<AudioRegion*> (rl->front()); |