extend/modify PresentationInfo to make searching for routes via Session::get_remote_n...
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 6 Jun 2016 00:49:14 +0000 (20:49 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 6 Jun 2016 00:50:57 +0000 (20:50 -0400)
libs/ardour/ardour/presentation_info.h
libs/ardour/presentation_info.cc

index 0de0a3d8bc91e5bf63bd7f44a99b3bc5c598f0d6..5ad33ab1098fd03a8ab7b98631f01af0e71e3cb3 100644 (file)
@@ -128,9 +128,10 @@ class LIBARDOUR_API PresentationInfo : public PBD::Stateful
                StatusMask = (Selected|Hidden)
        };
 
-       static const Flag Route;
-       static const Flag Track;
-       static const Flag Bus;
+       static const Flag AllRoutes; /* mask to use for any route include master+monitor, but not auditioner */
+       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 */
 
        typedef uint32_t order_t;
        typedef uint32_t color_t;
@@ -193,11 +194,23 @@ class LIBARDOUR_API PresentationInfo : public PBD::Stateful
                        return true;
                }
                if (f == Route && (_flags & Route)) {
-                       /* any kind of route */
+                       /* any kind of route, but not master, monitor in
+                          or auditioner.
+                        */
                        return true;
                }
 
-               return f == _flags;
+               if (f == AllRoutes && (_flags & AllRoutes)) {
+                       /* any kind of route, but not auditioner. Ask for that
+                          specifically.
+                       */
+                       return true;
+               }
+
+               /* compare without status mask - we already checked that above 
+                */
+
+               return (f &~ (StatusMask|OrderSet)) == (_flags &~ (StatusMask|OrderSet));
        }
 
        int set_state (XMLNode const&, int);
index 5490f983beb66c84250e70beda9b1985998db00e..e6200371c393cc4448747c7765fc31ea995e3372 100644 (file)
@@ -51,6 +51,7 @@ const PresentationInfo::order_t PresentationInfo::max_order = UINT32_MAX;
 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);
 
 void
 PresentationInfo::make_property_quarks ()