[Scummvm-git-logs] scummvm master -> 06dd647f137472c157df8a83c823b63d58470379

bluegr noreply at scummvm.org
Mon Nov 3 17:32:51 UTC 2025


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
06dd647f13 VIDEO: Make sure QT decoder palette is dirty when starting


Commit: 06dd647f137472c157df8a83c823b63d58470379
    https://github.com/scummvm/scummvm/commit/06dd647f137472c157df8a83c823b63d58470379
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2025-11-03T19:32:48+02:00

Commit Message:
VIDEO: Make sure QT decoder palette is dirty when starting

When a video is stopped and restarted, the palette of the video track
was kept while it was reset in the outer VideoDecoder.
When setting the reverse flag or seeking, force a palette reset.

Fix Trac#16319.

The commit b8f52246a8d050008da0c91fd690e674887973d5 correctly fixed the
hasDirtyPalette function which returned true as soon as a palette was
present but this made the palette update in the outer VideoDecoder not
happening at restart.

Changed paths:
    video/qt_decoder.cpp


diff --git a/video/qt_decoder.cpp b/video/qt_decoder.cpp
index 5cee66a7df0..ecdacc36301 100644
--- a/video/qt_decoder.cpp
+++ b/video/qt_decoder.cpp
@@ -341,7 +341,7 @@ QuickTimeDecoder::VideoTrackHandler::VideoTrackHandler(QuickTimeDecoder *decoder
 
 	_durationOverride = -1;
 	_scaledSurface = 0;
-	_curPalette = 0;
+	_curPalette = nullptr;
 	_dirtyPalette = false;
 	_reversed = false;
 }
@@ -400,6 +400,7 @@ bool QuickTimeDecoder::VideoTrackHandler::endOfTrack() const {
 
 bool QuickTimeDecoder::VideoTrackHandler::seek(const Audio::Timestamp &requestedTime) {
 	_delayedFrameToBufferTo = -1; // abort any delayed buffering
+	_curPalette = nullptr; // invalidate any palette
 
 	uint32 convertedFrames = requestedTime.convertToFramerate(_decoder->_timeScale).totalNumberOfFrames();
 	for (_curEdit = 0; !atLastEdit(); _curEdit++)
@@ -628,6 +629,7 @@ const byte *QuickTimeDecoder::VideoTrackHandler::getPalette() const {
 
 bool QuickTimeDecoder::VideoTrackHandler::setReverse(bool reverse) {
 	_delayedFrameToBufferTo = -1; // abort any delayed buffering
+	_curPalette = nullptr; // invalidate any palette
 
 	_reversed = reverse;
 
@@ -882,8 +884,8 @@ const Graphics::Surface *QuickTimeDecoder::VideoTrackHandler::bufferNextFrame()
 
 	// The codec palette takes priority over the container one
 	if (entry->_videoCodec->containsPalette()) {
-		_curPalette = entry->_videoCodec->getPalette();
 		_dirtyPalette = entry->_videoCodec->hasDirtyPalette();
+		_curPalette = entry->_videoCodec->getPalette();
 	}
 
 	return frame;




More information about the Scummvm-git-logs mailing list