diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-02-17 11:21:41 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-02-17 11:21:41 -0500 |
commit | 58137b83262208bb317c3dbd08f95698b409f254 (patch) | |
tree | dd8e92686634c98ca0f140424c984702303d4d80 /libs/ardour/session_transport.cc | |
parent | b72d37a45f77f43233cd883a0e78d38fef975786 (diff) |
try to restore original semantics for scheduling butler transport work in Session::locate()
Diffstat (limited to 'libs/ardour/session_transport.cc')
-rw-r--r-- | libs/ardour/session_transport.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index 449349996f..be4cc8112c 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -973,6 +973,8 @@ Session::micro_locate (framecnt_t distance) void Session::locate (framepos_t target_frame, bool with_roll, bool with_flush, bool for_seamless_loop, bool force, bool with_mmc) { + bool need_butler = false; + /* Locates for seamless looping are fairly different from other * locates. They assume that the diskstream buffers for each track * already have the correct data in them, and thus there is no need to @@ -1048,7 +1050,8 @@ Session::locate (framepos_t target_frame, bool with_roll, bool with_flush, bool } add_post_transport_work (todo); - + need_butler = true; + } else { /* this is functionally what clear_clicks() does but with a tentative lock */ @@ -1115,6 +1118,7 @@ Session::locate (framepos_t target_frame, bool with_roll, bool with_flush, bool * end. */ add_post_transport_work (PostTransportLocate); + need_butler = true; } } @@ -1139,7 +1143,9 @@ Session::locate (framepos_t target_frame, bool with_roll, bool with_flush, bool } } - _butler->schedule_transport_work (); + if (need_butler) { + _butler->schedule_transport_work (); + } loop_changing = false; |