get_stripables and get_routelist are now presentationinfo aware
authorLen Ovens <len@ovenwerks.net>
Wed, 7 Nov 2018 21:02:49 +0000 (13:02 -0800)
committerLen Ovens <len@ovenwerks.net>
Thu, 8 Nov 2018 01:00:16 +0000 (17:00 -0800)
libs/ardour/ardour/presentation_info.h
libs/ardour/ardour/session.h
libs/ardour/presentation_info.cc
libs/ardour/session.cc

index 842d18292c7b07b237b3cbf47214faa72851cdb7..41e11d9ba82cdc7ab99d30fea1b190c4579a11fb 100644 (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 */
index b5997a3a8365eb0c1f4e3eed31714cbb81298cf0..36f323a6d459339c2071a4996076b1cd4e77d46e 100644 (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;
index 889a94d7dc3da59c0dbd3fc9ba7c0585f61f7b83..19c583081974216034f869c5be2ebb28524a44b9 100644 (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 ()
index 50e5825f68c1114929ad166aa969418d868861f8..235eb1451a0653239ecb93bb581555acdf95edd8 100644 (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;
 }