diff options
author | Robin Gareus <robin@gareus.org> | 2013-07-06 22:48:43 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-07-10 15:27:12 +0200 |
commit | a181009caefd5fe9efb73fff7c0c663dc8415e0a (patch) | |
tree | c90cbfba5349a07dbcb5291a17a62562488be32d /gtk2_ardour/meterbridge.h | |
parent | b2beb11c8dda45a4cd36f2f0d763033b87be531e (diff) |
meterbridge: ignore non-visible routes/meters.
Diffstat (limited to 'gtk2_ardour/meterbridge.h')
-rw-r--r-- | gtk2_ardour/meterbridge.h | 29 |
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; |