summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/transport_fsm.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/libs/ardour/transport_fsm.cc b/libs/ardour/transport_fsm.cc
index 403bef07bd..39d726175c 100644
--- a/libs/ardour/transport_fsm.cc
+++ b/libs/ardour/transport_fsm.cc
@@ -27,6 +27,7 @@
#include "pbd/stacktrace.h"
#include "ardour/debug.h"
+#include "ardour/disk_reader.h"
#include "ardour/session.h"
#include "ardour/transport_fsm.h"
@@ -307,6 +308,23 @@ TransportFSM::process_event (Event& ev, bool already_deferred, bool& deferred)
*/
transition (WaitingForLocate);
locate_for_loop (ev);
+ } else if (DiskReader::no_disk_output()) {
+
+ /* separate clause to allow a comment that is
+ case specific. Logically this condition
+ could be bundled into first if() above.
+ */
+
+ /* this can occur when locating to catch up
+ with a transport master. no_disk_output was
+ set to prevent playback until we're synced
+ and locked with the master. If we locate
+ during this process, we're not producing any
+ audio from disk, and so there is no need to
+ declick.
+ */
+ transition (WaitingForLocate);
+ locate_for_loop (ev);
} else {
transition (DeclickToLocate);
start_declick_for_locate (ev);