From 58b325de319ab1d807511783f55a7fe3748e8614 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 7 Jul 2013 13:34:36 +0200 Subject: prepare meter type unification --- gtk2_ardour/level_meter.cc | 14 ++++++++++---- gtk2_ardour/level_meter.h | 3 +++ libs/ardour/ardour/meter.h | 10 ++-------- libs/ardour/meter.cc | 7 ++++++- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/gtk2_ardour/level_meter.cc b/gtk2_ardour/level_meter.cc index 36a469f35c..3d91b75878 100644 --- a/gtk2_ardour/level_meter.cc +++ b/gtk2_ardour/level_meter.cc @@ -44,10 +44,6 @@ using namespace Gtkmm2ext; using namespace Gtk; using namespace std; -//sigc::signal LevelMeter::ResetAllPeakDisplays; -//sigc::signal LevelMeter::ResetGroupPeakDisplays; - - LevelMeter::LevelMeter (Session* s) : _meter (0) , meter_length (0) @@ -79,10 +75,13 @@ void LevelMeter::set_meter (PeakMeter* meter) { _configuration_connection.disconnect(); + _meter_type_connection.disconnect(); + _meter = meter; if (_meter) { _meter->ConfigurationChanged.connect (_configuration_connection, invalidator (*this), boost::bind (&LevelMeter::configuration_changed, this, _1, _2), gui_context()); + _meter->TypeChanged.connect (_meter_type_connection, invalidator (*this), boost::bind (&LevelMeter::meter_type_changed, this, _1), gui_context()); } } @@ -155,6 +154,13 @@ LevelMeter::configuration_changed (ChanCount /*in*/, ChanCount /*out*/) setup_meters (meter_length, regular_meter_width, thin_meter_width); } +void +LevelMeter::meter_type_changed (MeterType t) +{ + meter_type = t; + MeterTypeChanged(t); +} + void LevelMeter::hide_all_meters () { diff --git a/gtk2_ardour/level_meter.h b/gtk2_ardour/level_meter.h index 0da8ed2a8b..ead63aa50b 100644 --- a/gtk2_ardour/level_meter.h +++ b/gtk2_ardour/level_meter.h @@ -72,6 +72,7 @@ class LevelMeter : public Gtk::HBox, public ARDOUR::SessionHandlePtr /** Emitted in the GUI thread when a button is pressed over the meter */ PBD::Signal1 ButtonPress; + PBD::Signal1 MeterTypeChanged; private: ARDOUR::PeakMeter* _meter; @@ -102,6 +103,7 @@ class LevelMeter : public Gtk::HBox, public ARDOUR::SessionHandlePtr ARDOUR::MeterType meter_type; PBD::ScopedConnection _configuration_connection; + PBD::ScopedConnection _meter_type_connection; PBD::ScopedConnection _parameter_connection; void hide_all_meters (); @@ -110,6 +112,7 @@ class LevelMeter : public Gtk::HBox, public ARDOUR::SessionHandlePtr void parameter_changed (std::string); void configuration_changed (ARDOUR::ChanCount in, ARDOUR::ChanCount out); + void meter_type_changed (ARDOUR::MeterType); void on_theme_changed (); bool style_changed; diff --git a/libs/ardour/ardour/meter.h b/libs/ardour/ardour/meter.h index 001178a226..31ebc76179 100644 --- a/libs/ardour/ardour/meter.h +++ b/libs/ardour/ardour/meter.h @@ -82,14 +82,6 @@ public: } } - float max_peak_power (uint32_t n) { - if (n < _max_peak_power.size()) { - return _max_peak_power[n]; - } else { - return minus_infinity(); - } - } - float meter_level (uint32_t n, MeterType type); void set_type(MeterType t); @@ -97,6 +89,8 @@ public: XMLNode& state (bool full); + PBD::Signal1 TypeChanged; + private: friend class IO; diff --git a/libs/ardour/meter.cc b/libs/ardour/meter.cc index a3390f9d05..c332143324 100644 --- a/libs/ardour/meter.cc +++ b/libs/ardour/meter.cc @@ -297,7 +297,11 @@ PeakMeter::meter_level(uint32_t n, MeterType type) { } default: case MeterMaxPeak: - return max_peak_power(n); + if (n < _max_peak_power.size()) { + return _max_peak_power[n]; + } else { + return minus_infinity(); + } } } void @@ -311,6 +315,7 @@ PeakMeter::set_type(MeterType t) _kmeter[n]->reset(); } } + TypeChanged(t); } XMLNode& -- cgit v1.2.3