diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 534bd4b9bb..6e791b4d8a 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -1850,9 +1850,9 @@ Session::XMLRouteFactory (const XMLNode& node, int version) boost::shared_ptr track; if (type == DataType::AUDIO) { - track.reset (new AudioTrack (*this, X_("toBeResetFroXML"))); + track.reset (new AudioTrack (*this, string())); // name will be reset from XML in ::set_state() below } else { - track.reset (new MidiTrack (*this, X_("toBeResetFroXML"))); + track.reset (new MidiTrack (*this, string())); // name will be reset from XML in ::set_state() below } if (track->init()) { diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index d94ab81ac1..0cf2fc2010 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -103,7 +103,13 @@ Track::init () set_align_choice_from_io (); - use_new_playlist (data_type()); + if (!name().empty()) { + /* an empty name means that we are being constructed via + serialized state (XML). Don't create a playlist, because one + will be created or discovered during ::set_state(). + */ + use_new_playlist (data_type()); + } boost::shared_ptr rp (boost::dynamic_pointer_cast (shared_from_this())); boost::shared_ptr rt = boost::dynamic_pointer_cast (rp);