From 1471f0e3ddffeedd7ff10e44ecb252cca1ad4864 Mon Sep 17 00:00:00 2001 From: Sven Hesse Date: Sun, 2 Aug 2009 10:40:27 +0000 Subject: When ESCing videos, seek to the last frame that was meant to be played. Fixes graphical glitches (bug #2830985) and crashes (bug #2830988) svn-id: r42995 --- engines/gob/videoplayer.cpp | 2 ++ graphics/video/coktelvideo/coktelvideo.cpp | 1 + 2 files changed, 3 insertions(+) diff --git a/engines/gob/videoplayer.cpp b/engines/gob/videoplayer.cpp index a3a9dde892..a7399caa54 100644 --- a/engines/gob/videoplayer.cpp +++ b/engines/gob/videoplayer.cpp @@ -739,6 +739,8 @@ bool VideoPlayer::doPlay(int16 frame, int16 breakKey, _vm->_inter->storeKey(_vm->_util->checkKey()); if (VAR(0) == (unsigned) breakKey) { _primaryVideo->getVideo()->disableSound(); + // Seek to the last frame. Some scripts depend on that. + _primaryVideo->getVideo()->seekFrame(endFrame, SEEK_SET, true); return true; } } diff --git a/graphics/video/coktelvideo/coktelvideo.cpp b/graphics/video/coktelvideo/coktelvideo.cpp index efcd77de44..39aeca07bd 100644 --- a/graphics/video/coktelvideo/coktelvideo.cpp +++ b/graphics/video/coktelvideo/coktelvideo.cpp @@ -423,6 +423,7 @@ void Imd::seekFrame(int32 frame, int16 whence, bool restart) { } else if (restart && (_soundStage == 0)) { for (int i = ((frame > _curFrame) ? _curFrame : 0); i <= frame; i++) processFrame(i); + return; } else error("Imd::seekFrame(): Frame %d is not directly accessible", frame); -- cgit v1.2.3