diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2020-03-09 15:39:44 -0600 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2020-03-09 15:40:21 -0600 |
commit | 9ef5f4d1598d726d5b8380d91af2e546fd1cb2d1 (patch) | |
tree | 65d0a06d78de6d1a00a81dbf692f6358df3f422a | |
parent | 1d17993a292c914a630f460ce34c098bfa535226 (diff) |
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
-rw-r--r-- | libs/ardour/session_transport.cc | 6 |
1 files 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 + } } } } |