diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index fe82ea8024..b0ed45df85 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -844,6 +844,12 @@ GainMeterBase::gain_automation_state_changed () } } +const ChanCount +GainMeterBase::meter_channels() const +{ + if (_meter) { return _meter->input_streams(); } + else { return ChanCount(); } +} void GainMeterBase::update_meters() { diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index 57215b48b5..a12779a19d 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -76,6 +76,8 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr void update_gain_sensitive (); void update_meters (); + const ARDOUR::ChanCount meter_channels () const; + void effective_gain_display (); void set_width (Width, int len=0); void set_meter_strip_name (const char * name); diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index b2ff7ecf1b..3b62d61e26 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -782,7 +782,9 @@ bool MeterStrip::level_meter_button_release (GdkEventButton* ev) { if (ev->button == 3) { - popup_level_meter_menu (ev); + if (_route && _route->shared_peak_meter()->input_streams ().n_audio() > 0) { + popup_level_meter_menu (ev); + } return true; } diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index ceb6e08dd2..177caa0056 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -2190,6 +2190,12 @@ MixerStrip::popup_level_meter_menu (GdkEventButton* ev) add_level_meter_item_point (items, group, _("Output"), MeterOutput); add_level_meter_item_point (items, group, _("Custom"), MeterCustom); + if (gpm.meter_channels().n_audio() == 0) { + m->popup (ev->button, ev->time); + _suspend_menu_callbacks = false; + return; + } + RadioMenuItem::Group tgroup; items.push_back (SeparatorElem());