summaryrefslogtreecommitdiff
path: root/libs/ardour/session_state.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/session_state.cc')
-rw-r--r--libs/ardour/session_state.cc32
1 files changed, 20 insertions, 12 deletions
diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc
index e5e75d6550..40cbe53389 100644
--- a/libs/ardour/session_state.cc
+++ b/libs/ardour/session_state.cc
@@ -1419,35 +1419,43 @@ Session::load_routes (const XMLNode& node, int version)
boost::shared_ptr<Route>
Session::XMLRouteFactory (const XMLNode& node, int version)
{
+ boost::shared_ptr<Route> ret;
+
if (node.name() != "Route") {
- return boost::shared_ptr<Route> ((Route*) 0);
+ return ret;
}
bool has_diskstream = (node.property ("diskstream") != 0 || node.property ("diskstream-id") != 0);
DataType type = DataType::AUDIO;
const XMLProperty* prop = node.property("default-type");
- boost::shared_ptr<Route> ret;
if (prop) {
- type = DataType(prop->value());
+ type = DataType (prop->value());
}
- assert(type != DataType::NIL);
+ assert (type != DataType::NIL);
if (has_diskstream) {
if (type == DataType::AUDIO) {
- AudioTrack* at = new AudioTrack (*this, node, version);
- boost_debug_shared_ptr_mark_interesting (at, "Track");
- ret.reset (at);
-
+ AudioTrack* at = new AudioTrack (*this, X_("toBeResetFroXML"));
+ if (at->set_state (node, version) == 0) {
+ boost_debug_shared_ptr_mark_interesting (at, "Track");
+ ret.reset (at);
+ }
+
} else {
- ret.reset (new MidiTrack (*this, node, version));
+ MidiTrack* mt = new MidiTrack (*this, X_("toBeResetFroXML"));
+ if (mt->set_state (node, version) == 0) {
+ ret.reset (mt);
+ }
}
} else {
- Route* rt = new Route (*this, node);
- boost_debug_shared_ptr_mark_interesting (rt, "Route");
- ret.reset (rt);
+ Route* rt = new Route (*this, X_("toBeResetFroXML"));
+ if (rt->set_state (node, version) == 0) {
+ boost_debug_shared_ptr_mark_interesting (rt, "Route");
+ ret.reset (rt);
+ }
}
return ret;