redesign control slave/master system, move code from GainControl to AutomationControl
[ardour.git] / libs / ardour / ardour / gain_control.h
index 8dea7a7750d9514f851f18a96210fa17da5d0c9d..4ec538e698192577371e7c27739f23cf188501ef 100644 (file)
 #define __ardour_gain_control_h__
 
 #include <string>
-#include <set>
 
 #include <boost/shared_ptr.hpp>
-#include <glibmm/threads.h>
 
 #include "pbd/controllable.h"
 
@@ -53,31 +51,17 @@ class LIBARDOUR_API GainControl : public AutomationControl {
        double lower_db;
        double range_db;
 
-       gain_t get_master_gain () const;
-       void add_master (boost::shared_ptr<VCA>);
-       void remove_master (boost::shared_ptr<VCA>);
-       void clear_masters ();
-       bool slaved_to (boost::shared_ptr<VCA>) const;
-       std::vector<uint32_t> masters () const;
-
-       PBD::Signal0<void> VCAStatusChange;
-
        int set_state (XMLNode const&, int);
        XMLNode& get_state();
 
   private:
-       void _set_value (double val, PBD::Controllable::GroupControlDisposition group_override);
+       std::string masters_string;
+       PBD::ScopedConnection vca_loaded_connection;
 
-       mutable Glib::Threads::Mutex master_lock;
+       void vcas_loaded();
+       void recompute_masters_ratios (double val);
 
-       typedef std::set<boost::shared_ptr<GainControl> > Masters;
-       Masters _masters;
-       PBD::ScopedConnectionList masters_connections;
-       std::set<uint32_t> _masters_numbers;
-       std::string _masters_state_string ();
-
-       gain_t get_master_gain_locked () const;
-       void master_going_away (boost::weak_ptr<VCA>);
+       void _set_value (double val, PBD::Controllable::GroupControlDisposition group_override);
 };
 
 } /* namespace */