[Scummvm-git-logs] scummvm master -> 1ba7f8aa1e4d535c616aff9d789c172952e33f5e

wjp wjp at usecode.org
Fri Jan 6 19:34:38 CET 2017


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

Summary:
740b0bb0ca SCI: Unconditionally save palvary state
95ab3bece9 SCI: Add FIXME for (very unlikely) race condition in _palVarySignal
1ba7f8aa1e Merge pull request #873 from wjp/sci_save_palvary


Commit: 740b0bb0ca1585e1eff49afe8da1104830cc1e02
    https://github.com/scummvm/scummvm/commit/740b0bb0ca1585e1eff49afe8da1104830cc1e02
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2017-01-06T19:03:50+01:00

Commit Message:
SCI: Unconditionally save palvary state

Additionally, add workaround to fix up old QfG3 saves with broken
_palVaryPaused state. Fixes bug #9674.

Changed paths:
    engines/sci/engine/savegame.cpp
    engines/sci/engine/savegame.h


diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp
index 720f678..5184874 100644
--- a/engines/sci/engine/savegame.cpp
+++ b/engines/sci/engine/savegame.cpp
@@ -764,17 +764,33 @@ void GfxPalette::saveLoadWithSerializer(Common::Serializer &s) {
 			palVaryRemoveTimer();
 
 		s.syncAsSint32LE(_palVaryResourceId);
-		if (_palVaryResourceId != -1) {
-			palVarySaveLoadPalette(s, &_palVaryOriginPalette);
-			palVarySaveLoadPalette(s, &_palVaryTargetPalette);
+		if (_palVaryResourceId != -1 || s.getVersion() >= 40) {
+			if (_palVaryResourceId != -1) {
+				palVarySaveLoadPalette(s, &_palVaryOriginPalette);
+				palVarySaveLoadPalette(s, &_palVaryTargetPalette);
+			}
 			s.syncAsSint16LE(_palVaryStep);
 			s.syncAsSint16LE(_palVaryStepStop);
 			s.syncAsSint16LE(_palVaryDirection);
 			s.syncAsUint16LE(_palVaryTicks);
 			s.syncAsSint32LE(_palVaryPaused);
+			if (s.getVersion() >= 40)
+				s.syncAsSint32LE(_palVarySignal);
 		}
 
-		_palVarySignal = 0;
+		if (s.isLoading() && s.getVersion() < 40) {
+			// Reset _palVaryPaused to 0 when loading an old savegame.
+			// Before version 40, we didn't restore or reset _palVaryPaused.
+			// In QfG3 this could get it stuck at positive values (bug #9674).
+			//
+			// Other SCI11 games don't appear to use palVaryPaused at all.
+			// (Looked at eq2, freddy, kq6, lb2, mgoose11, pq1, qg1, sq4, sq5)
+			_palVaryPaused = 0;
+
+			// Clear any pending updates, since _palVarySignal also wasn't saved
+			// before version 40.
+			_palVarySignal = 0;
+		}
 
 		if (s.isLoading() && _palVaryResourceId != -1) {
 			palVaryInstallTimer();
diff --git a/engines/sci/engine/savegame.h b/engines/sci/engine/savegame.h
index 873394a..a75db25 100644
--- a/engines/sci/engine/savegame.h
+++ b/engines/sci/engine/savegame.h
@@ -37,6 +37,7 @@ struct EngineState;
  *
  * Version - new/changed feature
  * =============================
+ *      40 - always store palvary variables
  *      39 - Accurate SCI32 arrays/strings, score metadata, avatar metadata
  *      38 - SCI32 cursor
  *      37 - Segment entry data changed to pointers
@@ -64,7 +65,7 @@ struct EngineState;
  */
 
 enum {
-	CURRENT_SAVEGAME_VERSION = 39,
+	CURRENT_SAVEGAME_VERSION = 40,
 	MINIMUM_SAVEGAME_VERSION = 14
 };
 


Commit: 95ab3bece9b1a9452d99d6fd4f52dcafde32c99a
    https://github.com/scummvm/scummvm/commit/95ab3bece9b1a9452d99d6fd4f52dcafde32c99a
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2017-01-06T19:03:50+01:00

Commit Message:
SCI: Add FIXME for (very unlikely) race condition in _palVarySignal

Changed paths:
    engines/sci/graphics/palette.cpp


diff --git a/engines/sci/graphics/palette.cpp b/engines/sci/graphics/palette.cpp
index 1514ad8..6fe1fb1 100644
--- a/engines/sci/graphics/palette.cpp
+++ b/engines/sci/graphics/palette.cpp
@@ -852,6 +852,7 @@ void GfxPalette::palVaryCallback(void *refCon) {
 }
 
 void GfxPalette::palVaryIncreaseSignal() {
+	// FIXME: increments from another thread aren't guaranteed to be atomic
 	if (!_palVaryPaused)
 		_palVarySignal++;
 }


Commit: 1ba7f8aa1e4d535c616aff9d789c172952e33f5e
    https://github.com/scummvm/scummvm/commit/1ba7f8aa1e4d535c616aff9d789c172952e33f5e
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2017-01-06T10:34:33-08:00

Commit Message:
Merge pull request #873 from wjp/sci_save_palvary

SCI: Unconditionally save palvary state

Changed paths:
    engines/sci/engine/savegame.cpp
    engines/sci/engine/savegame.h
    engines/sci/graphics/palette.cpp







More information about the Scummvm-git-logs mailing list