summaryrefslogtreecommitdiff
path: root/gtk2_ardour/level_meter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/level_meter.cc')
-rw-r--r--gtk2_ardour/level_meter.cc18
1 files changed, 12 insertions, 6 deletions
diff --git a/gtk2_ardour/level_meter.cc b/gtk2_ardour/level_meter.cc
index 1f6cecb74d..f6d41c3312 100644
--- a/gtk2_ardour/level_meter.cc
+++ b/gtk2_ardour/level_meter.cc
@@ -80,12 +80,14 @@ LevelMeter::~LevelMeter ()
}
void
-LevelMeter::set_meter (PeakMeter& meter)
+LevelMeter::set_meter (PeakMeter* meter)
{
_configuration_connection.disconnect();
- _meter = &meter;
- _configuration_connection = _meter->ConfigurationChanged.connect(
+ _meter = meter;
+ if (_meter) {
+ _configuration_connection = _meter->ConfigurationChanged.connect(
mem_fun(*this, &LevelMeter::configuration_changed));
+ }
}
float
@@ -94,6 +96,10 @@ LevelMeter::update_meters ()
vector<MeterInfo>::iterator i;
uint32_t n;
float peak, mpeak;
+
+ if (!_meter) {
+ return 0.0f;
+ }
for (n = 0, i = meters.begin(); i != meters.end(); ++i, ++n) {
if ((*i).packed) {
@@ -149,8 +155,10 @@ LevelMeter::hide_all_meters ()
void
LevelMeter::setup_meters (int len, int initial_width)
{
+ hide_all_meters ();
+
if (!_meter) {
- return; /* do it later */
+ return; /* do it later or never */
}
int32_t nmidi = _meter->input_streams().n_midi();
@@ -160,8 +168,6 @@ LevelMeter::setup_meters (int len, int initial_width)
guint16 width;
- hide_all_meters ();
-
if (nmeters == 0) {
return;
}