X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fprocessor.cc;h=caa240ce228ecc0125e786b2146b4e3e3773a442;hb=c9023ae73d6d70fead3e827811b384e2b171e4d6;hp=f7afeb99a727d00ad8e189fe36b62cef2a42c671;hpb=9d57b87999e11df42b42dc64f78e384ad0cf8ea4;p=ardour.git diff --git a/libs/ardour/processor.cc b/libs/ardour/processor.cc index f7afeb99a7..caa240ce22 100644 --- a/libs/ardour/processor.cc +++ b/libs/ardour/processor.cc @@ -23,26 +23,18 @@ #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" - -#ifdef VST_SUPPORT -#include "ardour/vst_plugin.h" +#include "ardour/types.h" + +#ifdef WINDOWS_VST_SUPPORT +#include "ardour/windows_vst_plugin.h" #endif -#ifdef HAVE_AUDIOUNITS +#ifdef AUDIOUNIT_SUPPORT #include "ardour/audio_unit.h" #endif @@ -56,6 +48,8 @@ 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,8 @@ Processor::Processor(Session& session, const string& name) , _display_to_user (true) , _pre_fader (false) , _ui_pointer (0) + , _window_proxy (0) + , _owner (0) { } @@ -76,6 +72,7 @@ Processor::Processor (const Processor& other) : Evoral::ControlSet (other) , SessionObject (other.session(), other.name()) , Automatable (other.session()) + , Latent (other) , _pending_active(other._pending_active) , _active(other._active) , _next_ab_is_active(false) @@ -83,6 +80,8 @@ Processor::Processor (const Processor& other) , _display_to_user (true) , _pre_fader (false) , _ui_pointer (0) + , _window_proxy (0) + , _owner (0) { } @@ -140,20 +139,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 ("id")) != 0) { - _id = prop->value (); - } - - 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) { @@ -162,7 +161,8 @@ Processor::set_state_2X (const XMLNode & node, int /*version*/) deactivate (); } } - } + }*/ + } } @@ -178,18 +178,18 @@ Processor::set_state (const XMLNode& node, int version) const XMLProperty *prop; const XMLProperty *legacy_active = 0; - - // may not exist for legacy 3.0 sessions - if ((prop = node.property ("name")) != 0) { - /* don't let derived classes have a crack at set_name, - as some (like Send) will screw with the one we suggest. - */ - Processor::set_name (prop->value()); - } - - // may not exist for legacy 3.0 sessions - if ((prop = node.property ("id")) != 0) { - _id = prop->value(); + bool leave_name_alone = (node.property ("ignore-name") != 0); + + if (!leave_name_alone) { + // may not exist for legacy 3.0 sessions + if ((prop = node.property ("name")) != 0) { + /* don't let derived classes have a crack at set_name, + as some (like Send) will screw with the one we suggest. + */ + Processor::set_name (prop->value()); + } + + set_id (node); } XMLNodeList nlist = node.children(); @@ -225,7 +225,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_disable_all_loaded_plugins(); if (_active != a) { if (a) { activate (); @@ -276,3 +276,21 @@ Processor::set_ui (void* p) { _ui_pointer = p; } + +void +Processor::set_window_proxy (ProcessorWindowProxy* wp) +{ + _window_proxy = wp; +} + +void +Processor::set_owner (SessionObject* o) +{ + _owner = o; +} + +SessionObject* +Processor::owner() const +{ + return _owner; +}