aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Hesse2009-08-02 10:40:27 +0000
committerSven Hesse2009-08-02 10:40:27 +0000
commit1471f0e3ddffeedd7ff10e44ecb252cca1ad4864 (patch)
tree79790eb0578fdb1c7ae8bd025cb3dd1318dd8625
parent01886d3e5266b1cdb0f8cb0460354215358000f5 (diff)
downloadscummvm-rg350-1471f0e3ddffeedd7ff10e44ecb252cca1ad4864.tar.gz
scummvm-rg350-1471f0e3ddffeedd7ff10e44ecb252cca1ad4864.tar.bz2
scummvm-rg350-1471f0e3ddffeedd7ff10e44ecb252cca1ad4864.zip
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
-rw-r--r--engines/gob/videoplayer.cpp2
-rw-r--r--graphics/video/coktelvideo/coktelvideo.cpp1
2 files changed, 3 insertions, 0 deletions
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);