summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-04-29 03:10:27 +0200
committerRobin Gareus <robin@gareus.org>2015-04-29 03:10:27 +0200
commit6e335ca5d90ddc62b0af9a60a6b156ed74ac8eb1 (patch)
tree4eb0341e64fce0db2aa6caab194a712eea5fa09f /gtk2_ardour
parentcd63d97f65133d9c34f5ee36bc1a5a7bec530e21 (diff)
add xrun counter to status-bar (currently no reset)
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour_ui.cc27
-rw-r--r--gtk2_ardour/ardour_ui.h3
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc5
3 files changed, 35 insertions, 0 deletions
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: <span foreground=\"%s\">&gt;10K</span>"), X_("red"));
+ } else {
+ snprintf (buf, sizeof (buf), _("X: <span foreground=\"%s\">%u</span>"), x > 0 ? X_("red") : X_("green"), x);
+ }
+ } else {
+ snprintf (buf, sizeof (buf), _("X: <span foreground=\"%s\">?</span>"), 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: <span foreground=\"%s\">%5.1f%%</span>"), 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