summaryrefslogtreecommitdiff
path: root/libs/ardour/session_transport.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-12-07 10:30:27 -0700
committerPaul Davis <paul@linuxaudiosystems.com>2019-12-07 10:30:38 -0700
commitdec355e83d0f631916a034fec26e64a12ff2bad5 (patch)
tree2faf4d7d220d531ccf7c8fa89a0cad699038b37f /libs/ardour/session_transport.cc
parent709a0c8d9bad152216dda80651ea1359e260a22b (diff)
fix behavior when pressing l to loop (not in loop-is-mode) and the required stop-during locate cancels looping
Diffstat (limited to 'libs/ardour/session_transport.cc')
-rw-r--r--libs/ardour/session_transport.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc
index e35a28bf15..13d99a9b11 100644
--- a/libs/ardour/session_transport.cc
+++ b/libs/ardour/session_transport.cc
@@ -1609,10 +1609,17 @@ Session::set_play_loop (bool yn, bool change_transport_state)
merge_event (new SessionEvent (SessionEvent::AutoLoop, SessionEvent::Replace, loc->end(), loc->start(), 0.0f));
- if (!Config->get_loop_is_mode() && !transport_rolling()) {
+ if (!Config->get_loop_is_mode()) {
/* args: positition, roll=true, flush=true, for_loop_end=false, force buffer, refill looping */
-
+ /* set this so that when/if we stop for locate,
+ we do not call unset_play_loop(). This is a
+ crude mechanism. Got a better idea?
+ */
+ loop_changing = true;
TFSM_LOCATE (loc->start(), true, true, false, true);
+ } else if (!transport_rolling()) {
+ /* loop-is-mode: not rolling, just locate to loop start */
+ TFSM_LOCATE (loc->start(), false, true, false, true);
}
}