FP8: ignore inactive muted tracks w/mute-clear
authorRobin Gareus <robin@gareus.org>
Fri, 5 May 2017 13:36:08 +0000 (15:36 +0200)
committerRobin Gareus <robin@gareus.org>
Fri, 5 May 2017 13:36:08 +0000 (15:36 +0200)
libs/surfaces/faderport8/actions.cc
libs/surfaces/faderport8/callbacks.cc

index a14c516c3c0cdb27d717f523ad70e3508ce9fc76..5789961ea1965c5432a27c6140413ad764a67424 100644 (file)
@@ -294,6 +294,10 @@ FaderPort8::button_mute_clear ()
                if ((*i)->is_auditioner() || (*i)->is_monitor()) {
                        continue;
                }
+               boost::shared_ptr<Route> r = boost::dynamic_pointer_cast<Route>(*i);
+               if (r && !r->active()) {
+                       continue;
+               }
                boost::shared_ptr<AutomationControl> ac = (*i)->mute_control();
                if (ac && ac->get_value () > 0) {
                        cl->push_back (ac);
index fa822bb8dfc9c87fb00ace83a7fcfa8dadf922a5..28fa9fd95448d8f0e5055569ba88df2e72baf33a 100644 (file)
@@ -197,11 +197,16 @@ void
 FaderPort8::notify_mute_changed ()
 {
        bool muted = false;
-       boost::shared_ptr<RouteList> rl = session->get_routes();
-       for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) {
+       StripableList all;
+       session->get_stripables (all);
+       for (StripableList::const_iterator i = all.begin(); i != all.end(); ++i) {
                if ((*i)->is_auditioner() || (*i)->is_monitor()) {
                        continue;
                }
+               boost::shared_ptr<Route> r = boost::dynamic_pointer_cast<Route>(*i);
+               if (r && !r->active()) {
+                       continue;
+               }
                boost::shared_ptr<MuteControl> mc = (*i)->mute_control();
                if (mc && mc->muted ()) {
                        muted = true;