summaryrefslogtreecommitdiff
path: root/libs/ardour/processor.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-10-15 00:57:55 +0000
committerCarl Hetherington <carl@carlh.net>2009-10-15 00:57:55 +0000
commit79f91c7a205d981d2b8cc15e32a6da02d8423065 (patch)
treef27dd8319522be8321720ef3560c2207dd56b158 /libs/ardour/processor.cc
parent09efd82c6aea973e3eb9497ef2b09256bf5ddde4 (diff)
Part 1 of loading 2.X sessions; some things work, some things don't, hacks a-plenty.
LOADING 2.X SESSIONS WITH THIS COMMIT IN PLACE WILL (PROBABLY) CORRUPT THE .ardour FILE, MAKING THE SESSION UNLOADABLE ON 2.X AND LOSING INFORMATION. So don't do that unless you make a backup of the session file first. git-svn-id: svn://localhost/ardour2/branches/3.0@5786 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/processor.cc')
-rw-r--r--libs/ardour/processor.cc37
1 files changed, 36 insertions, 1 deletions
diff --git a/libs/ardour/processor.cc b/libs/ardour/processor.cc
index c8f7a136bb..e1db982fe1 100644
--- a/libs/ardour/processor.cc
+++ b/libs/ardour/processor.cc
@@ -145,8 +145,43 @@ Processor::state (bool full_state)
}
int
-Processor::set_state (const XMLNode& node)
+Processor::set_state_2X (const XMLNode & node, int version)
{
+ XMLProperty const * prop;
+
+ XMLNodeList children = node.children ();
+
+ for (XMLNodeIterator i = children.begin(); i != children.end(); ++i) {
+
+ if ((*i)->name() == X_("IO")) {
+
+ if ((prop = (*i)->property ("name")) != 0) {
+ set_name (prop->value ());
+ }
+
+ if ((prop = (*i)->property ("id")) != 0) {
+ _id = prop->value ();
+ }
+
+ if ((prop = (*i)->property ("active")) != 0) {
+ if (_active != string_is_affirmative (prop->value())) {
+ _active = !_active;
+ ActiveChanged (); /* EMIT_SIGNAL */
+ }
+ }
+ }
+ }
+
+ return 0;
+}
+
+int
+Processor::set_state (const XMLNode& node, int version)
+{
+ if (version < 3000) {
+ return set_state_2X (node, version);
+ }
+
const XMLProperty *prop;
const XMLProperty *legacy_active = 0;