diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index a5bcefcb17..85b92cbeab 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -316,8 +316,10 @@ MackieControlProtocol::switch_banks (uint32_t initial, bool force) uint32_t strip_cnt = n_strips (false); // do not include locked strips // in this count - if (sorted.size() <= strip_cnt && !force) { - /* no banking - not enough routes to fill all strips */ + if (sorted.size() <= strip_cnt && _current_initial_bank == 0 && !force) { + /* no banking - not enough routes to fill all strips and we're + * not at the first one. + */ return; } diff --git a/libs/surfaces/mackie/mcp_buttons.cc b/libs/surfaces/mackie/mcp_buttons.cc index f87e0fa4fd..c864b5b871 100644 --- a/libs/surfaces/mackie/mcp_buttons.cc +++ b/libs/surfaces/mackie/mcp_buttons.cc @@ -102,16 +102,13 @@ MackieControlProtocol::left_press (Button &) DEBUG_TRACE (DEBUG::MackieControl, string_compose ("bank left with current initial = %1 nstrips = %2 tracks/busses = %3\n", _current_initial_bank, strip_cnt, route_cnt)); - if (route_cnt && route_cnt > strip_cnt) { - if (_current_initial_bank > strip_cnt) { - switch_banks (_current_initial_bank - strip_cnt); - } else { - switch_banks (0); - } - - return on; + if (_current_initial_bank > strip_cnt) { + switch_banks (_current_initial_bank - strip_cnt); + } else { + switch_banks (0); } - return off; + + return on; } LedState @@ -128,15 +125,12 @@ MackieControlProtocol::right_press (Button &) uint32_t route_cnt = sorted.size(); DEBUG_TRACE (DEBUG::MackieControl, string_compose ("bank right with current initial = %1 nstrips = %2 tracks/busses = %3\n", - _current_initial_bank, strip_cnt, sorted.size())); + _current_initial_bank, strip_cnt, route_cnt)); - if (route_cnt && route_cnt > strip_cnt) { - uint32_t new_initial = std::min (_current_initial_bank + strip_cnt, route_cnt - 1); - switch_banks (new_initial); - return on; - } + uint32_t new_initial = std::min (_current_initial_bank + strip_cnt, route_cnt - 1); + switch_banks (new_initial); - return off; + return on; } LedState