From 413b996a2c4a94e3b4d685f5433d31d386ec6ff8 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 6 Jul 2013 16:32:36 +0200 Subject: [PATCH] highlight meter-background of a port that has peaked (experiment) --- gtk2_ardour/level_meter.cc | 18 +++++++++++------- gtk2_ardour/level_meter.h | 2 ++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/gtk2_ardour/level_meter.cc b/gtk2_ardour/level_meter.cc index cf16107147..d0f46f0597 100644 --- a/gtk2_ardour/level_meter.cc +++ b/gtk2_ardour/level_meter.cc @@ -100,19 +100,21 @@ LevelMeter::update_meters () for (n = 0, i = meters.begin(); i != meters.end(); ++i, ++n) { if ((*i).packed) { + mpeak = _meter->max_peak_power(n); + if (mpeak > (*i).max_peak) { + (*i).max_peak = mpeak; + (*i).meter->set_highlight(mpeak > Config->get_meter_peak()); + } + if (mpeak > max_peak) { + max_peak = mpeak; + } + peak = _meter->peak_power (n); if (n < nmidi) { (*i).meter->set (peak); } else { (*i).meter->set (log_meter (peak)); } - mpeak = _meter->max_peak_power(n); - if (mpeak > max_peak) { - max_peak = mpeak; - } - if (mpeak > max_peak) { - max_peak = mpeak; - } } } return max_peak; @@ -293,6 +295,8 @@ void LevelMeter::clear_meters () { for (vector::iterator i = meters.begin(); i < meters.end(); i++) { (*i).meter->clear(); + (*i).max_peak = minus_infinity(); + (*i).meter->set_highlight(false); } max_peak = minus_infinity(); } diff --git a/gtk2_ardour/level_meter.h b/gtk2_ardour/level_meter.h index bf9f42a528..0792872755 100644 --- a/gtk2_ardour/level_meter.h +++ b/gtk2_ardour/level_meter.h @@ -80,12 +80,14 @@ class LevelMeter : public Gtk::HBox, public ARDOUR::SessionHandlePtr gint16 width; int length; bool packed; + float max_peak; MeterInfo() { meter = 0; width = 0; length = 0; packed = false; + max_peak = -INFINITY; } };