summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-09-01 13:26:31 +0200
committerRobin Gareus <robin@gareus.org>2015-09-01 13:26:31 +0200
commit531e71b4859787805024151dc8659118b0a9e868 (patch)
tree3cd656f8fc3184fe417cdd427f26ba2ebed73b5a
parenta1b387ad9aab140822e953a460143226876abf3c (diff)
Prepare option to disable Plugins completely
old behavior to only bypassed plugins is being renamed.
-rw-r--r--libs/ardour/ardour/session.h7
-rw-r--r--libs/ardour/processor.cc2
-rw-r--r--libs/ardour/route.cc22
-rw-r--r--libs/ardour/session.cc1
4 files changed, 26 insertions, 6 deletions
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index a0017717e2..f5ff34e72d 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -760,6 +760,12 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
static bool get_disable_all_loaded_plugins() {
return _disable_all_loaded_plugins;
}
+ static void set_bypass_all_loaded_plugins (bool yn) {
+ _bypass_all_loaded_plugins = yn;
+ }
+ static bool get_bypass_all_loaded_plugins() {
+ return _bypass_all_loaded_plugins;
+ }
uint32_t next_send_id();
uint32_t next_aux_send_id();
@@ -1733,6 +1739,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
void set_history_depth (uint32_t depth);
static bool _disable_all_loaded_plugins;
+ static bool _bypass_all_loaded_plugins;
mutable bool have_looped; ///< Used in ::audible_frame(*)
diff --git a/libs/ardour/processor.cc b/libs/ardour/processor.cc
index caa240ce22..aca9ccaab1 100644
--- a/libs/ardour/processor.cc
+++ b/libs/ardour/processor.cc
@@ -225,7 +225,7 @@ Processor::set_state (const XMLNode& node, int version)
}
}
- bool const a = string_is_affirmative (prop->value ()) && !_session.get_disable_all_loaded_plugins();
+ bool const a = string_is_affirmative (prop->value ()) && !_session.get_bypass_all_loaded_plugins();
if (_active != a) {
if (a) {
activate ();
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 55e1be2662..f128fa3cf5 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -1239,7 +1239,7 @@ Route::add_processor (boost::shared_ptr<Processor> processor, boost::shared_ptr<
}
- if (activation_allowed && (!_session.get_disable_all_loaded_plugins () || !processor->display_to_user ())) {
+ if (activation_allowed && (!_session.get_bypass_all_loaded_plugins () || !processor->display_to_user ())) {
processor->activate ();
}
@@ -1292,7 +1292,11 @@ Route::add_processor_from_xml_2X (const XMLNode& node, int version)
prop->value() == "lxvst" ||
prop->value() == "audiounit") {
- processor.reset (new PluginInsert (_session));
+ if (_session.get_disable_all_loaded_plugins ()) {
+ processor.reset (new UnknownProcessor (_session, node));
+ } else {
+ processor.reset (new PluginInsert (_session));
+ }
} else {
@@ -1319,7 +1323,7 @@ Route::add_processor_from_xml_2X (const XMLNode& node, int version)
//A2 uses the "active" flag in the toplevel redirect node, not in the child plugin/IO
if (i != children.end()) {
if ((prop = (*i)->property (X_("active"))) != 0) {
- if ( string_is_affirmative (prop->value()) && (!_session.get_disable_all_loaded_plugins () || !processor->display_to_user () ) )
+ if ( string_is_affirmative (prop->value()) && (!_session.get_bypass_all_loaded_plugins () || !processor->display_to_user () ) )
processor->activate();
else
processor->deactivate();
@@ -2866,8 +2870,11 @@ Route::set_processor_state (const XMLNode& node)
prop->value() == "lxvst" ||
prop->value() == "audiounit") {
- processor.reset (new PluginInsert(_session));
-
+ if (_session.get_disable_all_loaded_plugins ()) {
+ processor.reset (new UnknownProcessor (_session, **niter));
+ } else {
+ processor.reset (new PluginInsert (_session));
+ }
} else if (prop->value() == "port") {
processor.reset (new PortInsert (_session, _pannable, _mute_master));
@@ -4238,6 +4245,11 @@ Route::unknown_processors () const
{
list<string> p;
+ if (_session.get_disable_all_loaded_plugins ()) {
+ // Do not list "missing plugins" if they are explicitly disabled
+ return p;
+ }
+
Glib::Threads::RWLock::ReaderLock lm (_processor_lock);
for (ProcessorList::const_iterator i = _processors.begin(); i != _processors.end(); ++i) {
if (boost::dynamic_pointer_cast<UnknownProcessor const> (*i)) {
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 85a2c67f43..fae67b164b 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -118,6 +118,7 @@ using namespace ARDOUR;
using namespace PBD;
bool Session::_disable_all_loaded_plugins = false;
+bool Session::_bypass_all_loaded_plugins = false;
PBD::Signal1<int,uint32_t> Session::AudioEngineSetupRequired;
PBD::Signal1<void,std::string> Session::Dialog;