aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2012-11-07 18:11:09 +0200
committerFilippos Karapetis2012-11-07 18:11:09 +0200
commit3b5e92d4f3ce587bb8fce0251fa62a4c25a5a6d9 (patch)
tree8d3fa28e5f28a971a72b602d5bbf3ec8f6217ebb
parent2c5769c23b4c91d7ed2e4f4434a05f0fdcec95d1 (diff)
downloadscummvm-rg350-3b5e92d4f3ce587bb8fce0251fa62a4c25a5a6d9.tar.gz
scummvm-rg350-3b5e92d4f3ce587bb8fce0251fa62a4c25a5a6d9.tar.bz2
scummvm-rg350-3b5e92d4f3ce587bb8fce0251fa62a4c25a5a6d9.zip
SCI: Fix bug #3575569 - "SCI: QFG1VGA: Palette/hue bug after loading"
We make sure that any leftover palVary timers are removed when loading. This is an edge case, but it won't hurt to remove these timers just in case
-rw-r--r--engines/sci/engine/savegame.cpp4
-rw-r--r--engines/sci/graphics/palette.h3
2 files changed, 6 insertions, 1 deletions
diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp
index ff3f19b53d..2a39f24ecd 100644
--- a/engines/sci/engine/savegame.cpp
+++ b/engines/sci/engine/savegame.cpp
@@ -878,6 +878,10 @@ void gamestate_restore(EngineState *s, Common::SeekableReadStream *fh) {
}
}
+ // Remove the palVary effect timer, if there is one running currently.
+ // Fixes bug #3575569.
+ g_sci->_gfxPalette->palVaryRemoveTimer();
+
// We don't need the thumbnail here, so just read it and discard it
Graphics::skipThumbnail(*fh);
diff --git a/engines/sci/graphics/palette.h b/engines/sci/graphics/palette.h
index e974781d49..1ca1f2dbb7 100644
--- a/engines/sci/graphics/palette.h
+++ b/engines/sci/graphics/palette.h
@@ -105,6 +105,8 @@ public:
byte findMacIconBarColor(byte r, byte g, byte b);
bool colorIsFromMacClut(byte index);
+ void palVaryRemoveTimer();
+
#ifdef ENABLE_SCI32
bool loadClut(uint16 clutId);
byte matchClutColor(uint16 color);
@@ -114,7 +116,6 @@ public:
private:
void palVaryInit();
void palVaryInstallTimer();
- void palVaryRemoveTimer();
bool palVaryLoadTargetPalette(GuiResourceId resourceId);
static void palVaryCallback(void *refCon);
void palVaryIncreaseSignal();