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 | |
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
-rw-r--r-- | video/video_decoder.cpp | 8 | ||||
-rw-r--r-- | video/video_decoder.h | 2 |
2 files changed, 8 insertions, 2 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(); diff --git a/video/video_decoder.h b/video/video_decoder.h index 0c569692fc..ffeecd326d 100644 --- a/video/video_decoder.h +++ b/video/video_decoder.h @@ -766,7 +766,7 @@ private: TrackList _tracks; // Current playback status - bool _isPlaying, _needsRewind; + bool _isPlaying, _needsRewind, _needsUpdate; Audio::Timestamp _audioStartOffset; // Palette settings from individual tracks |