diff options
Diffstat (limited to 'libs/ardour/ardour/session_route.h')
-rw-r--r-- | libs/ardour/ardour/session_route.h | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/libs/ardour/ardour/session_route.h b/libs/ardour/ardour/session_route.h index 19d8614d1b..61a5737afa 100644 --- a/libs/ardour/ardour/session_route.h +++ b/libs/ardour/ardour/session_route.h @@ -30,27 +30,29 @@ namespace ARDOUR { template<class T> void -Session::foreach_route (T *obj, void (T::*func)(Route&)) +Session::foreach_route (T *obj, void (T::*func)(Route&), bool sort) { boost::shared_ptr<RouteList> r = routes.reader(); RouteList public_order (*r); - RoutePublicOrderSorter cmp; - - public_order.sort (cmp); - + + if (sort) { + public_order.sort (RoutePublicOrderSorter()); + } + for (RouteList::iterator i = public_order.begin(); i != public_order.end(); i++) { (obj->*func) (**i); } } template<class T> void -Session::foreach_route (T *obj, void (T::*func)(boost::shared_ptr<Route>)) +Session::foreach_route (T *obj, void (T::*func)(boost::shared_ptr<Route>), bool sort) { boost::shared_ptr<RouteList> r = routes.reader(); RouteList public_order (*r); - RoutePublicOrderSorter cmp; - public_order.sort (cmp); + if (sort) { + public_order.sort (RoutePublicOrderSorter()); + } for (RouteList::iterator i = public_order.begin(); i != public_order.end(); i++) { (obj->*func) (*i); @@ -58,13 +60,14 @@ Session::foreach_route (T *obj, void (T::*func)(boost::shared_ptr<Route>)) } template<class T, class A> void -Session::foreach_route (T *obj, void (T::*func)(Route&, A), A arg1) +Session::foreach_route (T *obj, void (T::*func)(Route&, A), A arg1, bool sort) { boost::shared_ptr<RouteList> r = routes.reader(); RouteList public_order (*r); - RoutePublicOrderSorter cmp; - - public_order.sort (cmp); + + if (sort) { + public_order.sort (RoutePublicOrderSorter()); + } for (RouteList::iterator i = public_order.begin(); i != public_order.end(); i++) { (obj->*func) (**i, arg1); |