clear + re-init faderport at disconnect
authorRobin Gareus <robin@gareus.org>
Tue, 18 Apr 2017 01:20:33 +0000 (03:20 +0200)
committerRobin Gareus <robin@gareus.org>
Tue, 18 Apr 2017 01:20:33 +0000 (03:20 +0200)
libs/surfaces/faderport8/faderport8.cc
libs/surfaces/faderport8/fp8_controls.cc
libs/surfaces/faderport8/fp8_controls.h

index 2dd57eac16c141b019aad4f196a458025fc77f89..2eb24a15543ba31445927ed1569ef1288cd59ea5 100644 (file)
@@ -136,7 +136,7 @@ FaderPort8::FaderPort8 (Session& s)
 FaderPort8::~FaderPort8 ()
 {
        cerr << "~FP8\n";
-       stop_midi_handling  ();
+       disconnected ();
        close ();
 
        if (_input_port) {
@@ -328,8 +328,11 @@ void
 FaderPort8::disconnected ()
 {
        stop_midi_handling ();
-       for (uint8_t id = 0; id < 8; ++id) {
-               _ctrls.strip(id).unset_controllables ();
+       if (_device_active) {
+               for (uint8_t id = 0; id < 8; ++id) {
+                       _ctrls.strip(id).unset_controllables ();
+               }
+               _ctrls.all_lights_off ();
        }
 }
 
index 5a06dc75e545f4030a1979d2201d355118b0ce74..4626afd1f99ed1a4ddbd09905ca3b87cd346df09 100644 (file)
@@ -266,9 +266,7 @@ FP8Controls::initialize ()
        }
 
        /* initally turn all lights off */
-       for (CtrlButtonMap::const_iterator i = _ctrlmap.begin (); i != _ctrlmap.end (); ++i) {
-               i->second->set_active (false);
-       }
+       all_lights_off ();
 
        /* default modes */
        button (BtnMaster).set_active (true);
@@ -278,6 +276,13 @@ FP8Controls::initialize ()
 
        FP8ButtonInterface::force_change = false;
 }
+void
+FP8Controls::all_lights_off () const
+{
+       for (CtrlButtonMap::const_iterator i = _ctrlmap.begin (); i != _ctrlmap.end (); ++i) {
+               i->second->set_active (false);
+       }
+}
 
 FP8ButtonInterface&
 FP8Controls::button (ButtonId id)
index 157435b05911b255986c4aa75518059a3de6dfe9..868063c16d86b37d19d49f987ef8c573e2a0f580 100644 (file)
@@ -137,7 +137,9 @@ public:
        bool midi_event (uint8_t id, uint8_t val);
        bool midi_touch (uint8_t id, uint8_t val);
        bool midi_fader (uint8_t id, unsigned short val);
+
        void initialize ();
+       void all_lights_off () const;
 
        void set_fader_mode (FP8Types::FaderMode);
 protected: