summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-04-27 20:35:45 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-04-27 20:35:45 +0000
commitd1af0b89a847fbde9a30a95e0198380ff6f4e68d (patch)
treecb6ab5cc4187896e5a5d59b01dfa72f0b5e46abf
parent66255a13c1cc8d819ed7c2ff0d9e72e85e89217c (diff)
MCP: failure to rebank for cases where num_routes < num_strips but we're not on bank 0
git-svn-id: svn://localhost/ardour2/branches/3.0@12112 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.cc6
-rw-r--r--libs/surfaces/mackie/mcp_buttons.cc26
2 files changed, 14 insertions, 18 deletions
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