From f2f35e50a0e2d6e0b2c7f02b5e6c76e82643c80a Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 25 Jun 2012 12:39:25 +0000 Subject: [PATCH] Create diskstream before calling Route::set_state, the set_state causes muted MIDI tracks to look up their diskstream (#4947). git-svn-id: svn://localhost/ardour2/branches/3.0@12922 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/track.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 1c45460088..7f307f3edc 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -119,12 +119,12 @@ Track::state (bool full) int Track::set_state (const XMLNode& node, int version) { - if (Route::set_state (node, version)) { - return -1; - } - XMLNode* child; + /* Create the diskstream before calling Route::set_state, as MidiTrack + needs it if the track is muted (it ends up calling MidiTrack::get_channel_mask) + */ + if (version >= 3000) { if ((child = find_named_node (node, X_("Diskstream"))) != 0) { boost::shared_ptr ds = diskstream_factory (*child); @@ -133,6 +133,10 @@ Track::set_state (const XMLNode& node, int version) } } + if (Route::set_state (node, version)) { + return -1; + } + if (_diskstream) { _diskstream->playlist()->set_orig_track_id (id()); }