make Session::get_remote_nth_stripable() ignore hidden stripables unless asked.
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 1 Aug 2016 16:02:30 +0000 (12:02 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 1 Aug 2016 16:02:30 +0000 (12:02 -0400)
this more closely matches the semantics of ye olde get_*_by_rid() from ardour 4.x and earlier

libs/ardour/session.cc

index 99efc1cb7276fc9a8ac9504a6ca25c7d207c8b05..61bfce14b6bfc995f0203b44e42bdf17652e60d8 100644 (file)
@@ -4244,6 +4244,24 @@ Session::get_remote_nth_stripable (PresentationInfo::order_t n, PresentationInfo
        sl.sort (Stripable::PresentationOrderSorter());
 
        for (StripableList::const_iterator s = sl.begin(); s != sl.end(); ++s) {
+
+               if ((*s)->presentation_info().hidden()) {
+                       /* if the caller didn't explicitly ask for hidden
+                          stripables, ignore hidden ones. This matches
+                          the semantics of the pre-PresentationOrder
+                          "get by RID" logic of Ardour 4.x and earlier.
+
+                          XXX at some point we should likely reverse
+                          the logic of the flags, because asking for "the
+                          hidden stripables" is not going to be common,
+                          whereas asking for visible ones is normal.
+                       */
+
+                       if (! (flags & PresentationInfo::Hidden)) {
+                               continue;
+                       }
+               }
+
                if ((*s)->presentation_info().flag_match (flags)) {
                        if (match_cnt++ == n) {
                                return *s;