prepare meter type unification
This commit is contained in:
parent
2277da6e6c
commit
58b325de31
@ -44,10 +44,6 @@ using namespace Gtkmm2ext;
|
||||
using namespace Gtk;
|
||||
using namespace std;
|
||||
|
||||
//sigc::signal<void> LevelMeter::ResetAllPeakDisplays;
|
||||
//sigc::signal<void,RouteGroup*> 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 ()
|
||||
{
|
||||
|
@ -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<bool, GdkEventButton *> ButtonPress;
|
||||
PBD::Signal1<void, ARDOUR::MeterType> 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;
|
||||
|
@ -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<void, MeterType> TypeChanged;
|
||||
|
||||
private:
|
||||
friend class IO;
|
||||
|
||||
|
@ -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&
|
||||
|
Loading…
Reference in New Issue
Block a user