From dec355e83d0f631916a034fec26e64a12ff2bad5 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 7 Dec 2019 10:30:27 -0700 Subject: fix behavior when pressing l to loop (not in loop-is-mode) and the required stop-during locate cancels looping --- libs/ardour/session_transport.cc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'libs/ardour/session_transport.cc') 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); } } -- cgit v1.2.3