From 44fd104ada0fbd8b76d34150e941d85d6de6f81b Mon Sep 17 00:00:00 2001 From: Sampo Savolainen Date: Wed, 16 Jul 2008 19:49:19 +0000 Subject: Fixes to get legacy 2.x sends working. git-svn-id: svn://localhost/ardour2/branches/3.0@3624 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/io_processor.cc | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'libs/ardour/io_processor.cc') diff --git a/libs/ardour/io_processor.cc b/libs/ardour/io_processor.cc index 9802c83330..08530b924c 100644 --- a/libs/ardour/io_processor.cc +++ b/libs/ardour/io_processor.cc @@ -73,26 +73,40 @@ int IOProcessor::set_state (const XMLNode& node) { const XMLProperty *prop; + const XMLNode *io_node = 0; Processor::set_state(node); XMLNodeList nlist = node.children(); XMLNodeIterator niter; - bool have_io = false; for (niter = nlist.begin(); niter != nlist.end(); ++niter) { if ((*niter)->name() == IO::state_node_name) { - have_io = true; - _io->set_state(**niter); - - // legacy sessions: use IO name - if ((prop = node.property ("name")) == 0) { - set_name(_io->name()); + io_node = (*niter); + break; + } else if ((*niter)->name() == "Redirect") { + XMLNodeList rlist = (*niter)->children(); + XMLNodeIterator riter; + + for (riter = rlist.begin(); riter != rlist.end(); ++riter) { + if ( (*riter)->name() == IO::state_node_name) { + warning << _("Found legacy IO in a redirect") << endmsg; + io_node = (*riter); + break; + } } } } - if (!have_io) { + if (io_node) { + _io->set_state(*io_node); + + // legacy sessions: use IO name + if ((prop = node.property ("name")) == 0) { + set_name(_io->name()); + } + + } else { error << _("XML node describing a redirect is missing an IO node") << endmsg; return -1; } -- cgit v1.2.3