diff options
author | Johannes Schickel | 2012-01-16 17:02:18 +0100 |
---|---|---|
committer | Johannes Schickel | 2012-01-16 17:06:28 +0100 |
commit | 8b391399cc89441adb119c0afe33d4d26b620a5d (patch) | |
tree | 9960febaa919d0f5a456e050711d7903009ea533 /engines/kyra | |
parent | 26a692ff5c04e157e93778ea49bd918e86dfdbbf (diff) | |
download | scummvm-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.
Diffstat (limited to 'engines/kyra')
-rw-r--r-- | engines/kyra/kyra_lok.cpp | 12 | ||||
-rw-r--r-- | engines/kyra/script_lok.cpp | 19 |
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; } |