diff options
Diffstat (limited to 'gtk2_ardour/disk_io_gauge.cc')
-rw-r--r-- | gtk2_ardour/disk_io_gauge.cc | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/gtk2_ardour/disk_io_gauge.cc b/gtk2_ardour/disk_io_gauge.cc index 79ccccd9f7..7cced28cca 100644 --- a/gtk2_ardour/disk_io_gauge.cc +++ b/gtk2_ardour/disk_io_gauge.cc @@ -27,26 +27,36 @@ DiskIoGauge::DiskIoGauge () : ArdourGauge ("00.0%") - , _disk_io (0) + , _disk_play (0) + , _disk_capture (0) { } void -DiskIoGauge::set_disk_io (const double load) +DiskIoGauge::set_disk_io (const double play, const double capture) { - if (load == _disk_io) { + if (play == _disk_play && capture == _disk_capture) { return; } - _disk_io = load; + _disk_play = 100.0-play; + _disk_capture = 100.0-capture; char buf[64]; - snprintf (buf, sizeof (buf), "Dsk: %.1f%%", _disk_io); + if ( _disk_play > 1.0 && _disk_play < 10.0 && _disk_capture < 2.0 ) { + snprintf (buf, sizeof (buf), "Disk: %.0f%% / 0%%", _disk_play); + } else if ( _disk_play > 1.0 && _disk_capture < 2.0 ) { + snprintf (buf, sizeof (buf), "Disk: %.0f%% / 0%%", _disk_play); + } else if ( _disk_play > 1.0 && _disk_capture > 1.0 ) { + snprintf (buf, sizeof (buf), "Disk: %.0f%% / %.0f%%", _disk_play, _disk_capture); + } else { + snprintf (buf, sizeof (buf), " "); + } update (std::string (buf)); } float DiskIoGauge::level () const { - return (_disk_io / 100.f); + return min ( _disk_play / 100.f, _disk_capture / 100.f); } bool @@ -58,9 +68,11 @@ DiskIoGauge::alert () const ArdourGauge::Status DiskIoGauge::indicator () const { - if (_disk_io < 50) { + float lvl = level(); + + if (lvl > 0.6) { return ArdourGauge::Level_CRIT; - } else if (_disk_io < 75) { + } else if (lvl > 0.4) { return ArdourGauge::Level_WARN; } else { return ArdourGauge::Level_OK; @@ -70,9 +82,9 @@ DiskIoGauge::indicator () const std::string DiskIoGauge::tooltip_text () { - char buf[64]; + char buf[128]; - snprintf (buf, sizeof (buf), _("Disk I/O cache: %.1f"), _disk_io); + snprintf (buf, sizeof (buf), "Disk Play/Record cache: %.0f%% / %.0f%%", _disk_play, _disk_capture); return buf; } |