summaryrefslogtreecommitdiff
path: root/libs/ardour/session_transport.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-11-08 17:08:47 +0100
committerRobin Gareus <robin@gareus.org>2019-11-08 17:50:13 +0100
commit08fdb982629e81b5f89740f7db6eaf13801c8edc (patch)
tree51fc02bc9af21aad8204c2c2de9f15fc2ad00de0 /libs/ardour/session_transport.cc
parentf37758ffb7face651692770221953d584eb38380 (diff)
Fix loop/pre-roll
Pre-roll to fill buffers only needs to be done once when starting to play or when locating. Seamless looping just continues. Every processor takes the loop position into account locally.
Diffstat (limited to 'libs/ardour/session_transport.cc')
-rw-r--r--libs/ardour/session_transport.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc
index 5baa39a0f8..6b0d81172b 100644
--- a/libs/ardour/session_transport.cc
+++ b/libs/ardour/session_transport.cc
@@ -248,7 +248,9 @@ Session::do_locate (samplepos_t target_sample, bool with_roll, bool with_flush,
// thread(s?) can restart.
g_atomic_int_inc (&_seek_counter);
_last_roll_or_reversal_location = target_sample;
- _remaining_latency_preroll = worst_latency_preroll ();
+ if (!for_loop_end) {
+ _remaining_latency_preroll = worst_latency_preroll ();
+ }
timecode_time(_transport_sample, transmitting_timecode_time); // XXX here?
/* do "stopped" stuff if: