[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