diff options
author | Matthew Hoops | 2012-07-26 23:42:35 -0400 |
---|---|---|
committer | Matthew Hoops | 2012-07-26 23:42:35 -0400 |
commit | df5d6f7d08c30afa270fd7d3e2d0f885eaf3c7bc (patch) | |
tree | 7c6f956545a6a7d2c099c96b48639ef40cd3ec8c /video/video_decoder.cpp | |
parent | 84462fa088d64acc2a7b2811f88a5a292abe00db (diff) | |
download | scummvm-rg350-df5d6f7d08c30afa270fd7d3e2d0f885eaf3c7bc.tar.gz scummvm-rg350-df5d6f7d08c30afa270fd7d3e2d0f885eaf3c7bc.tar.bz2 scummvm-rg350-df5d6f7d08c30afa270fd7d3e2d0f885eaf3c7bc.zip |
VIDEO: Force an update after a seek
Diffstat (limited to 'video/video_decoder.cpp')
-rw-r--r-- | video/video_decoder.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/video/video_decoder.cpp b/video/video_decoder.cpp index 9282cd82d0..9d6d40f7fb 100644 --- a/video/video_decoder.cpp +++ b/video/video_decoder.cpp @@ -101,6 +101,7 @@ AdvancedVideoDecoder::AdvancedVideoDecoder() { _audioVolume = Audio::Mixer::kMaxChannelVolume; _audioBalance = 0; _pauseLevel = 0; + _needsUpdate = false; // Find the best format for output _defaultHighColorFormat = g_system->getScreenFormat(); @@ -124,6 +125,7 @@ void AdvancedVideoDecoder::close() { _audioVolume = Audio::Mixer::kMaxChannelVolume; _audioBalance = 0; _pauseLevel = 0; + _needsUpdate = false; } bool AdvancedVideoDecoder::isVideoLoaded() const { @@ -155,6 +157,8 @@ Graphics::PixelFormat AdvancedVideoDecoder::getPixelFormat() const { } const Graphics::Surface *AdvancedVideoDecoder::decodeNextFrame() { + _needsUpdate = false; + readNextPacket(); VideoTrack *track = findNextVideoTrack(); @@ -215,7 +219,7 @@ uint32 AdvancedVideoDecoder::getTime() const { } uint32 AdvancedVideoDecoder::getTimeToNextFrame() const { - if (endOfVideo()) + if (endOfVideo() || _needsUpdate) return 0; const VideoTrack *track = findNextVideoTrack(); @@ -310,6 +314,7 @@ bool AdvancedVideoDecoder::seek(const Audio::Timestamp &time) { _audioStartOffset = time; _startTime = g_system->getMillis() - time.msecs(); + _needsUpdate = true; return true; } @@ -337,6 +342,7 @@ void AdvancedVideoDecoder::stop() { _audioStartOffset = 0; _palette = 0; _dirtyPalette = false; + _needsUpdate = false; stopAllTracks(); |