aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2012-01-16 17:02:18 +0100
committerJohannes Schickel2012-01-16 17:06:28 +0100
commit8b391399cc89441adb119c0afe33d4d26b620a5d (patch)
tree9960febaa919d0f5a456e050711d7903009ea533
parent26a692ff5c04e157e93778ea49bd918e86dfdbbf (diff)
downloadscummvm-rg350-8b391399cc89441adb119c0afe33d4d26b620a5d.tar.gz
scummvm-rg350-8b391399cc89441adb119c0afe33d4d26b620a5d.tar.bz2
scummvm-rg350-8b391399cc89441adb119c0afe33d4d26b620a5d.zip
KYRA: Fix for bug #3474339 "KYRA1CD: Ingame animation missing".
This was a regression from 6a3d0e712940bf4560e5302c40f07f5f6eb8e0aa. This still assures that the workaround for bug #1498221 works.
-rw-r--r--engines/kyra/kyra_lok.cpp12
-rw-r--r--engines/kyra/script_lok.cpp19
2 files changed, 16 insertions, 15 deletions
diff --git a/engines/kyra/kyra_lok.cpp b/engines/kyra/kyra_lok.cpp
index 74db67d22b..d7e79575ec 100644
--- a/engines/kyra/kyra_lok.cpp
+++ b/engines/kyra/kyra_lok.cpp
@@ -510,14 +510,10 @@ void KyraEngine_LoK::delay(uint32 amount, bool update, bool isMainLoop) {
updateTextFade();
updateMousePointer();
} else {
- // We call OSystem::updateScreen here and not Screen::updateScreen
- // to avoid new graphics changes to be copied to the screen.
- // This assures the workaround of bug #1498221
- // "KYRA1: Glitches when meeting Zanthia" is working correctly.
- // Since we only call updateScreen here to let systems with frame
- // update count limitations not miss any graphics updates it
- // should not cause any problems.
- _system->updateScreen();
+ // We need to do Screen::updateScreen here, since client code
+ // relies on this method to copy screen changes to the actual
+ // screen since at least 0af418e7ea3a41f93fcc551a45ee5bae822d812a.
+ _screen->updateScreen();
}
_isSaveAllowed = isMainLoop;
diff --git a/engines/kyra/script_lok.cpp b/engines/kyra/script_lok.cpp
index 135925afd9..8342bccab6 100644
--- a/engines/kyra/script_lok.cpp
+++ b/engines/kyra/script_lok.cpp
@@ -720,14 +720,19 @@ int KyraEngine_LoK::o1_displayWSASequentialFrames(EMCState *script) {
if (maxTime - 1 <= 0)
maxTime = 1;
- // Workaround for bug #1498221 "KYRA1: Glitches when meeting Zanthia"
- // the original didn't do a forced screen update after displaying a wsa frame
- // while we have to do it, which make brandon disappear for a short moment,
- // what shouldn't happen. So we're not updating the screen for this special
- // case too.
- if (startFrame == 18 && endFrame == 18 && _currentRoom == 45) {
+ // WORKAROUND for bug #1498221 "KYRA1: Glitches when meeting Zanthia".
+ // The original did not do a forced screen update after displaying a WSA
+ // frame while we have to do it, which makes Brandon disappear for a short
+ // moment. That is not supposed to happen. So we're not updating the
+ // screen for this special case.
+ // This is only an issue for the CD version, but since the floppy version
+ // does not use the specified paramaeters like these, it is safe to enable
+ // it for all versions.
+ if (startFrame == 18 && endFrame == 18 && waitTime == 10 && wsaIndex == 0 && _currentRoom == 45) {
_movieObjects[wsaIndex]->displayFrame(18, 0, xpos, ypos, 0, 0, 0);
- delay(waitTime * _tickLength);
+ // We call delayMillis manually here to avoid the screen getting
+ // updated.
+ _system->delayMillis(waitTime * _tickLength);
return 0;
}