summaryrefslogtreecommitdiff
path: root/gtk2_ardour/meterbridge.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-07-05 06:23:43 +0200
committerRobin Gareus <robin@gareus.org>2013-07-10 15:27:09 +0200
commit40493e06eed6bcf8fdda4105f0adb4a9cd01eccf (patch)
treef6cd66049b7d360cf57f9b06f758464c88e7b126 /gtk2_ardour/meterbridge.cc
parent6e661e734b5910f80895acdda50443f837a7cab2 (diff)
dynamically change metebridge metrics (midi|audio)
Diffstat (limited to 'gtk2_ardour/meterbridge.cc')
-rw-r--r--gtk2_ardour/meterbridge.cc20
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