diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 97db5c9615..2c00fbbd80 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -3310,6 +3310,7 @@ Session::new_route_from_template (uint32_t how_many, PresentationInfo::order_t i */ XMLNode node_copy (node); + std::vector > shared_playlists; try { string name; @@ -3365,12 +3366,12 @@ Session::new_route_from_template (uint32_t how_many, PresentationInfo::order_t i if (node_copy.get_property (X_("audio-playlist"), playlist_id)) { boost::shared_ptr playlist = _playlists->by_id (playlist_id); - playlist->share_with ((node_copy.property (X_("id")))->value()); + shared_playlists.push_back (playlist); } if (node_copy.get_property (X_("midi-playlist"), playlist_id)) { boost::shared_ptr playlist = _playlists->by_id (playlist_id); - playlist->share_with ((node_copy.property (X_("id")))->value()); + shared_playlists.push_back (playlist); } } else { /* NewPlaylist */ @@ -3453,6 +3454,12 @@ Session::new_route_from_template (uint32_t how_many, PresentationInfo::order_t i goto out; } + /* Fix up sharing of playlists with the new Route/Track */ + + for (vector >::iterator sp = shared_playlists.begin(); sp != shared_playlists.end(); ++sp) { + (*sp)->share_with (route->id()); + } + if (boost::dynamic_pointer_cast(route)) { /* force input/output change signals so that the new diskstream picks up the configuration of the route. During session