summaryrefslogtreecommitdiff
path: root/libs/surfaces/faderport8
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-04-18 03:20:33 +0200
committerRobin Gareus <robin@gareus.org>2017-04-18 03:20:33 +0200
commit629b5e0446beee9ba0627b608119cd46fd8206da (patch)
treeba14a319f3cc19511d8957ea0945e0988c1c0ef1 /libs/surfaces/faderport8
parentdbb3c47eee3c0f8d2111697533d524f95d8b8a08 (diff)
clear + re-init faderport at disconnect
Diffstat (limited to 'libs/surfaces/faderport8')
-rw-r--r--libs/surfaces/faderport8/faderport8.cc9
-rw-r--r--libs/surfaces/faderport8/fp8_controls.cc11
-rw-r--r--libs/surfaces/faderport8/fp8_controls.h2
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: