summaryrefslogtreecommitdiff
path: root/libs/ardour/session_midi.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/session_midi.cc')
-rw-r--r--libs/ardour/session_midi.cc15
1 files changed, 9 insertions, 6 deletions
diff --git a/libs/ardour/session_midi.cc b/libs/ardour/session_midi.cc
index f3a8d7dd81..e53970840b 100644
--- a/libs/ardour/session_midi.cc
+++ b/libs/ardour/session_midi.cc
@@ -338,21 +338,24 @@ Session::mmc_shuttle (MIDI::MachineControl &/*mmc*/, float speed, bool forw)
boost::shared_ptr<Route>
Session::get_midi_nth_route_by_id (PresentationInfo::order_t n) const
{
- PresentationInfo id (PresentationInfo::Flag (0));
+ PresentationInfo::Flag f;
if (n == 318) {
- id.set_flags (PresentationInfo::MasterOut);
+ f = PresentationInfo::MasterOut;
} else if (n == 319) {
- id.set_flags (PresentationInfo::MonitorOut);
+ f = PresentationInfo::MonitorOut;
} else {
- id = PresentationInfo (n, PresentationInfo::Route);
+ f = PresentationInfo::Route;
}
boost::shared_ptr<RouteList> r = routes.reader ();
+ PresentationInfo::order_t match_cnt = 0;
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
- if ((*i)->presentation_info().match (id)) {
- return *i;
+ if ((*i)->presentation_info().flag_match (f)) {
+ if (match_cnt++ == n) {
+ return *i;
+ }
}
}