GainMeter(Base) now has an explicit gain control given to it
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 25 Jan 2016 16:47:44 +0000 (11:47 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 25 Jan 2016 16:47:44 +0000 (11:47 -0500)
gtk2_ardour/gain_meter.cc
gtk2_ardour/gain_meter.h
gtk2_ardour/mixer_strip.cc
gtk2_ardour/return_ui.cc
gtk2_ardour/route_time_axis.cc
gtk2_ardour/send_ui.cc
gtk2_ardour/sfdb_ui.cc

index 12b2955d543d964a337231d2320269568c97c30c..2abd9d3642306a66c378cbce9073f1d0599b9dbc 100644 (file)
@@ -184,7 +184,8 @@ GainMeterBase::~GainMeterBase ()
 void
 GainMeterBase::set_controls (boost::shared_ptr<Route> r,
                             boost::shared_ptr<PeakMeter> pm,
-                            boost::shared_ptr<Amp> amp)
+                             boost::shared_ptr<Amp> amp,
+                             boost::shared_ptr<GainControl> control)
 {
        connections.clear ();
        model_connections.drop_connections ();
@@ -201,9 +202,12 @@ GainMeterBase::set_controls (boost::shared_ptr<Route> r,
        _meter = pm;
        _amp = amp;
        _route = r;
+       _control = control;
+
+       assert (_control);
 
        level_meter->set_meter (pm.get());
-       gain_slider->set_controllable (amp->gain_control());
+       gain_slider->set_controllable (_control);
 
        if (amp) {
                amp->ConfigurationChanged.connect (
@@ -235,15 +239,13 @@ GainMeterBase::set_controls (boost::shared_ptr<Route> r,
                connections.push_back (gain_automation_style_button.signal_button_press_event().connect (sigc::mem_fun(*this, &GainMeterBase::gain_automation_style_button_event), false));
                connections.push_back (gain_automation_state_button.signal_button_press_event().connect (sigc::mem_fun(*this, &GainMeterBase::gain_automation_state_button_event), false));
 
-               boost::shared_ptr<AutomationControl> gc = amp->gain_control();
-
-               gc->alist()->automation_state_changed.connect (model_connections, invalidator (*this), boost::bind (&GainMeter::gain_automation_state_changed, this), gui_context());
-               gc->alist()->automation_style_changed.connect (model_connections, invalidator (*this), boost::bind (&GainMeter::gain_automation_style_changed, this), gui_context());
+               _control->alist()->automation_state_changed.connect (model_connections, invalidator (*this), boost::bind (&GainMeter::gain_automation_state_changed, this), gui_context());
+               _control->alist()->automation_style_changed.connect (model_connections, invalidator (*this), boost::bind (&GainMeter::gain_automation_style_changed, this), gui_context());
 
                gain_automation_state_changed ();
        }
 
-       amp->gain_control()->Changed.connect (model_connections, invalidator (*this), boost::bind (&GainMeterBase::gain_changed, this), gui_context());
+       _control->Changed.connect (model_connections, invalidator (*this), boost::bind (&GainMeterBase::gain_changed, this), gui_context());
 
        gain_changed ();
        show_gain ();
@@ -470,10 +472,10 @@ GainMeterBase::gain_activated ()
        /* clamp to displayable values */
        if (_data_type == DataType::AUDIO) {
                f = min (f, 6.0f);
-               _amp->gain_control()->set_value (dB_to_coefficient(f), Controllable::NoGroup);
+               _control->set_value (dB_to_coefficient(f), Controllable::NoGroup);
        } else {
                f = min (fabs (f), 2.0f);
-               _amp->gain_control()->set_value (f, Controllable::NoGroup);
+               _control->set_value (f, Controllable::NoGroup);
        }
 
        if (gain_display.has_focus()) {
@@ -534,7 +536,7 @@ GainMeterBase::gain_adjusted ()
                if (_route && _route->amp() == _amp) {
                        _route->set_gain (value, Controllable::UseGroup);
                } else {
-                       _amp->gain_control()->set_value (value, Controllable::NoGroup);
+                       _control->set_value (value, Controllable::NoGroup);
                }
        }
 
@@ -548,10 +550,10 @@ GainMeterBase::effective_gain_display ()
 
        switch (_data_type) {
        case DataType::AUDIO:
-               value = gain_to_slider_position_with_max (_amp->gain(), Config->get_max_gain());
+               value = gain_to_slider_position_with_max (_control->get_value(), Config->get_max_gain());
                break;
        case DataType::MIDI:
-               value = _amp->gain ();
+               value = _control->get_value ();
                break;
        }
 
@@ -588,7 +590,7 @@ GainMeterBase::set_fader_name (const char * name)
 void
 GainMeterBase::update_gain_sensitive ()
 {
-       bool x = !(_amp->gain_control()->alist()->automation_state() & Play);
+       bool x = !(_control->alist()->automation_state() & Play);
        static_cast<Gtkmm2ext::SliderController*>(gain_slider)->set_sensitive (x);
 }
 
@@ -729,13 +731,13 @@ GainMeterBase::meter_point_clicked ()
 void
 GainMeterBase::amp_start_touch ()
 {
-       _amp->gain_control()->start_touch (_amp->session().transport_frame());
+       _control->start_touch (_amp->session().transport_frame());
 }
 
 void
 GainMeterBase::amp_stop_touch ()
 {
-       _amp->gain_control()->stop_touch (false, _amp->session().transport_frame());
+       _control->stop_touch (false, _amp->session().transport_frame());
 }
 
 gint
@@ -837,10 +839,10 @@ GainMeterBase::gain_automation_style_changed ()
 {
        switch (_width) {
        case Wide:
-               gain_automation_style_button.set_text (astyle_string(_amp->gain_control()->alist()->automation_style()));
+               gain_automation_style_button.set_text (astyle_string(_control->alist()->automation_style()));
                break;
        case Narrow:
-               gain_automation_style_button.set_text  (short_astyle_string(_amp->gain_control()->alist()->automation_style()));
+               gain_automation_style_button.set_text  (short_astyle_string(_control->alist()->automation_style()));
                break;
        }
 }
@@ -850,18 +852,16 @@ GainMeterBase::gain_automation_state_changed ()
 {
        ENSURE_GUI_THREAD (*this, &GainMeterBase::gain_automation_state_changed);
 
-       cerr << "GMB:autostate change to " << _amp->gain_control()->alist()->automation_state() << endl;
-
        switch (_width) {
        case Wide:
-               gain_automation_state_button.set_text (astate_string(_amp->gain_control()->alist()->automation_state()));
+               gain_automation_state_button.set_text (astate_string(_control->alist()->automation_state()));
                break;
        case Narrow:
-               gain_automation_state_button.set_text (short_astate_string(_amp->gain_control()->alist()->automation_state()));
+               gain_automation_state_button.set_text (short_astate_string(_control->alist()->automation_state()));
                break;
        }
 
-       const bool automation_watch_required = (_amp->gain_control()->alist()->automation_state() != ARDOUR::Off);
+       const bool automation_watch_required = (_control->alist()->automation_state() != ARDOUR::Off);
 
        if (gain_automation_state_button.get_active() != automation_watch_required) {
                ignore_toggle = true;
@@ -1010,7 +1010,8 @@ GainMeter::~GainMeter () { }
 void
 GainMeter::set_controls (boost::shared_ptr<Route> r,
                         boost::shared_ptr<PeakMeter> meter,
-                        boost::shared_ptr<Amp> amp)
+                         boost::shared_ptr<Amp> amp,
+                        boost::shared_ptr<GainControl> control)
 {
        if (meter_hbox.get_parent()) {
                hbox.remove (meter_hbox);
@@ -1020,7 +1021,7 @@ GainMeter::set_controls (boost::shared_ptr<Route> r,
 //             fader_vbox->remove (gain_automation_state_button);
 //     }
 
-       GainMeterBase::set_controls (r, meter, amp);
+       GainMeterBase::set_controls (r, meter, amp, control);
 
        if (_meter) {
                _meter->ConfigurationChanged.connect (
@@ -1113,7 +1114,7 @@ boost::shared_ptr<PBD::Controllable>
 GainMeterBase::get_controllable()
 {
        if (_amp) {
-               return _amp->gain_control();
+               return _control;
        } else {
                return boost::shared_ptr<PBD::Controllable>();
        }
index 0125c66b117f52a0f468e9a5c8a0d93a5f3d77e8..7cf3410241b28556a338ee730392af1b0f0b013c 100644 (file)
@@ -49,6 +49,7 @@
 
 namespace ARDOUR {
        class IO;
+       class GainControl;
        class Session;
        class Route;
        class RouteGroup;
@@ -71,7 +72,8 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr
 
        virtual void set_controls (boost::shared_ptr<ARDOUR::Route> route,
                                   boost::shared_ptr<ARDOUR::PeakMeter> meter,
-                                  boost::shared_ptr<ARDOUR::Amp> amp);
+                                  boost::shared_ptr<ARDOUR::Amp> amp,
+                                  boost::shared_ptr<ARDOUR::GainControl> control);
 
        void update_gain_sensitive ();
        void update_meters ();
@@ -104,6 +106,7 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr
        boost::shared_ptr<ARDOUR::Route> _route;
        boost::shared_ptr<ARDOUR::PeakMeter> _meter;
        boost::shared_ptr<ARDOUR::Amp> _amp;
+       boost::shared_ptr<ARDOUR::GainControl> _control;
        std::vector<sigc::connection> connections;
        PBD::ScopedConnectionList model_connections;
 
@@ -206,7 +209,8 @@ class GainMeter : public GainMeterBase, public Gtk::VBox
 
        virtual void set_controls (boost::shared_ptr<ARDOUR::Route> route,
                                   boost::shared_ptr<ARDOUR::PeakMeter> meter,
-                                  boost::shared_ptr<ARDOUR::Amp> amp);
+                                  boost::shared_ptr<ARDOUR::Amp> amp,
+                                  boost::shared_ptr<ARDOUR::GainControl> control);
 
        int get_gm_width ();
        void setup_meters (int len=0);
index 64b4494bac8e11f62b47a389b03e11f7bc12256c..553f44a10ded181014a2bd52ad33d8b4e2eef92e 100644 (file)
@@ -2038,7 +2038,7 @@ MixerStrip::show_send (boost::shared_ptr<Send> send)
        send->set_metering (true);
        _current_delivery->DropReferences.connect (send_gone_connection, invalidator (*this), boost::bind (&MixerStrip::revert_to_default_display, this), gui_context());
 
-       gain_meter().set_controls (_route, send->meter(), send->amp());
+       gain_meter().set_controls (_route, send->meter(), send->amp(), send->gain_control());
        gain_meter().setup_meters ();
 
        uint32_t const in = _current_delivery->pans_required();
@@ -2077,7 +2077,7 @@ MixerStrip::revert_to_default_display ()
 
        set_current_delivery (_route->main_outs ());
 
-       gain_meter().set_controls (_route, _route->shared_peak_meter(), _route->amp());
+       gain_meter().set_controls (_route, _route->shared_peak_meter(), _route->amp(), _route->gain_control());
        gain_meter().setup_meters ();
 
        panner_ui().set_panner (_route->main_outs()->panner_shell(), _route->main_outs()->panner());
index b6412bbe7ae06934f19c5a9ccc9e8c70f5631dc3..301ecdab312fb2b684f289efd9f6faab7689caf3 100644 (file)
@@ -38,7 +38,7 @@ ReturnUI::ReturnUI (Gtk::Window* parent, boost::shared_ptr<Return> r, Session* s
        :_return (r)
        , _gpm (session, 250)
 {
-       _gpm.set_controls (boost::shared_ptr<Route>(), r->meter(), r->amp());
+       _gpm.set_controls (boost::shared_ptr<Route>(), r->meter(), r->amp(), r->gain_control());
 
        _hbox.pack_start (_gpm, true, true);
        set_name (X_("ReturnUIFrame"));
index 33baf3a5116cfb59a193bf29ce1643b334d6bf6e..4db19bd7533d5ac1e1658a7dc36483e1aaf88e51 100644 (file)
@@ -139,7 +139,7 @@ RouteTimeAxisView::set_route (boost::shared_ptr<Route> rt)
        if (_route && _route->shared_peak_meter()->input_streams().n_total() == 1) {
                meter_width = 6;
        }
-       gm.set_controls (_route, _route->shared_peak_meter(), _route->amp());
+       gm.set_controls (_route, _route->shared_peak_meter(), _route->amp(), _route->gain_control());
        gm.get_level_meter().set_no_show_all();
        gm.get_level_meter().setup_meters(50, meter_width);
        gm.update_gain_sensitive ();
index af23518c3a3950a4923f8ff0e5456b3bc8f19bc5..7f87f2dea852c3c2b3e4984d2cabe3363d6effa0 100644 (file)
@@ -43,7 +43,7 @@ SendUI::SendUI (Gtk::Window* parent, boost::shared_ptr<Send> s, Session* session
        assert (_send);
 
        _panners.set_panner (s->panner_shell(), s->panner());
-       _gpm.set_controls (boost::shared_ptr<Route>(), s->meter(), s->amp());
+       _gpm.set_controls (boost::shared_ptr<Route>(), s->meter(), s->amp(), s->gain_control());
 
        _hbox.pack_start (_gpm, true, true);
        set_name (X_("SendUIFrame"));
index 4c96172f1625526ce2f6cb061c42c202406aed9c..104d0912b7c11f91c43afd4e536fd5dc1c7a0f07 100644 (file)
@@ -832,7 +832,7 @@ SoundFileBrowser::add_gain_meter ()
 
        boost::shared_ptr<Route> r = _session->the_auditioner ();
 
-       gm->set_controls (r, r->shared_peak_meter(), r->amp());
+       gm->set_controls (r, r->shared_peak_meter(), r->amp(), r->gain_control());
        gm->set_fader_name (X_("GainFader"));
 
        meter_packer.set_border_width (12);