summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ardour_ui.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-04-10 23:36:17 +0200
committerRobin Gareus <robin@gareus.org>2020-04-10 23:50:10 +0200
commite1a9034a0ee081c2c71951ac760dc625b16f543c (patch)
tree58f5f19acf1df129bcc23db35cca8900128ddecc /gtk2_ardour/ardour_ui.cc
parent58672bcaa20f69a5c237a9e54cf49b2c03305f7a (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.cc25
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