[Scummvm-cvs-logs] scummvm master -> 8b391399cc89441adb119c0afe33d4d26b620a5d

lordhoto lordhoto at gmail.com
Mon Jan 16 17:08:10 CET 2012


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

Summary:
8b391399cc KYRA: Fix for bug #3474339 "KYRA1CD: Ingame animation missing".


Commit: 8b391399cc89441adb119c0afe33d4d26b620a5d
    https://github.com/scummvm/scummvm/commit/8b391399cc89441adb119c0afe33d4d26b620a5d
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2012-01-16T08:06:28-08:00

Commit Message:
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.

Changed paths:
    engines/kyra/kyra_lok.cpp
    engines/kyra/script_lok.cpp



diff --git a/engines/kyra/kyra_lok.cpp b/engines/kyra/kyra_lok.cpp
index 74db67d..d7e7957 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 135925a..8342bcc 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;
 	}
 






More information about the Scummvm-git-logs mailing list