From 9ef5f4d1598d726d5b8380d91af2e546fd1cb2d1 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 9 Mar 2020 15:39:44 -0600 Subject: [PATCH] Session::have_looped must only be true when we locate because we reached the loop end Locating the start of the loop range at transport start does not count as "have looped". This was preventing pre-roll when starting to loop, which in turn caused data/event loss because the start/end sample ranges would be incorrect inside process --- libs/ardour/session_transport.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index 4e8a872b68..b8e2431aff 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -336,8 +336,10 @@ Session::locate (samplepos_t target_sample, bool with_roll, bool with_flush, boo } } - have_looped = true; - TransportLooped(); // EMIT SIGNAL + if (for_loop_end) { + have_looped = true; + TransportLooped(); // EMIT SIGNAL + } } } }