X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fprocessor.cc;h=555dff5092e2a4ec015e47b7105939336bbcc4a5;hb=df2fd9491904aba95e08e1e26552be609530ee83;hp=c8f7a136bb28473b69f261ace5f2923a202be4a7;hpb=bb9cc45cd22af67ac275a5e73accbe14fee664d8;p=ardour.git diff --git a/libs/ardour/processor.cc b/libs/ardour/processor.cc index c8f7a136bb..555dff5092 100644 --- a/libs/ardour/processor.cc +++ b/libs/ardour/processor.cc @@ -23,7 +23,6 @@ #include -#include #include "pbd/failed_constructor.h" #include "pbd/enumwriter.h" @@ -57,35 +56,21 @@ using namespace std; using namespace ARDOUR; using namespace PBD; -sigc::signal Processor::ProcessorCreated; - // Always saved as Processor, but may be IOProcessor or Send in legacy sessions const string Processor::state_node_name = "Processor"; Processor::Processor(Session& session, const string& name) : SessionObject(session, name) - , AutomatableControls(session) + , Automatable (session) , _pending_active(false) , _active(false) , _next_ab_is_active(false) , _configured(false) - , _gui(0) + , _display_to_user (true) + , _pre_fader (false) { } -Processor::Processor (Session& session, const XMLNode& node) - : SessionObject(session, "renameMe") - , AutomatableControls(session) - , _pending_active(false) - , _active(false) - , _next_ab_is_active(false) - , _configured(false) - , _gui(0) -{ - set_state (node); - _pending_active = _active; -} - XMLNode& Processor::get_state (void) { @@ -110,7 +95,6 @@ XMLNode& Processor::state (bool full_state) { XMLNode* node = new XMLNode (state_node_name); - stringstream sstr; char buf[64]; id().print (buf, sizeof (buf)); @@ -128,12 +112,14 @@ Processor::state (bool full_state) || !automation.properties().empty() || !_visible_controls.empty()) { + stringstream sstr; for (set::iterator x = _visible_controls.begin(); x != _visible_controls.end(); ++x) { + if (x != _visible_controls.begin()) { sstr << ' '; } - sstr << *x; + sstr << (*x).id(); } automation.add_property ("visible", sstr.str()); @@ -145,8 +131,47 @@ 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) { + bool const a = string_is_affirmative (prop->value ()); + if (_active != a) { + if (a) { + activate (); + } else { + deactivate (); + } + } + } + } + } + + 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; @@ -202,8 +227,6 @@ Processor::set_state (const XMLNode& node) } if ((prop = node.property ("active")) == 0) { - warning << _("XML node describing a processor is missing the `active' field," - "trying legacy active flag from child node") << endmsg; if (legacy_active) { prop = legacy_active; } else { @@ -212,9 +235,13 @@ Processor::set_state (const XMLNode& node) } } - if (_active != string_is_affirmative (prop->value())) { - _active = !_active; - ActiveChanged (); /* EMIT_SIGNAL */ + bool const a = string_is_affirmative (prop->value ()); + if (_active != a) { + if (a) { + activate (); + } else { + deactivate (); + } } return 0; @@ -232,7 +259,19 @@ Processor::configure_io (ChanCount in, ChanCount out) _configured_output = out; _configured = true; - ConfigurationChanged.emit (in, out); + ConfigurationChanged (in, out); /* EMIT SIGNAL */ return true; } + +void +Processor::set_display_to_user (bool yn) +{ + _display_to_user = yn; +} + +void +Processor::set_pre_fader (bool p) +{ + _pre_fader = p; +}