diff options
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r-- | libs/ardour/session.cc | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 7019910381..52f799695c 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -2077,9 +2077,11 @@ Session::new_route_from_template (uint32_t how_many, const std::string& template /*NOTREACHED*/ } - IO::set_name_in_state (node_copy, name); + IO::set_name_in_state (*node_copy.children().front(), name); } + Track::zero_diskstream_id_in_xml (node_copy); + try { shared_ptr<Route> route (XMLRouteFactory (node_copy)); @@ -2088,6 +2090,15 @@ Session::new_route_from_template (uint32_t how_many, const std::string& template goto out; } + if (boost::dynamic_pointer_cast<Track>(route)) { + /* force input/output change signals so that the new diskstream + picks up the configuration of the route. During session + loading this normally happens in a different way. + */ + route->input_changed (IOChange (ConfigurationChanged|ConnectionsChanged), this); + route->output_changed (IOChange (ConfigurationChanged|ConnectionsChanged), this); + } + route->set_remote_control_id (control_id); ++control_id; |