13
0

get_stripables and get_routelist are now presentationinfo aware

This commit is contained in:
Len Ovens 2018-11-07 13:02:49 -08:00
parent 41abf75077
commit 80fd215a5c
4 changed files with 26 additions and 11 deletions

View File

@ -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 */

View File

@ -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;

View File

@ -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 ()

View File

@ -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;
}