summaryrefslogtreecommitdiff
path: root/gtk2_ardour/meterbridge.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-07-06 22:48:43 +0200
committerRobin Gareus <robin@gareus.org>2013-07-10 15:27:12 +0200
commita181009caefd5fe9efb73fff7c0c663dc8415e0a (patch)
treec90cbfba5349a07dbcb5291a17a62562488be32d /gtk2_ardour/meterbridge.h
parentb2beb11c8dda45a4cd36f2f0d763033b87be531e (diff)
meterbridge: ignore non-visible routes/meters.
Diffstat (limited to 'gtk2_ardour/meterbridge.h')
-rw-r--r--gtk2_ardour/meterbridge.h29
1 files changed, 28 insertions, 1 deletions
diff --git a/gtk2_ardour/meterbridge.h b/gtk2_ardour/meterbridge.h
index faa107c14e..e8ab97d93b 100644
--- a/gtk2_ardour/meterbridge.h
+++ b/gtk2_ardour/meterbridge.h
@@ -82,7 +82,34 @@ class Meterbridge :
void sync_order_keys (ARDOUR::RouteSortOrderKey src);
void resync_order ();
- std::list<MeterStrip *> strips;
+ struct MeterBridgeStrip {
+ MeterStrip *s;
+ bool visible;
+
+ MeterBridgeStrip(MeterStrip *ss) {
+ s = ss;
+ visible = true;
+ }
+ };
+
+ struct MeterOrderRouteSorter {
+ bool operator() (struct MeterBridgeStrip ma, struct MeterBridgeStrip mb) {
+ boost::shared_ptr<ARDOUR::Route> a = ma.s->route();
+ boost::shared_ptr<ARDOUR::Route> b = mb.s->route();
+ if (a->is_master() || a->is_monitor()) {
+ /* "a" is a special route (master, monitor, etc), and comes
+ * last in the mixer ordering
+ */
+ return false;
+ } else if (b->is_master() || b->is_monitor()) {
+ /* everything comes before b */
+ return true;
+ }
+ return a->order_key (ARDOUR::MixerSort) < b->order_key (ARDOUR::MixerSort);
+ }
+ };
+
+ std::list<MeterBridgeStrip> strips;
MeterStrip metrics_left;
MeterStrip metrics_right;