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.
This commit is contained in:
Robin Gareus 2019-06-09 19:41:07 +02:00
parent cd5b0819bf
commit 9f20631984
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
7 changed files with 12 additions and 56 deletions

View file

@ -230,7 +230,6 @@ ARDOUR_UI::set_session (Session *s)
editor_meter = new LevelMeterHBox(_session); editor_meter = new LevelMeterHBox(_session);
editor_meter->set_meter (_session->master_out()->shared_peak_meter().get()); editor_meter->set_meter (_session->master_out()->shared_peak_meter().get());
editor_meter->clear_meters(); editor_meter->clear_meters();
editor_meter->set_meter_type (_session->master_out()->meter_type());
editor_meter->setup_meters (30, 10, 6); editor_meter->setup_meters (30, 10, 6);
editor_meter->show(); editor_meter->show();

View file

@ -383,12 +383,6 @@ GainMeterBase::setup_meters (int len)
level_meter->setup_meters(len, meter_width); level_meter->setup_meters(len, meter_width);
} }
void
GainMeterBase::set_type (MeterType t)
{
level_meter->set_meter_type(t);
}
void void
GainMeter::setup_meters (int len) GainMeter::setup_meters (int len)
{ {
@ -411,12 +405,6 @@ GainMeter::setup_meters (int len)
GainMeterBase::setup_meters (len); GainMeterBase::setup_meters (len);
} }
void
GainMeter::set_type (MeterType t)
{
GainMeterBase::set_type (t);
}
bool bool
GainMeterBase::gain_key_press (GdkEventKey* ev) GainMeterBase::gain_key_press (GdkEventKey* ev)
{ {
@ -971,8 +959,8 @@ GainMeter::set_controls (boost::shared_ptr<Route> r,
_meter->ConfigurationChanged.connect ( _meter->ConfigurationChanged.connect (
model_connections, invalidator (*this), boost::bind (&GainMeter::meter_configuration_changed, this, _1), gui_context() model_connections, invalidator (*this), boost::bind (&GainMeter::meter_configuration_changed, this, _1), gui_context()
); );
_meter->TypeChanged.connect ( _meter->MeterTypeChanged.connect (
model_connections, invalidator (*this), boost::bind (&GainMeter::meter_type_changed, this, _1), gui_context() model_connections, invalidator (*this), boost::bind (&GainMeter::redraw_metrics, this), gui_context()
); );
meter_configuration_changed (_meter->input_streams ()); meter_configuration_changed (_meter->input_streams ());
@ -1129,10 +1117,3 @@ GainMeter::route_active_changed ()
meter_configuration_changed (_meter->input_streams ()); meter_configuration_changed (_meter->input_streams ());
} }
} }
void
GainMeter::meter_type_changed (MeterType t)
{
_route->set_meter_type(t);
RedrawMetrics();
}

View file

@ -90,7 +90,6 @@ public:
void set_fader_name (const char * name); void set_fader_name (const char * name);
virtual void setup_meters (int len=0); virtual void setup_meters (int len=0);
virtual void set_type (ARDOUR::MeterType);
boost::shared_ptr<PBD::Controllable> get_controllable(); boost::shared_ptr<PBD::Controllable> get_controllable();
@ -217,7 +216,6 @@ class GainMeter : public GainMeterBase, public Gtk::VBox
int get_gm_width (); int get_gm_width ();
void setup_meters (int len=0); void setup_meters (int len=0);
void set_type (ARDOUR::MeterType);
void route_active_changed (); void route_active_changed ();
protected: protected:
@ -231,7 +229,6 @@ class GainMeter : public GainMeterBase, public Gtk::VBox
private: private:
void meter_configuration_changed (ARDOUR::ChanCount); void meter_configuration_changed (ARDOUR::ChanCount);
void meter_type_changed (ARDOUR::MeterType);
Gtk::HBox gain_display_box; Gtk::HBox gain_display_box;
Gtk::HBox fader_box; Gtk::HBox fader_box;

View file

@ -49,7 +49,6 @@ LevelMeterBase::LevelMeterBase (Session* s, PBD::EventLoop::InvalidationRecord*
, meter_length (0) , meter_length (0)
, thin_meter_width(2) , thin_meter_width(2)
, max_peak (minus_infinity()) , max_peak (minus_infinity())
, _meter_type (MeterPeak)
, visible_meter_type (MeterType(0)) , visible_meter_type (MeterType(0))
, midi_count (0) , midi_count (0)
, meter_count (0) , meter_count (0)
@ -85,7 +84,7 @@ LevelMeterBase::set_meter (PeakMeter* meter)
if (_meter) { if (_meter) {
_meter->ConfigurationChanged.connect (_configuration_connection, parent_invalidator, boost::bind (&LevelMeterBase::configuration_changed, this, _1, _2), gui_context()); _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) { if (n < nmidi) {
(*i).meter->set (_meter->meter_level (n, MeterPeak)); (*i).meter->set (_meter->meter_level (n, MeterPeak));
} else { } else {
MeterType _meter_type = _meter->meter_type ();
const float peak = _meter->meter_level (n, _meter_type); const float peak = _meter->meter_level (n, _meter_type);
if (_meter_type == MeterPeak) { if (_meter_type == MeterPeak) {
(*i).meter->set (log_meter (peak)); (*i).meter->set (log_meter (peak));
@ -218,9 +218,7 @@ LevelMeterBase::configuration_changed (ChanCount /*in*/, ChanCount /*out*/)
void void
LevelMeterBase::meter_type_changed (MeterType t) LevelMeterBase::meter_type_changed (MeterType t)
{ {
_meter_type = t;
setup_meters (meter_length, regular_meter_width, thin_meter_width); setup_meters (meter_length, regular_meter_width, thin_meter_width);
MeterTypeChanged(t);
} }
void void
@ -255,6 +253,7 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width)
return; /* do it later or never */ return; /* do it later or never */
} }
MeterType _meter_type = _meter->meter_type ();
uint32_t nmidi = _meter->input_streams().n_midi(); uint32_t nmidi = _meter->input_streams().n_midi();
uint32_t nmeters = _meter->input_streams().n_total(); uint32_t nmeters = _meter->input_streams().n_total();
regular_meter_width = initial_width; regular_meter_width = initial_width;
@ -487,13 +486,6 @@ LevelMeterBase::setup_meters (int len, int initial_width, int thin_width)
meter_count = nmeters; meter_count = nmeters;
} }
void
LevelMeterBase::set_meter_type(MeterType t)
{
_meter_type = t;
_meter->set_type(t);
}
bool bool
LevelMeterBase::meter_button_press (GdkEventButton* ev) LevelMeterBase::meter_button_press (GdkEventButton* ev)
{ {

View file

@ -66,13 +66,9 @@ public:
void setup_meters (int len=0, int width=3, int thin=2); void setup_meters (int len=0, int width=3, int thin=2);
void set_max_audio_meter_count (uint32_t cnt = 0); 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 */ /** Emitted in the GUI thread when a button is pressed over the meter */
PBD::Signal1<bool, GdkEventButton *> ButtonPress; PBD::Signal1<bool, GdkEventButton *> ButtonPress;
PBD::Signal1<bool, GdkEventButton *> ButtonRelease; PBD::Signal1<bool, GdkEventButton *> ButtonRelease;
PBD::Signal1<void, ARDOUR::MeterType> MeterTypeChanged;
protected: protected:
virtual void mtr_pack(Gtk::Widget &w) = 0; virtual void mtr_pack(Gtk::Widget &w) = 0;
@ -106,7 +102,6 @@ private:
guint16 thin_meter_width; guint16 thin_meter_width;
std::vector<MeterInfo> meters; std::vector<MeterInfo> meters;
float max_peak; float max_peak;
ARDOUR::MeterType _meter_type;
ARDOUR::MeterType visible_meter_type; ARDOUR::MeterType visible_meter_type;
uint32_t midi_count; uint32_t midi_count;
uint32_t meter_count; uint32_t meter_count;

View file

@ -147,10 +147,9 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt)
level_meter = new LevelMeterHBox(sess); level_meter = new LevelMeterHBox(sess);
level_meter->set_meter (_route->shared_peak_meter().get()); level_meter->set_meter (_route->shared_peak_meter().get());
level_meter->clear_meters(); level_meter->clear_meters();
level_meter->set_meter_type (_route->meter_type());
level_meter->setup_meters (220, meter_width, 6); 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->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.set(0.5, 0.5, 0.0, 1.0);
meter_align.add(*level_meter); meter_align.add(*level_meter);
@ -928,9 +927,7 @@ void
MeterStrip::set_meter_type (MeterType type) MeterStrip::set_meter_type (MeterType type)
{ {
if (_suspend_menu_callbacks) return; if (_suspend_menu_callbacks) return;
if (_route->meter_type() == type) return; _route->set_meter_type (type);
level_meter->set_meter_type (type);
} }
void void
@ -943,9 +940,6 @@ MeterStrip::set_label_height (uint32_t h)
void void
MeterStrip::meter_type_changed (MeterType type) MeterStrip::meter_type_changed (MeterType type)
{ {
if (_route->meter_type() != type) {
_route->set_meter_type(type);
}
update_background (type); update_background (type);
MetricChanged(); MetricChanged();
} }
@ -956,15 +950,15 @@ MeterStrip::set_meter_type_multi (int what, RouteGroup* group, MeterType type)
switch (what) { switch (what) {
case -1: case -1:
if (_route && group == _route->route_group()) { if (_route && group == _route->route_group()) {
level_meter->set_meter_type (type); _route->set_meter_type (type);
} }
break; break;
case 0: case 0:
level_meter->set_meter_type (type); _route->set_meter_type (type);
break; break;
default: default:
if (what == _strip_type) { if (what == _strip_type) {
level_meter->set_meter_type (type); _route->set_meter_type (type);
} }
break; break;
} }

View file

@ -563,8 +563,6 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
gpm.gain_display.get_parent()->remove (gpm.gain_display); 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.gain_display,0,1,1,2, EXPAND|FILL, EXPAND);
mute_solo_table.attach (gpm.peak_display,1,2,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); 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); send->set_metering (true);
_current_delivery->DropReferences.connect (send_gone_connection, invalidator (*this), boost::bind (&MixerStrip::revert_to_default_display, this), gui_context()); _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) MixerStrip::set_meter_type (MeterType t)
{ {
if (_suspend_menu_callbacks) return; if (_suspend_menu_callbacks) return;
gpm.set_type (t); _route->set_meter_type (t);
} }
void void