From d77899e158e2ae2076d7d8185a92c544b4a06351 Mon Sep 17 00:00:00 2001 From: Sven Hesse Date: Thu, 20 Jan 2011 03:22:43 +0000 Subject: GOB: Make Urban Runner's "3D view" work again svn-id: r55340 --- engines/gob/videoplayer.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'engines/gob/videoplayer.cpp') diff --git a/engines/gob/videoplayer.cpp b/engines/gob/videoplayer.cpp index c22a67ac16..8ac4c47202 100644 --- a/engines/gob/videoplayer.cpp +++ b/engines/gob/videoplayer.cpp @@ -246,6 +246,7 @@ bool VideoPlayer::play(int slot, Properties &properties) { video->live = true; properties.waitEndFrame = false; _liveProperties = properties; + updateLive(true); return true; } @@ -279,24 +280,33 @@ void VideoPlayer::waitEndFrame(int slot, bool onlySound) { if (!video) return; - if (!onlySound || video->decoder->hasSound()) - _vm->_util->delay(video->decoder->getTimeToNextFrame()); + if (!onlySound || video->decoder->hasSound()) { + uint32 waitTime = video->decoder->getTimeToNextFrame(); + if (!video->decoder->hasSound()) + waitTime = video->decoder->getStaticTimeToNextFrame();; + + _vm->_util->delay(waitTime); + } } -void VideoPlayer::updateLive() { +void VideoPlayer::updateLive(bool force) { Video *video = getVideoBySlot(0); if (!video || !video->live) return; - if ((_liveProperties.startFrame == _liveProperties.lastFrame) || - (_liveProperties.startFrame >= (int32)(video->decoder->getFrameCount() - 1))) { + if (_liveProperties.startFrame >= (int32)(video->decoder->getFrameCount() - 1)) { + // Video ended WRITE_VAR_OFFSET(212, (uint32)-1); _vm->_vidPlayer->closeVideo(); return; } - if (video->decoder->getTimeToNextFrame() > 0) + if (_liveProperties.startFrame == _liveProperties.lastFrame) + // Current video sequence ended + return; + + if (!force && (video->decoder->getTimeToNextFrame() > 0)) return; WRITE_VAR_OFFSET(212, _liveProperties.startFrame + 1); -- cgit v1.2.3