summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-05-16 16:43:00 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-05-31 15:30:42 -0400
commit38dde7f81841fc065a580139b256000e73701bdf (patch)
treeb2d4a3c0d346bacbd4d8bbe34a0d8d90dc095675 /libs
parentd7cce2ff7d7469f56753baabefc6cc4eedd1cfe3 (diff)
add Session::get_stripables()
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/session.h8
-rw-r--r--libs/ardour/session.cc10
2 files changed, 18 insertions, 0 deletions
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index 0dcad54b6c..eee58432f7 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -277,6 +277,14 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
return routes.reader ();
}
+ /* because the set of Stripables consists of objects managed
+ * independently, in multiple containers within the Session (or objects
+ * owned by the session), we fill out a list in-place rather than
+ * return a pointer to a copy of the (RCU) managed list, as happens
+ * with get_routes()
+ */
+
+ void get_stripables (StripableList&) const;
boost::shared_ptr<RouteList> get_tracks() const;
boost::shared_ptr<RouteList> get_routes_with_internal_returns() const;
boost::shared_ptr<RouteList> get_routes_with_regions_at (framepos_t const) const;
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 5d452728ee..ad3b23b2af 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -4013,6 +4013,16 @@ Session::update_route_solo_state (boost::shared_ptr<RouteList> r)
something_soloed, listeners, isolated));
}
+void
+Session::get_stripables (StripableList& sl) const
+{
+ boost::shared_ptr<RouteList> r = routes.reader ();
+ sl.insert (sl.end(), r->begin(), r->end());
+
+ VCAList v = _vca_manager->vcas ();
+ sl.insert (sl.end(), v.begin(), v.end());
+}
+
boost::shared_ptr<RouteList>
Session::get_routes_with_internal_returns() const
{