summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xgtk2_ardour/arval2
-rw-r--r--libs/ardour/ardour/audio_track.h5
-rw-r--r--libs/ardour/ardour/route.h2
-rw-r--r--libs/ardour/audio_track.cc43
-rw-r--r--libs/ardour/diskstream.cc3
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());