From 629b5e0446beee9ba0627b608119cd46fd8206da Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 18 Apr 2017 03:20:33 +0200 Subject: clear + re-init faderport at disconnect --- libs/surfaces/faderport8/faderport8.cc | 9 ++++++--- libs/surfaces/faderport8/fp8_controls.cc | 11 ++++++++--- libs/surfaces/faderport8/fp8_controls.h | 2 ++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/libs/surfaces/faderport8/faderport8.cc b/libs/surfaces/faderport8/faderport8.cc index 2dd57eac16..2eb24a1554 100644 --- a/libs/surfaces/faderport8/faderport8.cc +++ b/libs/surfaces/faderport8/faderport8.cc @@ -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 (); } } diff --git a/libs/surfaces/faderport8/fp8_controls.cc b/libs/surfaces/faderport8/fp8_controls.cc index 5a06dc75e5..4626afd1f9 100644 --- a/libs/surfaces/faderport8/fp8_controls.cc +++ b/libs/surfaces/faderport8/fp8_controls.cc @@ -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) diff --git a/libs/surfaces/faderport8/fp8_controls.h b/libs/surfaces/faderport8/fp8_controls.h index 157435b059..868063c16d 100644 --- a/libs/surfaces/faderport8/fp8_controls.h +++ b/libs/surfaces/faderport8/fp8_controls.h @@ -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: -- cgit v1.2.3