return;
}
+ /* We are about to set up the audio stream from the position of the video view.
+ If there is `lazy' seek in progress we need to wait for it to go through so that
+ _video_view->position() gives us a sensible answer.
+ */
+ while (_idle_get) {
+ idle_handler ();
+ }
+
+ /* Take the video view's idea of position as our `playhead' and start the
+ audio stream (which is the timing reference) there.
+ */
if (_audio.isStreamOpen()) {
_audio.setStreamTime (_video_view->position().seconds());
_audio.startStream ();
_butler->seek (t, accurate);
if (!_playing) {
+ /* We're not playing, so let the GUI thread get on and
+ come back later to get the next frame after the seek.
+ */
request_idle_display_next_frame ();
} else {
+ /* We're going to start playing again straight away
+ so wait for the seek to finish.
+ */
while (!_video_view->display_next_frame(false)) {}
}