From 05c77db7739c0c9d49eb3b5b3c98596643392a7a Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 9 Jun 2017 21:31:15 +0200 Subject: [PATCH] Emit Session::Located only if _engine.transport_frame() is up to date If _engine.transport_frame() is not up to date, we emit Located in Session::backend_sync_callback() because that's when audible_frame() is up to date. We don't want to emit it twice, because then, the playhead jumps back and forth. * mouse click in the ruler -> jump to requested location * mouse release -> jump to old location (because audible_frame has to catch up) * backend_sync_callback() called -> jump to new location --- libs/ardour/session_transport.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index e80978a805..65a9748ce6 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -1367,7 +1367,9 @@ Session::locate (framepos_t target_frame, bool with_roll, bool with_flush, bool } _last_roll_location = _last_roll_or_reversal_location = _transport_frame; - Located (); /* EMIT SIGNAL */ + if (!synced_to_engine () || _transport_frame == _engine.transport_frame ()) { + Located (); /* EMIT SIGNAL */ + } } /** Set the transport speed.