diff options
author | Robin Gareus <robin@gareus.org> | 2020-04-10 23:36:17 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-04-10 23:50:10 +0200 |
commit | e1a9034a0ee081c2c71951ac760dc625b16f543c (patch) | |
tree | 58f5f19acf1df129bcc23db35cca8900128ddecc /gtk2_ardour/ardour_ui.cc | |
parent | 58672bcaa20f69a5c237a9e54cf49b2c03305f7a (diff) |
Synchronize meter-reset #7465
Queue reset to be handled when the meter is updated.
Also only call set_name(), set_active_state() when the
state changes.
Diffstat (limited to 'gtk2_ardour/ardour_ui.cc')
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index da3eb1dd46..7b55621ab9 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -316,6 +316,8 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) , error_alert_button ( ArdourButton::just_led_default_elements ) , editor_meter_peak_display() , editor_meter(0) + , _clear_editor_meter( true) + , _editor_meter_peaked (false) , _numpad_locate_happening (false) , _session_is_new (false) , last_key_press_time (0) @@ -1136,11 +1138,20 @@ ARDOUR_UI::every_point_zero_something_seconds () // august 2007: actual update frequency: 25Hz (40ms), not 100Hz if (editor_meter && UIConfiguration::instance().get_show_editor_meter() && editor_meter_peak_display.is_mapped ()) { - float mpeak = editor_meter->update_meters(); - if (mpeak > editor_meter_max_peak) { - if (mpeak >= UIConfiguration::instance().get_meter_peak()) { - editor_meter_peak_display.set_active_state ( Gtkmm2ext::ExplicitActive ); - } + + if (_clear_editor_meter) { + editor_meter->clear_meters(); + editor_meter_peak_display.set_active_state (Gtkmm2ext::Off); + _clear_editor_meter = false; + _editor_meter_peaked = false; + } + + const float mpeak = editor_meter->update_meters(); + const bool peaking = mpeak > UIConfiguration::instance().get_meter_peak(); + + if (!_editor_meter_peaked && peaking) { + editor_meter_peak_display.set_active_state ( Gtkmm2ext::ExplicitActive ); + _editor_meter_peaked = true; } } } @@ -2935,9 +2946,7 @@ void ARDOUR_UI::reset_peak_display () { if (!_session || !_session->master_out() || !editor_meter) return; - editor_meter->clear_meters(); - editor_meter_max_peak = -INFINITY; - editor_meter_peak_display.set_active_state ( Gtkmm2ext::Off ); + _clear_editor_meter = true; } void |