From 3a3fcd0d2d9f0cc017d6ef655e87b624e50c90db Mon Sep 17 00:00:00 2001 From: Todd Naugle Date: Thu, 13 May 2021 12:07:41 -0500 Subject: [PATCH] Don't crash if master fader is not avaliable. If the wrong device profile is selected (ex Xtouch One) but another device is connected (Xtouch), it is possible to have a master fader on the device, but not in the code. This would then cause a crash when the master fader was touched. This just protects from a wrong configuration. --- libs/surfaces/mackie/mcp_buttons.cc | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/libs/surfaces/mackie/mcp_buttons.cc b/libs/surfaces/mackie/mcp_buttons.cc index 71eb2159a7..7df4ae49cf 100644 --- a/libs/surfaces/mackie/mcp_buttons.cc +++ b/libs/surfaces/mackie/mcp_buttons.cc @@ -860,27 +860,29 @@ MackieControlProtocol::user_b_release (Button &) LedState MackieControlProtocol::master_fader_touch_press (Mackie::Button &) { - DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::master_fader_touch_press\n"); + if (_master_surface && _master_surface->master_fader() != 0) { + DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::master_fader_touch_press\n"); - Fader* master_fader = _master_surface->master_fader(); + Fader* master_fader = _master_surface->master_fader(); - boost::shared_ptr ac = master_fader->control (); - - master_fader->set_in_use (true); - master_fader->start_touch (transport_sample()); + boost::shared_ptr ac = master_fader->control (); + master_fader->set_in_use (true); + master_fader->start_touch (transport_sample()); + } return none; } LedState MackieControlProtocol::master_fader_touch_release (Mackie::Button &) { - DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::master_fader_touch_release\n"); + if (_master_surface && _master_surface->master_fader() != 0) { + DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::master_fader_touch_release\n"); - Fader* master_fader = _master_surface->master_fader(); - - master_fader->set_in_use (false); - master_fader->stop_touch (transport_sample()); + Fader* master_fader = _master_surface->master_fader(); + master_fader->set_in_use (false); + master_fader->stop_touch (transport_sample()); + } return none; }