summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/ardour/presentation_info.h2
-rw-r--r--libs/ardour/ardour/session.h4
-rw-r--r--libs/ardour/presentation_info.cc6
-rw-r--r--libs/ardour/session.cc25
4 files changed, 26 insertions, 11 deletions
diff --git a/libs/ardour/ardour/presentation_info.h b/libs/ardour/ardour/presentation_info.h
index 842d18292c..41e11d9ba8 100644
--- a/libs/ardour/ardour/presentation_info.h
+++ b/libs/ardour/ardour/presentation_info.h
@@ -127,7 +127,9 @@ class LIBARDOUR_API PresentationInfo : public PBD::Stateful
};
static const Flag AllStripables; /* mask to use for any route or VCA (but not auditioner) */
+ static const Flag MixerStripables; /* mask to use for any route or VCA (but not auditioner or Listenbus) */
static const Flag AllRoutes; /* mask to use for any route include master+monitor, but not auditioner */
+ static const Flag MixerRoutes; /* mask to use for any route include master+monitor, but not auditioner or ListenBus*/
static const Flag Route; /* mask for any route (bus or track */
static const Flag Track; /* mask to use for any track */
static const Flag Bus; /* mask to use for any bus */
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index b5997a3a83..36f323a6d4 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -287,7 +287,7 @@ public:
boost::shared_ptr<RTTaskList> rt_tasklist () { return _rt_tasklist; }
- RouteList get_routelist (bool mixer_order = false) const;
+ RouteList get_routelist (bool mixer_order = false, PresentationInfo::Flag fl = PresentationInfo::MixerRoutes) const;
CoreSelection& selection () { return *_selection; }
@@ -298,7 +298,7 @@ public:
* with get_routes()
*/
- void get_stripables (StripableList&) const;
+ void get_stripables (StripableList&, PresentationInfo::Flag fl = PresentationInfo::MixerStripables) const;
StripableList get_stripables () const;
boost::shared_ptr<RouteList> get_tracks() const;
boost::shared_ptr<RouteList> get_routes_with_internal_returns() const;
diff --git a/libs/ardour/presentation_info.cc b/libs/ardour/presentation_info.cc
index 889a94d7dc..19c5830819 100644
--- a/libs/ardour/presentation_info.cc
+++ b/libs/ardour/presentation_info.cc
@@ -112,11 +112,13 @@ PresentationInfo::send_static_change (const PropertyChange& what_changed)
}
const PresentationInfo::order_t PresentationInfo::max_order = UINT32_MAX;
-const PresentationInfo::Flag PresentationInfo::Bus = PresentationInfo::Flag (PresentationInfo::AudioBus|PresentationInfo::MidiBus|PresentationInfo::ListenBus);
+const PresentationInfo::Flag PresentationInfo::Bus = PresentationInfo::Flag (PresentationInfo::AudioBus|PresentationInfo::MidiBus);
const PresentationInfo::Flag PresentationInfo::Track = PresentationInfo::Flag (PresentationInfo::AudioTrack|PresentationInfo::MidiTrack);
const PresentationInfo::Flag PresentationInfo::Route = PresentationInfo::Flag (PresentationInfo::Bus|PresentationInfo::Track);
-const PresentationInfo::Flag PresentationInfo::AllRoutes = PresentationInfo::Flag (PresentationInfo::Route|PresentationInfo::MasterOut|PresentationInfo::MonitorOut);
+const PresentationInfo::Flag PresentationInfo::AllRoutes = PresentationInfo::Flag (PresentationInfo::Route|PresentationInfo::MasterOut|PresentationInfo::MonitorOut|PresentationInfo::ListenBus);
+const PresentationInfo::Flag PresentationInfo::MixerRoutes = PresentationInfo::Flag (PresentationInfo::Route|PresentationInfo::MasterOut|PresentationInfo::MonitorOut);
const PresentationInfo::Flag PresentationInfo::AllStripables = PresentationInfo::Flag (PresentationInfo::AllRoutes|PresentationInfo::VCA);
+const PresentationInfo::Flag PresentationInfo::MixerStripables = PresentationInfo::Flag (PresentationInfo::MixerRoutes|PresentationInfo::VCA);
void
PresentationInfo::make_property_quarks ()
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 50e5825f68..235eb1451a 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -4235,30 +4235,41 @@ Session::cancel_all_mute ()
}
void
-Session::get_stripables (StripableList& sl) const
+Session::get_stripables (StripableList& sl, PresentationInfo::Flag fl) const
{
boost::shared_ptr<RouteList> r = routes.reader ();
- sl.insert (sl.end(), r->begin(), r->end());
+ for (RouteList::iterator it = r->begin(); it != r->end(); ++it) {
+ if ((*it)->presentation_info ().flags () & fl) {
+ sl.push_back (*it);
+ }
+ }
- VCAList v = _vca_manager->vcas ();
- sl.insert (sl.end(), v.begin(), v.end());
+ if (fl & PresentationInfo::VCA) {
+ VCAList v = _vca_manager->vcas ();
+ sl.insert (sl.end(), v.begin(), v.end());
+ }
}
StripableList
Session::get_stripables () const
{
+ PresentationInfo::Flag fl = PresentationInfo::AllStripables;
StripableList rv;
- Session::get_stripables (rv);
+ Session::get_stripables (rv, fl);
rv.sort (Stripable::Sorter ());
return rv;
}
RouteList
-Session::get_routelist (bool mixer_order) const
+Session::get_routelist (bool mixer_order, PresentationInfo::Flag fl) const
{
boost::shared_ptr<RouteList> r = routes.reader ();
RouteList rv;
- rv.insert (rv.end(), r->begin(), r->end());
+ for (RouteList::iterator it = r->begin(); it != r->end(); ++it) {
+ if ((*it)->presentation_info ().flags () & fl) {
+ rv.push_back (*it);
+ }
+ }
rv.sort (Stripable::Sorter (mixer_order));
return rv;
}