diff options
author | Sven Hesse | 2011-01-22 08:00:57 +0000 |
---|---|---|
committer | Sven Hesse | 2011-01-22 08:00:57 +0000 |
commit | 95e557c564fb05f95f5b9c682a5c3d9b2db913f0 (patch) | |
tree | 44f7ba18008f7204f5094fee4001aa38ae55377f /graphics/video | |
parent | e1e299d0b8d1ebc229036a6796c5f1dab2c3b66e (diff) | |
download | scummvm-rg350-95e557c564fb05f95f5b9c682a5c3d9b2db913f0.tar.gz scummvm-rg350-95e557c564fb05f95f5b9c682a5c3d9b2db913f0.tar.bz2 scummvm-rg350-95e557c564fb05f95f5b9c682a5c3d9b2db913f0.zip |
VIDEO: Seek a video seek glitch
Observable when ESCing a 16bit or 24bit video, for example
the fuses in Urban Runner's Labyrinth screen.
svn-id: r55410
Diffstat (limited to 'graphics/video')
-rw-r--r-- | graphics/video/coktel_decoder.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/graphics/video/coktel_decoder.cpp b/graphics/video/coktel_decoder.cpp index 7fba516d5b..9ed91b1b3f 100644 --- a/graphics/video/coktel_decoder.cpp +++ b/graphics/video/coktel_decoder.cpp @@ -1559,12 +1559,25 @@ bool VMDDecoder::seek(int32 frame, int whence, bool restart) { _audioStream = Audio::makeQueuingAudioStream(_soundFreq, _soundStereo != 0); } + _subtitle = -1; + + if ((_blitMode > 0) && (_flags & 0x4000)) { + if (_curFrame > frame) { + _stream->seek(_frames[0].offset); + _curFrame = -1; + } + + while (frame > _curFrame) + decodeNextFrame(); + + return true; + } + // Seek _stream->seek(_frames[frame + 1].offset); _curFrame = frame; _startTime = g_system->getMillis() - ((frame + 2) * getStaticTimeToNextFrame()); - _subtitle = -1; return true; } |