summaryrefslogtreecommitdiff
path: root/libs/surfaces/control_protocol
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-04-30 10:54:32 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-04-30 10:54:40 -0400
commit8b52b698104f336053f2228370139d821b7c43c1 (patch)
treeb063098d7ce34f78f3dcb60f06e2b52a4cdcc18d /libs/surfaces/control_protocol
parenta725fde23de327085992985eb12afa74d9ad312b (diff)
make BasicUI (for control surfaces) loop toggle work like the GUI
Diffstat (limited to 'libs/surfaces/control_protocol')
-rw-r--r--libs/surfaces/control_protocol/basic_ui.cc31
1 files changed, 28 insertions, 3 deletions
diff --git a/libs/surfaces/control_protocol/basic_ui.cc b/libs/surfaces/control_protocol/basic_ui.cc
index fc48b40175..161135390f 100644
--- a/libs/surfaces/control_protocol/basic_ui.cc
+++ b/libs/surfaces/control_protocol/basic_ui.cc
@@ -70,14 +70,39 @@ BasicUI::access_action ( std::string action_path )
void
BasicUI::loop_toggle ()
{
+ if (!session) {
+ return;
+ }
+
+ Location * looploc = session->locations()->auto_loop_location();
+
+ if (!looploc) {
+ return;
+ }
+
if (session->get_play_loop()) {
+
+ /* looping enabled, our job is to disable it */
+
session->request_play_loop (false);
+
} else {
- session->request_play_loop (true);
- if (!session->transport_rolling()) {
- session->request_transport_speed (1.0);
+
+ /* looping not enabled, our job is to enable it.
+
+ loop-is-NOT-mode: this action always starts the transport rolling.
+ loop-IS-mode: this action simply sets the loop play mechanism, but
+ does not start transport.
+ */
+ if (Config->get_loop_is_mode()) {
+ session->request_play_loop (true, false);
+ } else {
+ session->request_play_loop (true, true);
}
}
+
+ //show the loop markers
+ looploc->set_hidden (false, this);
}
void