[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