summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/gain_control.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-02-28 11:57:18 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2016-05-31 15:30:38 -0400
commit405f9fc712836937bf44dba48c64c1741bc4101c (patch)
tree745d26434acb43768b403d5e9cc99b6d24cfc435 /libs/ardour/ardour/gain_control.h
parent3daad049362bed97935d09c1bfebe085ce482f6c (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.h15
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 */