diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-02-29 21:26:45 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-05-31 15:30:38 -0400 |
commit | acaaa98bd0a21494ae912dbbc37fbbc33cbbf61d (patch) | |
tree | 905a1f5929cf6427087c3f9ae7d3d3cff202d83e /libs | |
parent | 984f4487e0c66e1ae4d3c732e48e00d4470cad8b (diff) |
start shaping up VCA assign process
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/gain_control.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/route.h | 7 | ||||
-rw-r--r-- | libs/ardour/gain_control.cc | 7 | ||||
-rw-r--r-- | libs/ardour/route.cc | 13 |
4 files changed, 25 insertions, 3 deletions
diff --git a/libs/ardour/ardour/gain_control.h b/libs/ardour/ardour/gain_control.h index c6421a6922..7845679220 100644 --- a/libs/ardour/ardour/gain_control.h +++ b/libs/ardour/ardour/gain_control.h @@ -57,6 +57,7 @@ class LIBARDOUR_API GainControl : public AutomationControl { void add_master (boost::shared_ptr<GainControl>); void remove_master (boost::shared_ptr<GainControl>); void clear_masters (); + bool slaved_to (boost::shared_ptr<GainControl>) const; private: void _set_value (double val, PBD::Controllable::GroupControlDisposition group_override); diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index 3ade22319d..ed32769058 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -72,6 +72,7 @@ class MonitorProcessor; class Pannable; class CapturingProcessor; class InternalSend; +class VCA; class LIBARDOUR_API Route : public SessionObject, public Automatable, public RouteGroupMember, public GraphNode, public boost::enable_shared_from_this<Route> { @@ -707,8 +708,10 @@ public: void monitor_run (framepos_t start_frame, framepos_t end_frame, pframes_t nframes, int declick); -protected: - friend class Session; + bool slaved_to (boost::shared_ptr<VCA>) const; + + protected: + friend class Session; void catch_up_on_solo_mute_override (); void mod_solo_by_others_upstream (int32_t); diff --git a/libs/ardour/gain_control.cc b/libs/ardour/gain_control.cc index eeb49e7de0..5ba7179231 100644 --- a/libs/ardour/gain_control.cc +++ b/libs/ardour/gain_control.cc @@ -176,3 +176,10 @@ GainControl::clear_masters () Changed(); /* EMIT SIGNAL */ } } + +bool +GainControl::slaved_to (boost::shared_ptr<GainControl> gc) const +{ + Glib::Threads::Mutex::Lock lm (master_lock); + return find (_masters.begin(), _masters.end(), gc) != _masters.end(); +} diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 49528e30e3..8b1f47ec4e 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -69,6 +69,7 @@ #include "ardour/session.h" #include "ardour/unknown_processor.h" #include "ardour/utils.h" +#include "ardour/vca.h" #include "i18n.h" @@ -3345,7 +3346,7 @@ Route::set_processor_state (const XMLNode& node) for (niter = nlist.begin(); niter != nlist.end(); ++niter) { - XMLProperty const * prop = (*niter)->property ("type"); + XMLProperty* prop = (*niter)->property ("type"); if (prop->value() == "amp") { _amp->set_state (**niter, Stateful::current_state_version); @@ -5883,3 +5884,13 @@ Route::master_send_enable_controllable () const return boost::shared_ptr<AutomationControl>(); #endif } + +bool +Route::slaved_to (boost::shared_ptr<VCA> vca) const +{ + if (!vca || !_gain_control) { + return false; + } + + return _gain_control->slaved_to (vca->control()); +} |