[Scummvm-git-logs] scummvm master -> cb3424be01db8e34c916b151e230c9185ae57ab1

athrxx noreply at scummvm.org
Tue May 17 21:33:09 UTC 2022


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:
cb3424be01 GRIFFON: fix timer behavior during GMM pause


Commit: cb3424be01db8e34c916b151e230c9185ae57ab1
    https://github.com/scummvm/scummvm/commit/cb3424be01db8e34c916b151e230c9185ae57ab1
Author: athrxx (athrxx at scummvm.org)
Date: 2022-05-17T23:32:22+02:00

Commit Message:
GRIFFON: fix timer behavior during GMM pause

(possible fix for bug no. 13489 - "GRIFFON: Bringing up ScummVM menu (Alt+F5) corrupts engine")

Changed paths:
    engines/griffon/griffon.cpp
    engines/griffon/griffon.h


diff --git a/engines/griffon/griffon.cpp b/engines/griffon/griffon.cpp
index f2d177ca9c6..2a4bbc1056e 100644
--- a/engines/griffon/griffon.cpp
+++ b/engines/griffon/griffon.cpp
@@ -75,6 +75,7 @@ GriffonEngine::GriffonEngine(OSystem *syst) : Engine(syst) {
 	_saveSlot = 0;
 
 	_ticks = g_system->getMillis();
+	_ticksAtPauseStart = 0;
 
 	for (int i = 0; i < 33; ++i) {
 		for (int j = 0; j < 6; ++j) {
@@ -193,4 +194,14 @@ Common::Error GriffonEngine::run() {
 	return Common::kNoError;
 }
 
+void GriffonEngine::pauseEngineIntern(bool pause) {
+	if (pause) {
+		_ticksAtPauseStart = _ticks;
+	} else {
+		uint32 diff = _system->getMillis() - _ticksAtPauseStart;
+		_ticks += diff;
+		_nextTicks += diff;
+	}
+}
+
 }
diff --git a/engines/griffon/griffon.h b/engines/griffon/griffon.h
index 9e0bf3aa5ff..01f9bcc25da 100644
--- a/engines/griffon/griffon.h
+++ b/engines/griffon/griffon.h
@@ -442,6 +442,8 @@ private:
 	void setupAudio();
 	void updateMusic();
 
+	// Common engine overrides
+	void pauseEngineIntern(bool pause) override;
 	bool canLoadGameStateCurrently() override { return true; }
 	bool canSaveGameStateCurrently() override { return _gameMode == kGameModePlay; }
 	int getAutosaveSlot() const override { return 4; }
@@ -476,7 +478,7 @@ private:
 	int _scriptFlag[100][10], _saveSlot;  // script, flag
 
 	// timer related - move to local later
-	int _ticks, _ticksPassed, _nextTicks;
+	uint _ticks, _ticksPassed, _nextTicks, _ticksAtPauseStart;
 	float _fp, _fps, _fpsr; // CHECKME: _fp and _fps seems to be integers
 	int _secsInGame, _secStart;
 




More information about the Scummvm-git-logs mailing list