Update GUI: meter-type API and meter-type state changes
authorRobin Gareus <robin@gareus.org>
Sun, 9 Jun 2019 17:41:07 +0000 (19:41 +0200)
committerRobin Gareus <robin@gareus.org>
Sun, 9 Jun 2019 17:56:30 +0000 (19:56 +0200)
This removes all additional GUI side meter-type state.
The route's meter-processors is now responsible for providing
the type.

meter-type is now implicit for GainMeter, LevelMeter used by
meter-strips and mixer-strips.

gtk2_ardour/ardour_ui_dialogs.cc
gtk2_ardour/gain_meter.cc
gtk2_ardour/gain_meter.h
gtk2_ardour/level_meter.cc
gtk2_ardour/level_meter.h
gtk2_ardour/meter_strip.cc
gtk2_ardour/mixer_strip.cc

index ba979240cc393500b9f8a815493e04503ea75ace..680e23a06ea42deb88cd4f25c3ae327653ed5dcb 100644 (file)
@@ -230,7 +230,6 @@ ARDOUR_UI::set_session (Session *s)
                        editor_meter = new LevelMeterHBox(_session);
                        editor_meter->set_meter (_session->master_out()->shared_peak_meter().get());
                        editor_meter->clear_meters();
-                       editor_meter->set_meter_type (_session->master_out()->meter_type());
                        editor_meter->setup_meters (30, 10, 6);
                        editor_meter->show();
 
index 0475b7115d13835abf6af24800d44aeb615ba2c5..35cb66407bc0667ee56beaeb831e76288769f168 100644 (file)
@@ -383,12 +383,6 @@ GainMeterBase::setup_meters (int len)
        level_meter->setup_meters(len, meter_width);
 }
 
-void
-GainMeterBase::set_type (MeterType t)
-{
-       level_meter->set_meter_type(t);
-}
-
 void
 GainMeter::setup_meters (int len)
 {
@@ -411,12 +405,6 @@ GainMeter::setup_meters (int len)
        GainMeterBase::setup_meters (len);
 }
 
-void
-GainMeter::set_type (MeterType t)
-{
-       GainMeterBase::set_type (t);
-}
-
 bool
 GainMeterBase::gain_key_press (GdkEventKey* ev)
 {
@@ -971,8 +959,8 @@ GainMeter::set_controls (boost::shared_ptr<Route> r,
                _meter->ConfigurationChanged.connect (
                        model_connections, invalidator (*this), boost::bind (&GainMeter::meter_configuration_changed, this, _1), gui_context()
                        );
-               _meter->TypeChanged.connect (
-                       model_connections, invalidator (*this), boost::bind (&GainMeter::meter_type_changed, this, _1), gui_context()
+               _meter->MeterTypeChanged.connect (
+                       model_connections, invalidator (*this), boost::bind (&GainMeter::redraw_metrics, this), gui_context()
                        );
 
                meter_configuration_changed (_meter->input_streams ());
@@ -1129,10 +1117,3 @@ GainMeter::route_active_changed ()
                meter_configuration_changed (_meter->input_streams ());
        }
 }
-
-void
-GainMeter::meter_type_changed (MeterType t)
-{
-       _route->set_meter_type(t);
-       RedrawMetrics();
-}
index cd8c1b552f380e6a18b0be1e959e27ca483a8390..bbc8465d5755eafe49d979ff956881c1898075c9 100644 (file)
@@ -90,7 +90,6 @@ public:
        void set_fader_name (const char * name);
 
        virtual void setup_meters (int len=0);
-       virtual void set_type (ARDOUR::MeterType);
 
        boost::shared_ptr<PBD::Controllable> get_controllable();
 
@@ -217,7 +216,6 @@ class GainMeter : public GainMeterBase, public Gtk::VBox
 
        int get_gm_width ();
        void setup_meters (int len=0);
-       void set_type (ARDOUR::MeterType);
        void route_active_changed ();
 
   protected:
@@ -231,7 +229,6 @@ class GainMeter : public GainMeterBase, public Gtk::VBox
   private:
 
        void meter_configuration_changed (ARDOUR::ChanCount);
-       void meter_type_changed (ARDOUR::MeterType);
 
        Gtk::HBox  gain_display_box;
        Gtk::HBox  fader_box;
index ba386987a23fb7f0d460c5ebe754f93b16db6837..308e198c9553c598bf26f4733e56f25365ea1420 100644 (file)
@@ -49,7 +49,6 @@ LevelMeterBase::LevelMeterBase (Session* s, PBD::EventLoop::InvalidationRecord*
        , meter_length (0)
        , thin_meter_width(2)
        , max_peak (minus_infinity())
-       , _meter_type (MeterPeak)
        , visible_meter_type (MeterType(0))
        , midi_count (0)
        , meter_count (0)
@@ -85,7 +84,7 @@ LevelMeterBase::set_meter (PeakMeter* meter)
 
        if (_meter) {
                _meter->ConfigurationChanged.connect (_configuration_connection, parent_invalidator, boost::bind (&LevelMeterBase::configuration_changed, this, _1, _2), gui_context());
-               _meter->TypeChanged.connect (_meter_type_connection, parent_invalidator, boost::bind (&LevelMeterBase::meter_type_changed, this, _1), gui_context());
+               _meter->MeterTypeChanged.connect (_meter_type_connection, parent_invalidator, boost::bind (&LevelMeterBase::meter_type_changed, this, _1), gui_context());
        }
 }
 
@@ -150,6 +149,7 @@ LevelMeterBase::update_meters ()
                        if (n < nmidi) {
                                (*i).meter->set (_meter->meter_level (n, MeterPeak));
                        } else {
+                               MeterType _meter_type = _meter->meter_type ();
                                const float peak = _meter->meter_level (n, _meter_type);
                                if (_meter_type == MeterPeak) {
                                        (*i).meter->set (log_meter (peak));
@@ -218,9 +218,7 @@ LevelMeterBase::configuration_changed (ChanCount /*in*/, ChanCount /*out*/)
 void
 LevelMeterBase::meter_type_changed (MeterType t)
 {
-       _meter_type = t;
        setup_meters (meter_length, regular_meter_width, thin_meter_width);
-       MeterTypeChanged(t);
 }
 
 void
@@ -255,6 +253,7 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width)
                return; /* do it later or never */
        }
 
+       MeterType _meter_type = _meter->meter_type ();
        uint32_t nmidi = _meter->input_streams().n_midi();
        uint32_t nmeters = _meter->input_streams().n_total();
        regular_meter_width = initial_width;
@@ -487,13 +486,6 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width)
        meter_count = nmeters;
 }
 
-void
-LevelMeterBase::set_meter_type(MeterType t)
-{
-       _meter_type = t;
-       _meter->set_type(t);
-}
-
 bool
 LevelMeterBase::meter_button_press (GdkEventButton* ev)
 {
index f3ff2a8550f682d37a55d234a895c615befd7bab..a397ac3e2dc7b9ca64e47c0351369d1ed573f938 100644 (file)
@@ -66,13 +66,9 @@ public:
        void setup_meters (int len=0, int width=3, int thin=2);
        void set_max_audio_meter_count (uint32_t cnt = 0);
 
-       void set_meter_type (ARDOUR::MeterType);
-       ARDOUR::MeterType meter_type () { return _meter_type; }
-
        /** Emitted in the GUI thread when a button is pressed over the meter */
        PBD::Signal1<bool, GdkEventButton *> ButtonPress;
        PBD::Signal1<bool, GdkEventButton *> ButtonRelease;
-       PBD::Signal1<void, ARDOUR::MeterType> MeterTypeChanged;
 
 protected:
        virtual void mtr_pack(Gtk::Widget &w) = 0;
@@ -106,7 +102,6 @@ private:
        guint16                thin_meter_width;
        std::vector<MeterInfo> meters;
        float                  max_peak;
-       ARDOUR::MeterType      _meter_type;
        ARDOUR::MeterType      visible_meter_type;
        uint32_t               midi_count;
        uint32_t               meter_count;
index 079d6c00f09ca3d7f309fac9d101505d7312f0ae..a6dac9a03877c9ab4d3a0c54133330d0792ca1c1 100644 (file)
@@ -147,10 +147,9 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt)
        level_meter = new LevelMeterHBox(sess);
        level_meter->set_meter (_route->shared_peak_meter().get());
        level_meter->clear_meters();
-       level_meter->set_meter_type (_route->meter_type());
        level_meter->setup_meters (220, meter_width, 6);
        level_meter->ButtonPress.connect_same_thread (level_meter_connection, boost::bind (&MeterStrip::level_meter_button_press, this, _1));
-       level_meter->MeterTypeChanged.connect_same_thread (level_meter_connection, boost::bind (&MeterStrip::meter_type_changed, this, _1));
+       _route->shared_peak_meter()->MeterTypeChanged.connect (meter_route_connections, invalidator (*this), boost::bind (&MeterStrip::meter_type_changed, this, _1), gui_context());
 
        meter_align.set(0.5, 0.5, 0.0, 1.0);
        meter_align.add(*level_meter);
@@ -928,9 +927,7 @@ void
 MeterStrip::set_meter_type (MeterType type)
 {
        if (_suspend_menu_callbacks) return;
-       if (_route->meter_type() == type) return;
-
-       level_meter->set_meter_type (type);
+       _route->set_meter_type (type);
 }
 
 void
@@ -943,9 +940,6 @@ MeterStrip::set_label_height (uint32_t h)
 void
 MeterStrip::meter_type_changed (MeterType type)
 {
-       if (_route->meter_type() != type) {
-               _route->set_meter_type(type);
-       }
        update_background (type);
        MetricChanged();
 }
@@ -956,15 +950,15 @@ MeterStrip::set_meter_type_multi (int what, RouteGroup* group, MeterType type)
        switch (what) {
                case -1:
                        if (_route && group == _route->route_group()) {
-                               level_meter->set_meter_type (type);
+                               _route->set_meter_type (type);
                        }
                        break;
                case 0:
-                       level_meter->set_meter_type (type);
+                       _route->set_meter_type (type);
                        break;
                default:
                        if (what == _strip_type) {
-                               level_meter->set_meter_type (type);
+                               _route->set_meter_type (type);
                        }
                        break;
        }
index de4551940ae5fca02be295379a409430cd9adb5c..35801cbd0f73460e81e7b40d76118750ebda3f3b 100644 (file)
@@ -563,8 +563,6 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
                gpm.gain_display.get_parent()->remove (gpm.gain_display);
        }
 
-       gpm.set_type (rt->meter_type());
-
        mute_solo_table.attach (gpm.gain_display,0,1,1,2, EXPAND|FILL, EXPAND);
        mute_solo_table.attach (gpm.peak_display,1,2,1,2, EXPAND|FILL, EXPAND);
 
@@ -2217,7 +2215,7 @@ MixerStrip::show_send (boost::shared_ptr<Send> send)
 
        set_current_delivery (send);
 
-       send->meter()->set_type(_route->shared_peak_meter()->get_type());
+       send->meter()->set_meter_type (_route->meter_type ());
        send->set_metering (true);
        _current_delivery->DropReferences.connect (send_gone_connection, invalidator (*this), boost::bind (&MixerStrip::revert_to_default_display, this), gui_context());
 
@@ -2616,7 +2614,7 @@ void
 MixerStrip::set_meter_type (MeterType t)
 {
        if (_suspend_menu_callbacks) return;
-       gpm.set_type (t);
+       _route->set_meter_type (t);
 }
 
 void