13
0

try to restore original semantics for scheduling butler transport work in Session::locate()

This commit is contained in:
Paul Davis 2015-02-17 11:21:41 -05:00
parent b72d37a45f
commit 58137b8326

View File

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