diff options
Diffstat (limited to 'libs/ardour/session_state.cc')
-rw-r--r-- | libs/ardour/session_state.cc | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 7d6f44b786..532d010680 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -974,7 +974,27 @@ int Session::load_options (const XMLNode& node) { LocaleGuard lg (X_("POSIX")); - config.set_variables (node); + + /* Copy the node */ + XMLNode node_copy = node; + + /* XXX: evil hack: fix up sessions from before the layering alterations + (during A3 beta) + */ + + XMLNodeList children = node_copy.children (); + for (XMLNodeIterator i = children.begin(); i != children.end(); ++i) { + XMLProperty* p = (*i)->property (X_("name")); + if (p && p->name() == X_("name") && p->value() == X_("layer-model") ) { + p = (*i)->property (X_("value")); + if (p && p->value() == X_("MoveAddHigher")) { + (*i)->add_property (X_("value"), X_("AddOrBoundsChangeHigher")); + } + } + } + + config.set_variables (node_copy); + return 0; } |