X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fprocessor.cc;h=60a23376b6c4c5d15bcd2002dc74899aa349f836;hb=cf52d6e4b40111eb04b244ec054055a4ec15dbe0;hp=79384c701e833529d8a094c16f6ec13a57565653;hpb=d46acb86eaa3a94fb2dc673964271ecfe0f004dd;p=ardour.git diff --git a/libs/ardour/processor.cc b/libs/ardour/processor.cc index 79384c701e..60a23376b6 100644 --- a/libs/ardour/processor.cc +++ b/libs/ardour/processor.cc @@ -23,20 +23,12 @@ #include - -#include "pbd/failed_constructor.h" -#include "pbd/enumwriter.h" #include "pbd/xml++.h" +#include "ardour/automatable.h" +#include "ardour/chan_count.h" #include "ardour/processor.h" -#include "ardour/plugin.h" -#include "ardour/port.h" -#include "ardour/route.h" -#include "ardour/ladspa_plugin.h" -#include "ardour/buffer_set.h" -#include "ardour/send.h" -#include "ardour/port_insert.h" -#include "ardour/plugin_insert.h" +#include "ardour/types.h" #ifdef WINDOWS_VST_SUPPORT #include "ardour/windows_vst_plugin.h" @@ -50,12 +42,14 @@ #include "ardour/session.h" #include "ardour/types.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace std; using namespace ARDOUR; using namespace PBD; +namespace ARDOUR { class Session; } + // Always saved as Processor, but may be IOProcessor or Send in legacy sessions const string Processor::state_node_name = "Processor"; @@ -69,6 +63,9 @@ Processor::Processor(Session& session, const string& name) , _display_to_user (true) , _pre_fader (false) , _ui_pointer (0) + , _window_proxy (0) + , _pinmgr_proxy (0) + , _owner (0) { } @@ -84,6 +81,9 @@ Processor::Processor (const Processor& other) , _display_to_user (true) , _pre_fader (false) , _ui_pointer (0) + , _window_proxy (0) + , _pinmgr_proxy (0) + , _owner (0) { } @@ -126,6 +126,8 @@ Processor::state (bool full_state) XMLNode& automation = Automatable::get_automation_xml_state(); if (!automation.children().empty() || !automation.properties().empty()) { node->add_child_nocopy (automation); + } else { + delete &automation; } } @@ -141,18 +143,20 @@ 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 ()); } - + set_id (**i); - if ((prop = (*i)->property ("active")) != 0) { + //note: in A2, active state was stored in the Redirect node, not the child IO node + /* + * if ((prop = (*i)->property ("active")) != 0) { bool const a = string_is_affirmative (prop->value ()); if (_active != a) { if (a) { @@ -161,7 +165,8 @@ Processor::set_state_2X (const XMLNode & node, int /*version*/) deactivate (); } } - } + }*/ + } } @@ -175,8 +180,8 @@ Processor::set_state (const XMLNode& node, int version) return set_state_2X (node, version); } - const XMLProperty *prop; - const XMLProperty *legacy_active = 0; + XMLProperty const * prop; + XMLProperty const * legacy_active = 0; bool leave_name_alone = (node.property ("ignore-name") != 0); if (!leave_name_alone) { @@ -187,7 +192,7 @@ Processor::set_state (const XMLNode& node, int version) */ Processor::set_name (prop->value()); } - + set_id (node); } @@ -200,7 +205,7 @@ Processor::set_state (const XMLNode& node, int version) if ((*niter)->name() == X_("Automation")) { - XMLProperty *prop; + XMLProperty const * prop; if ((prop = (*niter)->property ("path")) != 0) { old_set_automation_state (*(*niter)); @@ -224,7 +229,7 @@ Processor::set_state (const XMLNode& node, int version) } } - bool const a = string_is_affirmative (prop->value ()); + bool const a = string_is_affirmative (prop->value ()) && !_session.get_bypass_all_loaded_plugins(); if (_active != a) { if (a) { activate (); @@ -275,3 +280,15 @@ Processor::set_ui (void* p) { _ui_pointer = p; } + +void +Processor::set_owner (SessionObject* o) +{ + _owner = o; +} + +SessionObject* +Processor::owner() const +{ + return _owner; +}