diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-11-21 17:20:57 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-11-21 17:20:57 +0000 |
commit | 9fa51e19b65153db29ff5865b8e22eb58b99c82b (patch) | |
tree | caef0898f94fe59bcded60bd397c349056f1c113 /libs/ardour/io_processor.cc | |
parent | 78503905d774ced7354ef95bc638829d315f1311 (diff) |
some provisional support for "real" solo-isolate behaviour, subject to more discussions with mr. oofus and others
git-svn-id: svn://localhost/ardour2/branches/3.0@6145 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/io_processor.cc')
-rw-r--r-- | libs/ardour/io_processor.cc | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/libs/ardour/io_processor.cc b/libs/ardour/io_processor.cc index 21a2b10313..6bdac9fe19 100644 --- a/libs/ardour/io_processor.cc +++ b/libs/ardour/io_processor.cc @@ -133,7 +133,6 @@ IOProcessor::state (bool full_state) node.add_property ("own-output", "yes"); if (_output) { XMLNode& o (_output->state (full_state)); - // o.name() = X_("output"); node.add_child_nocopy (o); } } else { @@ -166,12 +165,21 @@ IOProcessor::set_state (const XMLNode& node, int version) XMLNodeList nlist = node.children(); XMLNodeIterator niter; + const string instr = enum_2_string (IO::Input); + const string outstr = enum_2_string (IO::Output); if (_own_input) { for (niter = nlist.begin(); niter != nlist.end(); ++niter) { - if ((*niter)->name() == "input") { - io_node = (*niter); - break; + const XMLProperty* prop; + if ((prop = (*niter)->property ("name")) != 0) { + if (prop->value() == _name) { + if ((prop = (*niter)->property ("direction")) != 0) { + if (prop->value() == instr) { + io_node = (*niter); + break; + } + } + } } } @@ -184,16 +192,25 @@ IOProcessor::set_state (const XMLNode& node, int version) } } else { - /* no input */ + /* no input, which is OK */ } } if (_own_output) { for (niter = nlist.begin(); niter != nlist.end(); ++niter) { - if ((*niter)->name() == "output") { - io_node = (*niter); - break; + if ((*niter)->name() == "IO") { + const XMLProperty* prop; + if ((prop = (*niter)->property ("name")) != 0) { + if (prop->value() == _name) { + if ((prop = (*niter)->property ("direction")) != 0) { + if (prop->value() == outstr) { + io_node = (*niter); + break; + } + } + } + } } } @@ -205,7 +222,7 @@ IOProcessor::set_state (const XMLNode& node, int version) set_name (_output->name()); } } else { - /* no output */ + /* no output, which is OK */ } } |