-
- dcpomatic::DCPTime const next = _viewer->position() + _viewer->one_video_frame();
-
- if (next >= _viewer->film()->length()) {
- _viewer->stop ();
- _viewer->Finished ();
- continue;
+ lm.unlock ();
+
+ Position<int> inter_position;
+ dcp::Size inter_size;
+ if (length() != dcpomatic::DCPTime()) {
+ dcpomatic::DCPTime const next = position() + one_video_frame();
+
+ if (next >= length()) {
+ _viewer->finished ();
+ continue;
+ }
+
+ get_next_frame (false);
+ shared_ptr<PlayerVideo> pv = player_video().first;
+ if (pv) {
+ set_image (pv->image(bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true));
+ inter_position = pv->inter_position();
+ inter_size = pv->inter_size();
+ }