diff options
author | Robin Gareus <robin@gareus.org> | 2013-07-05 06:23:43 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-07-10 15:27:09 +0200 |
commit | 40493e06eed6bcf8fdda4105f0adb4a9cd01eccf (patch) | |
tree | f6cd66049b7d360cf57f9b06f758464c88e7b126 /gtk2_ardour/meterbridge.cc | |
parent | 6e661e734b5910f80895acdda50443f837a7cab2 (diff) |
dynamically change metebridge metrics (midi|audio)
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 |