From: Robin Gareus Date: Sun, 9 Jun 2019 17:41:07 +0000 (+0200) Subject: Update GUI: meter-type API and meter-type state changes X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=9f20631984c2792486d8f272fc1bebf806e858a8;p=ardour.git Update GUI: meter-type API and meter-type state changes 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. --- diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index ba979240cc..680e23a06e 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -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(); diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 0475b7115d..35cb66407b 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -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 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(); -} diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index cd8c1b552f..bbc8465d57 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -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 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; diff --git a/gtk2_ardour/level_meter.cc b/gtk2_ardour/level_meter.cc index ba386987a2..308e198c95 100644 --- a/gtk2_ardour/level_meter.cc +++ b/gtk2_ardour/level_meter.cc @@ -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) { diff --git a/gtk2_ardour/level_meter.h b/gtk2_ardour/level_meter.h index f3ff2a8550..a397ac3e2d 100644 --- a/gtk2_ardour/level_meter.h +++ b/gtk2_ardour/level_meter.h @@ -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 ButtonPress; PBD::Signal1 ButtonRelease; - PBD::Signal1 MeterTypeChanged; protected: virtual void mtr_pack(Gtk::Widget &w) = 0; @@ -106,7 +102,6 @@ private: guint16 thin_meter_width; std::vector meters; float max_peak; - ARDOUR::MeterType _meter_type; ARDOUR::MeterType visible_meter_type; uint32_t midi_count; uint32_t meter_count; diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index 079d6c00f0..a6dac9a038 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -147,10 +147,9 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr 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; } diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index de4551940a..35801cbd0f 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -563,8 +563,6 @@ MixerStrip::set_route (boost::shared_ptr 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) 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