From 0cedb68882f7ccf5c109d583a74ddc960d1c3b84 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 30 Mar 2020 03:53:09 +0200 Subject: [PATCH] Statusbar: fix double-click to reset x-run counter --- gtk2_ardour/ardour_ui.h | 1 + gtk2_ardour/ardour_ui_ed.cc | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 8a1f41c7a5..8ef3071e4f 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -862,6 +862,7 @@ private: bool audio_button_press (GdkEventButton* ev); bool format_button_press (GdkEventButton* ev); bool timecode_button_press (GdkEventButton* ev); + bool xrun_button_press (GdkEventButton* ev); bool xrun_button_release (GdkEventButton* ev); std::string _announce_string; diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index d1012d6a5e..d5c0e73da0 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -789,6 +789,7 @@ ARDOUR_UI::build_menu_bar () ev->signal_button_press_event().connect (sigc::mem_fun (_status_bar_visibility, &VisibilityGroup::button_press_event)); + ev_dsp->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::xrun_button_press)); ev_dsp->signal_button_release_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::xrun_button_release)); ev_path->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::path_button_press)); ev_audio->signal_button_press_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::audio_button_press)); @@ -954,10 +955,23 @@ ARDOUR_UI::focus_on_clock () } } +bool +ARDOUR_UI::xrun_button_press (GdkEventButton* ev) +{ + if (ev->button != 1 || ev->type != GDK_2BUTTON_PRESS) { + return false; + } + if (_session) { + _session->reset_xrun_count (); + update_cpu_load (); + } + return true; +} + bool ARDOUR_UI::xrun_button_release (GdkEventButton* ev) { - if (ev->button != 1 || !(Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier) || ev->type == GDK_2BUTTON_PRESS)) { + if (ev->button != 1 || !Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { return false; }