delete slave during Session::destroy
[ardour.git] / libs / surfaces / faderport8 / callbacks.cc
index ebd6869b8e7e30d6093f88261a6963f640261e7d..fd5d1407cbae09cd61203fac138dc98843e6fd69 100644 (file)
@@ -100,6 +100,7 @@ FaderPort8::notify_automation_mode_changed ()
        _ctrls.button (FP8Controls::BtnATouch).set_active (as == Touch);
        _ctrls.button (FP8Controls::BtnARead).set_active (as == Play);
        _ctrls.button (FP8Controls::BtnAWrite).set_active (as == Write);
+       _ctrls.button (FP8Controls::BtnALatch).set_active (as == Latch);
 }
 
 void
@@ -187,6 +188,9 @@ void
 FaderPort8::notify_solo_changed ()
 {
        bool soloing = session->soloing() || session->listening();
+#ifdef MIXBUS
+       soloing |= session->mixbus_soloed();
+#endif
        _ctrls.button (FP8Controls::BtnSoloClear).set_active (soloing);
 #ifdef FP8_MUTESOLO_UNDO
        if (soloing) {
@@ -227,7 +231,7 @@ FaderPort8::nofity_focus_control (boost::weak_ptr<PBD::Controllable> c)
        // TODO consider subscribing to c's DropReferences
        // (in case the control goes away while it has focus, update the BtnColor)
        _link_control = c;
-       if (c.expired ()) {
+       if (c.expired () || 0 == boost::dynamic_pointer_cast<AutomationControl> (_link_control.lock ())) {
                _ctrls.button (FP8Controls::BtnLink).set_color (0xff8800ff);
                _ctrls.button (FP8Controls::BtnLock).set_color (0xff0000ff);
        } else {