summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r--libs/ardour/session.cc13
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;