summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/meter_strip.cc4
-rw-r--r--gtk2_ardour/meter_strip.h1
-rw-r--r--gtk2_ardour/mixer_strip.cc5
-rw-r--r--gtk2_ardour/mixer_strip.h1
-rw-r--r--libs/ardour/meter.cc4
5 files changed, 13 insertions, 2 deletions
diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc
index 50ef230e65..53ece6745a 100644
--- a/gtk2_ardour/meter_strip.cc
+++ b/gtk2_ardour/meter_strip.cc
@@ -452,10 +452,12 @@ MeterStrip::popup_level_meter_menu (GdkEventButton* ev)
RadioMenuItem::Group group;
+ _suspend_menu_callbacks = true;
add_level_meter_item (items, group, _("Peak"), MeterPeak);
add_level_meter_item (items, group, _("RMS"), MeterKrms);
m->popup (ev->button, ev->time);
+ _suspend_menu_callbacks = false;
}
void
@@ -471,8 +473,8 @@ MeterStrip::add_level_meter_item (Menu_Helpers::MenuList& items, RadioMenuItem::
void
MeterStrip::set_meter_type (MeterType m)
{
+ if (_suspend_menu_callbacks) return;
level_meter->set_type (m);
- //_route->set_meter_type(m);
}
void
diff --git a/gtk2_ardour/meter_strip.h b/gtk2_ardour/meter_strip.h
index a1851b92b0..9f80cfee87 100644
--- a/gtk2_ardour/meter_strip.h
+++ b/gtk2_ardour/meter_strip.h
@@ -116,6 +116,7 @@ class MeterStrip : public Gtk::VBox, public RouteUI
void parameter_changed (std::string const & p);
void redraw_metrics ();
+ bool _suspend_menu_callbacks;
bool level_meter_button_press (GdkEventButton* ev);
void popup_level_meter_menu (GdkEventButton* ev);
void add_level_meter_item (Gtk::Menu_Helpers::MenuList& items, Gtk::RadioMenuItem::Group& group, std::string const & name, ARDOUR::MeterType mode);
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index 238b6077a6..50522564d0 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -2125,6 +2125,7 @@ MixerStrip::popup_level_meter_menu (GdkEventButton* ev)
RadioMenuItem::Group group;
+ _suspend_menu_callbacks = true;
add_level_meter_item_point (items, group, _("Input"), MeterInput);
add_level_meter_item_point (items, group, _("Pre-fader"), MeterPreFader);
add_level_meter_item_point (items, group, _("Post-fader"), MeterPostFader);
@@ -2138,6 +2139,7 @@ MixerStrip::popup_level_meter_menu (GdkEventButton* ev)
add_level_meter_item_type (items, tgroup, _("RMS"), MeterKrms);
m->popup (ev->button, ev->time);
+ _suspend_menu_callbacks = false;
}
void
@@ -2154,6 +2156,7 @@ MixerStrip::add_level_meter_item_point (Menu_Helpers::MenuList& items,
void
MixerStrip::set_meter_point (MeterPoint p)
{
+ if (_suspend_menu_callbacks) return;
_route->set_meter_point (p);
}
@@ -2171,6 +2174,6 @@ MixerStrip::add_level_meter_item_type (Menu_Helpers::MenuList& items,
void
MixerStrip::set_meter_type (MeterType t)
{
- //_route->set_meter_type (t);
+ if (_suspend_menu_callbacks) return;
gpm.set_type (t);
}
diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h
index 135ee6d77c..fe10070fbb 100644
--- a/gtk2_ardour/mixer_strip.h
+++ b/gtk2_ardour/mixer_strip.h
@@ -308,6 +308,7 @@ class MixerStrip : public RouteUI, public Gtk::EventBox
void add_input_port (ARDOUR::DataType);
void add_output_port (ARDOUR::DataType);
+ bool _suspend_menu_callbacks;
bool level_meter_button_press (GdkEventButton *);
void popup_level_meter_menu (GdkEventButton *);
void add_level_meter_item_point (Gtk::Menu_Helpers::MenuList &, Gtk::RadioMenuItem::Group &, std::string const &, ARDOUR::MeterPoint);
diff --git a/libs/ardour/meter.cc b/libs/ardour/meter.cc
index c332143324..9871b582c0 100644
--- a/libs/ardour/meter.cc
+++ b/libs/ardour/meter.cc
@@ -307,6 +307,10 @@ PeakMeter::meter_level(uint32_t n, MeterType type) {
void
PeakMeter::set_type(MeterType t)
{
+ if (t == _meter_type) {
+ return;
+ }
+
_meter_type = t;
if (t & MeterKrms) {