diff options
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/session.h | 6 | ||||
-rw-r--r-- | libs/ardour/ardour/session_route.h | 27 |
3 files changed, 19 insertions, 16 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 4d38d71c85..a81d817442 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -1420,7 +1420,7 @@ ARDOUR_UI::update_disk_space() snprintf (buf, sizeof (buf), "%s", _("Disk: <span foreground=\"green\">24hrs+</span>")); } else { rec_enabled_streams = 0; - _session->foreach_route (this, &ARDOUR_UI::count_recenabled_streams); + _session->foreach_route (this, &ARDOUR_UI::count_recenabled_streams, false); framecnt_t frames = opt_frames.get_value_or (0); diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index ad5f236a84..6329b29ad2 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -247,9 +247,9 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop void notify_remote_id_change (); void sync_order_keys (); - template<class T> void foreach_route (T *obj, void (T::*func)(Route&)); - template<class T> void foreach_route (T *obj, void (T::*func)(boost::shared_ptr<Route>)); - template<class T, class A> void foreach_route (T *obj, void (T::*func)(Route&, A), A arg); + template<class T> void foreach_route (T *obj, void (T::*func)(Route&), bool sort = true); + template<class T> void foreach_route (T *obj, void (T::*func)(boost::shared_ptr<Route>), bool sort = true); + template<class T, class A> void foreach_route (T *obj, void (T::*func)(Route&, A), A arg, bool sort = true); static char session_name_is_legal (const std::string&); bool io_name_is_legal (const std::string&); 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); |