diff options
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r-- | libs/ardour/session.cc | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index c88d85cd77..82b0e14073 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -2948,7 +2948,23 @@ Session::new_route_from_template (uint32_t how_many, PresentationInfo::order_t i */ node_copy.remove_node_and_delete (X_("Controllable"), X_("name"), X_("solo")); - boost::shared_ptr<Route> route (XMLRouteFactory (node_copy, Stateful::loading_state_version)); + /* New v6 templates do have a version in the Route-Template, + * we assume that all older, unversioned templates are + * from Ardour 5.x + * when Stateful::loading_state_version was 3002 + */ + int version = 3002; + node.get_property (X_("version"), version); + + boost::shared_ptr<Route> route; + + if (version < 3000) { + route = XMLRouteFactory_2X (node_copy, version); + } else if (version < 5000) { + route = XMLRouteFactory_3X (node_copy, version); + } else { + route = XMLRouteFactory (node_copy, version); + } if (route == 0) { error << _("Session: cannot create track/bus from template description") << endmsg; |