summaryrefslogtreecommitdiff
path: root/libs/ardour/io_processor.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-11-21 17:20:57 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-11-21 17:20:57 +0000
commit9fa51e19b65153db29ff5865b8e22eb58b99c82b (patch)
treecaef0898f94fe59bcded60bd397c349056f1c113 /libs/ardour/io_processor.cc
parent78503905d774ced7354ef95bc638829d315f1311 (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.cc35
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 */
}
}