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
This commit is contained in:
Johannes Mueller 2017-06-09 21:31:15 +02:00 committed by Robin Gareus
parent 2770444b0c
commit 05c77db773

View file

@ -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.