diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-02-28 11:57:18 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-05-31 15:30:38 -0400 |
commit | 405f9fc712836937bf44dba48c64c1741bc4101c (patch) | |
tree | 745d26434acb43768b403d5e9cc99b6d24cfc435 /libs/ardour/ardour/gain_control.h | |
parent | 3daad049362bed97935d09c1bfebe085ce482f6c (diff) |
change VCA model to facilitate Harrison *and* SSL designs
Diffstat (limited to 'libs/ardour/ardour/gain_control.h')
-rw-r--r-- | libs/ardour/ardour/gain_control.h | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libs/ardour/ardour/gain_control.h b/libs/ardour/ardour/gain_control.h index fa43b5d39f..9a79a8046f 100644 --- a/libs/ardour/ardour/gain_control.h +++ b/libs/ardour/ardour/gain_control.h @@ -20,7 +20,10 @@ #define __ardour_gain_control_h__ #include <string> +#include <list> + #include <boost/shared_ptr.hpp> +#include <glibmm/threads.h> #include "pbd/controllable.h" @@ -51,12 +54,18 @@ class LIBARDOUR_API GainControl : public AutomationControl { double lower_db; double range_db; - boost::shared_ptr<GainControl> master() const { return _master; } - void set_master (boost::shared_ptr<GainControl>); + void add_master (boost::shared_ptr<GainControl>); + void remove_master (boost::shared_ptr<GainControl>); + void clear_masters (); private: void _set_value (double val, PBD::Controllable::GroupControlDisposition group_override); - boost::shared_ptr<GainControl> _master; + gain_t get_master_gain () const; + + mutable Glib::Threads::Mutex master_lock; + + typedef std::list<boost::shared_ptr<GainControl> > Masters; + Masters _masters; }; } /* namespace */ |