diff options
Diffstat (limited to 'gtk2_ardour/meterbridge.cc')
-rw-r--r-- | gtk2_ardour/meterbridge.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc index 00ba3d43ec..57a7a77bf1 100644 --- a/gtk2_ardour/meterbridge.cc +++ b/gtk2_ardour/meterbridge.cc @@ -147,6 +147,7 @@ Meterbridge::Meterbridge () MeterStrip::CatchDeletion.connect (*this, invalidator (*this), boost::bind (&Meterbridge::remove_strip, this, _1), gui_context()); MeterStrip::ResetAllPeakDisplays.connect_same_thread (*this, boost::bind(&Meterbridge::reset_all_peaks, this)); MeterStrip::ResetGroupPeakDisplays.connect_same_thread (*this, boost::bind (&Meterbridge::reset_group_peaks, this, _1)); + MeterStrip::MetricChanged.connect_same_thread (*this, boost::bind(&Meterbridge::update_metrics, this)); global_hpacker.set_spacing(0); scroller.add (global_hpacker); @@ -426,6 +427,7 @@ Meterbridge::add_strips (RouteList& routes) } sync_order_keys(MixerSort); + update_metrics(); } void @@ -439,6 +441,24 @@ Meterbridge::remove_strip (MeterStrip* strip) if ((i = find (strips.begin(), strips.end(), strip)) != strips.end()) { strips.erase (i); } + update_metrics(); +} + +void +Meterbridge::update_metrics () +{ + bool have_midi = false; + for (list<MeterStrip *>::iterator i = strips.begin(); i != strips.end(); ++i) { + if ( (*i)->has_midi ()) { + have_midi = true; + break; + } + } + if (have_midi) { + metrics_right->set_metric_mode(3); + } else { + metrics_right->set_metric_mode(4); + } } void |