diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-04-26 16:18:03 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-04-26 16:18:03 +0000 |
commit | 834f94c60a7f6ff2b0695096e9dbcd340dbca3af (patch) | |
tree | dece708d97110d03dad26e5bab686f3c1b32f7ee /libs/surfaces/mackie/mcp_buttons.cc | |
parent | 3b7e2f7d67ad87bfb0ce183c10e9d00e71b6b085 (diff) |
fix initialization of control protocols so that brand new sessions get working control protocols if the user's ardour.rc file indicates to do so; fix MCP bank scrolling
git-svn-id: svn://localhost/ardour2/branches/3.0@12096 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces/mackie/mcp_buttons.cc')
-rw-r--r-- | libs/surfaces/mackie/mcp_buttons.cc | 41 |
1 files changed, 16 insertions, 25 deletions
diff --git a/libs/surfaces/mackie/mcp_buttons.cc b/libs/surfaces/mackie/mcp_buttons.cc index f8ebedb7b9..6ded9a9d20 100644 --- a/libs/surfaces/mackie/mcp_buttons.cc +++ b/libs/surfaces/mackie/mcp_buttons.cc @@ -17,6 +17,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include <algorithm> + #include "pbd/memento_command.h" #include "ardour/debug.h" @@ -94,25 +96,22 @@ LedState MackieControlProtocol::left_press (Button &) { Sorted sorted = get_sorted_routes(); - uint32_t strip_cnt = n_strips (); + uint32_t strip_cnt = n_strips (); + uint32_t route_cnt = sorted.size(); 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())); + _current_initial_bank, strip_cnt, route_cnt)); - if (sorted.size() > strip_cnt) { - int new_initial = _current_initial_bank - strip_cnt; - if (new_initial < 0) { - new_initial = 0; - } - - if (new_initial != int (_current_initial_bank)) { - switch_banks (new_initial); + 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; - } else { - return flashing; } + return off; } LedState @@ -126,25 +125,17 @@ MackieControlProtocol::right_press (Button &) { Sorted sorted = get_sorted_routes(); uint32_t strip_cnt = n_strips(); + 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())); - if (sorted.size() > strip_cnt) { - uint32_t delta = sorted.size() - (strip_cnt + _current_initial_bank); - - if (delta > strip_cnt) { - delta = strip_cnt; - } - - if (delta > 0) { - switch_banks (_current_initial_bank + delta); - } - + 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; - } else { - return flashing; } + return off; } |