summaryrefslogtreecommitdiff
path: root/libs/surfaces
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-05-26 10:21:55 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2015-05-27 07:11:15 -0400
commite5c3efe9a313407b93fc0092fb9676138248ad52 (patch)
treea704636c566a3f2b89d46a034626f367f899a1f4 /libs/surfaces
parentf9abce03a9df6a53d388b4778b72e3b8edb57bf3 (diff)
ensure that Mackie Control bank left/right commands always hit the same boundary (Len Ovens)
Diffstat (limited to 'libs/surfaces')
-rw-r--r--libs/surfaces/mackie/mcp_buttons.cc17
1 files changed, 10 insertions, 7 deletions
diff --git a/libs/surfaces/mackie/mcp_buttons.cc b/libs/surfaces/mackie/mcp_buttons.cc
index a1ea089399..ee04d681b5 100644
--- a/libs/surfaces/mackie/mcp_buttons.cc
+++ b/libs/surfaces/mackie/mcp_buttons.cc
@@ -103,11 +103,7 @@ 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, sorted.size()));
- if (_current_initial_bank > strip_cnt) {
- switch_banks (_current_initial_bank - strip_cnt);
- } else {
- switch_banks (0);
- }
+ switch_banks ((_current_initial_bank - 1) / strip_cnt * strip_cnt);
return on;
}
@@ -124,12 +120,19 @@ MackieControlProtocol::right_press (Button &)
Sorted sorted = get_sorted_routes();
uint32_t strip_cnt = n_strips();
uint32_t route_cnt = sorted.size();
+ uint32_t max_bank = route_cnt / strip_cnt * strip_cnt;
+
DEBUG_TRACE (DEBUG::MackieControl, string_compose ("bank right with current initial = %1 nstrips = %2 tracks/busses = %3\n",
_current_initial_bank, strip_cnt, route_cnt));
- uint32_t new_initial = std::min (_current_initial_bank + strip_cnt, route_cnt - 1);
- switch_banks (new_initial);
+ if (_current_initial_bank < max_bank) {
+ uint32_t new_initial = (_current_initial_bank / strip_cnt * strip_cnt) + strip_cnt;
+
+ switch_banks (new_initial);
+ } else {
+ switch_banks (max_bank);
+ }
return on;
}