From: Robin Gareus Date: Wed, 29 Apr 2015 01:10:27 +0000 (+0200) Subject: add xrun counter to status-bar (currently no reset) X-Git-Tag: 4.1~299 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=6e335ca5d90ddc62b0af9a60a6b156ed74ac8eb1;p=ardour.git add xrun counter to status-bar (currently no reset) --- diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 5a91bc6dfc..2f38aec72f 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -434,8 +434,12 @@ ARDOUR_UI::engine_running () first_time_engine_run = false; } + if (_session) { + _session->reset_xrun_count (); + } update_disk_space (); update_cpu_load (); + update_xrun_count (); update_sample_rate (AudioEngine::instance()->sample_rate()); update_timecode_format (); } @@ -1179,6 +1183,7 @@ void ARDOUR_UI::every_second () { update_cpu_load (); + update_xrun_count (); update_buffer_load (); update_disk_space (); update_timecode_format (); @@ -1348,6 +1353,28 @@ ARDOUR_UI::update_cpu_load () should also be changed. */ + if (_session) { + const unsigned int x = _session->get_xrun_count (); + if (x > 9999) { + snprintf (buf, sizeof (buf), _("X: >10K"), X_("red")); + } else { + snprintf (buf, sizeof (buf), _("X: %u"), x > 0 ? X_("red") : X_("green"), x); + } + } else { + snprintf (buf, sizeof (buf), _("X: ?"), X_("yellow")); + } + xrun_label.set_markup (buf); +} + +void +ARDOUR_UI::update_xrun_count () +{ + char buf[64]; + + /* If this text is changed, the set_size_request_to_display_given_text call in ARDOUR_UI::resize_text_widgets + should also be changed. + */ + double const c = AudioEngine::instance()->get_dsp_load (); snprintf (buf, sizeof (buf), _("DSP: %5.1f%%"), c >= 90 ? X_("red") : X_("green"), c); cpu_load_label.set_markup (buf); diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 23764842eb..33a5f6e3ee 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -552,6 +552,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr Gtk::Label cpu_load_label; void update_cpu_load (); + Gtk::Label xrun_label; + void update_xrun_count (); + Gtk::Label buffer_load_label; void update_buffer_load (); diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 7c3db7a7e3..ad0f4aa8d0 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -495,6 +495,8 @@ ARDOUR_UI::build_menu_bar () timecode_format_label.set_use_markup (); cpu_load_label.set_name ("CPULoad"); cpu_load_label.set_use_markup (); + xrun_label.set_name ("XrunLabel"); + xrun_label.set_use_markup (); buffer_load_label.set_name ("BufferLoad"); buffer_load_label.set_use_markup (); sample_rate_label.set_name ("SampleRate"); @@ -523,6 +525,7 @@ ARDOUR_UI::build_menu_bar () hbox->pack_end (wall_clock_label, false, false, 2); hbox->pack_end (disk_space_label, false, false, 4); + hbox->pack_end (xrun_label, false, false, 4); hbox->pack_end (cpu_load_label, false, false, 4); hbox->pack_end (buffer_load_label, false, false, 4); hbox->pack_end (sample_rate_label, false, false, 4); @@ -539,6 +542,7 @@ ARDOUR_UI::build_menu_bar () #endif _status_bar_visibility.add (&disk_space_label, X_("Disk"), _("Disk Space"), disk_space); _status_bar_visibility.add (&cpu_load_label, X_("DSP"), _("DSP"), true); + _status_bar_visibility.add (&xrun_label, X_("XRun"), _("X-run"), true); _status_bar_visibility.add (&buffer_load_label, X_("Buffers"), _("Buffers"), true); _status_bar_visibility.add (&sample_rate_label, X_("Audio"), _("Audio"), true); _status_bar_visibility.add (&timecode_format_label, X_("TCFormat"), _("Timecode Format"), true); @@ -660,6 +664,7 @@ ARDOUR_UI::resize_text_widgets () { set_size_request_to_display_given_text (cpu_load_label, "DSP: 100.0%", 2, 2); set_size_request_to_display_given_text (buffer_load_label, "Buffers: p:100% c:100%", 2, 2); + set_size_request_to_display_given_text (xrun_label, "X: 9999", 2, 2); } void