diff options
author | Johannes Mueller <github@johannes-mueller.org> | 2017-06-09 21:31:15 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-06-10 18:30:42 +0200 |
commit | 05c77db7739c0c9d49eb3b5b3c98596643392a7a (patch) | |
tree | 29f61b4d3869c2a08c7e8493a7bf683e32c49978 | |
parent | 2770444b0c6893c78d340b3d6c1a4e306be8b960 (diff) |
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
-rw-r--r-- | libs/ardour/session_transport.cc | 4 |
1 files changed, 3 insertions, 1 deletions
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. |