diff options
author | Robin Gareus <robin@gareus.org> | 2017-04-18 15:01:54 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-04-18 15:01:54 +0200 |
commit | 3243e17c71bea6430826dae7dafc1adf1bf0a8b3 (patch) | |
tree | 3377e50d1f57998fd90b93f3bbf99b759a41d7bd /libs | |
parent | bce08cf4f37b2bbd33345fb7296a6ced04eb652a (diff) |
FP8: allow to re-initialize the Strips w/o restart
Diffstat (limited to 'libs')
-rw-r--r-- | libs/surfaces/faderport8/fp8_strip.cc | 24 | ||||
-rw-r--r-- | libs/surfaces/faderport8/fp8_strip.h | 2 |
2 files changed, 20 insertions, 6 deletions
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 @@ -58,20 +58,30 @@ 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<ARDOUR::AutomationControl>); boost::function<void ()> _select_plugin_functor; + void drop_automation_controls (); + PBD::Controllable::GroupControlDisposition group_mode () const; /* notifications, update view */ |