summaryrefslogtreecommitdiff
path: root/libs/ardour/session_transport.cc
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 /libs/ardour/session_transport.cc
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
Diffstat (limited to 'libs/ardour/session_transport.cc')
-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
+ }
}
}
}