summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2020-03-09 15:39:44 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2020-03-09 15:40:21 -0600
commit9ef5f4d1598d726d5b8380d91af2e546fd1cb2d1 (patch)
tree65d0a06d78de6d1a00a81dbf692f6358df3f422a
parent1d17993a292c914a630f460ce34c098bfa535226 (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.cc6
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
+ }
}
}
}