enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h
[ardour.git] / libs / ardour / ardour / monitor_processor.h
index 39aaeca67faf82d5a1600f832b3c85048e2711ec..d369cb9c282002b8330d02330260dea509bce53b 100644 (file)
@@ -46,19 +46,19 @@ public:
        MPControl (T initial, const std::string& name, PBD::Controllable::Flag flag,
                   float lower = 0.0f, float upper = 1.0f)
                : PBD::Controllable (name, flag)
-               , _normal (initial)
                , _value (initial)
                , _lower (lower)
                , _upper (upper)
+               , _normal (initial)
        {}
 
        /* Controllable API */
 
-       void set_value (double v) {
+       void set_value (double v, PBD::Controllable::GroupControlDisposition gcd) {
                T newval = (T) v;
                if (newval != _value) {
                        _value = std::max (_lower, std::min (_upper, newval));
-                       Changed(); /* EMIT SIGNAL */
+                       Changed (true, gcd); /* EMIT SIGNAL */
                }
        }
 
@@ -84,7 +84,7 @@ public:
        MPControl& operator=(const T& v) {
                if (v != _value) {
                        _value = std::max (_lower, std::min (_upper, v));
-                       Changed (); /* EMIT SIGNAL */
+                       Changed (true, PBD::Controllable::UseGroup); /* EMIT SIGNAL */
                }
                return *this;
        }
@@ -127,7 +127,7 @@ public:
 
        bool display_to_user() const;
 
-       void run (BufferSet& /*bufs*/, framepos_t /*start_frame*/, framepos_t /*end_frame*/, pframes_t /*nframes*/, bool /*result_required*/);
+       void run (BufferSet& /*bufs*/, framepos_t /*start_frame*/, framepos_t /*end_frame*/, double /*speed*/, pframes_t /*nframes*/, bool /*result_required*/);
 
        XMLNode& state (bool full);
        int set_state (const XMLNode&, int /* version */);
@@ -154,6 +154,8 @@ public:
        bool dim_all () const;
        bool mono () const;
 
+       bool monitor_active () const { return _monitor_active; }
+
        PBD::Signal0<void> Changed;
 
        boost::shared_ptr<PBD::Controllable> channel_cut_control (uint32_t) const;
@@ -198,6 +200,8 @@ private:
        std::vector<ChannelRecord*> _channels;
 
        uint32_t             solo_cnt;
+       bool                 _monitor_active;
+
 
        /* pointers - created first, but managed by boost::shared_ptr<> */
 
@@ -224,6 +228,7 @@ private:
        MPControl<volatile gain_t>& _solo_boost_level;
 
        void allocate_channels (uint32_t);
+       void update_monitor_state ();
 };
 
 } /* namespace */