diff --git a/libs/surfaces/faderport8/fp8_strip.cc b/libs/surfaces/faderport8/fp8_strip.cc index 071a6e2cb0..7c4d01165f 100644 --- a/libs/surfaces/faderport8/fp8_strip.cc +++ b/libs/surfaces/faderport8/fp8_strip.cc @@ -57,21 +57,31 @@ FP8Strip::FP8Strip (FP8Base& b, uint8_t id) } FP8Strip::~FP8Strip () +{ + drop_automation_controls (); + _base_connection.disconnect (); + _button_connections.drop_connections (); +} + +void +FP8Strip::drop_automation_controls () { _fader_connection.disconnect (); _mute_connection.disconnect (); _solo_connection.disconnect (); _rec_connection.disconnect (); _pan_connection.disconnect (); + _x_select_connection.disconnect (); _fader_ctrl.reset (); _mute_ctrl.reset (); _solo_ctrl.reset (); _rec_ctrl.reset (); _pan_ctrl.reset (); - - _base_connection.disconnect (); - _button_connections.drop_connections (); + _x_select_ctrl.reset (); + _peak_meter.reset (); + _redux_ctrl.reset (); + _select_plugin_functor.clear (); } void @@ -87,9 +97,7 @@ FP8Strip::initialize () _mute.reset (); _solo.reset (); - /* clear cached values */ - _last_fader = 65535; - _last_meter = _last_redux = _last_barpos = 0xff; + drop_automation_controls (); select_button ().set_color (0xffffffff); select_button ().set_active (false); @@ -116,6 +124,10 @@ FP8Strip::initialize () _base.tx_midi2 (0xd8 + _id, 0); // reset redux _base.tx_midi3 (0xe0 + _id, 0, 0); // fader + + /* clear cached values */ + _last_fader = 65535; + _last_meter = _last_redux = _last_barpos = 0xff; } diff --git a/libs/surfaces/faderport8/fp8_strip.h b/libs/surfaces/faderport8/fp8_strip.h index 366dca97f2..9c8c16c2a5 100644 --- a/libs/surfaces/faderport8/fp8_strip.h +++ b/libs/surfaces/faderport8/fp8_strip.h @@ -128,6 +128,8 @@ private: void set_x_select_controllable (boost::shared_ptr); boost::function _select_plugin_functor; + void drop_automation_controls (); + PBD::Controllable::GroupControlDisposition group_mode () const; /* notifications, update view */