diff options
author | Filippos Karapetis | 2012-10-13 21:06:02 +0300 |
---|---|---|
committer | Filippos Karapetis | 2012-10-13 21:06:02 +0300 |
commit | 76ff4c700166d69b416dae324ee616ab57265c34 (patch) | |
tree | b5525f2ae83e05866411a38b0404086f7103682b | |
parent | b91a132763f1048136d5073dce30f6c9919db457 (diff) | |
download | scummvm-rg350-76ff4c700166d69b416dae324ee616ab57265c34.tar.gz scummvm-rg350-76ff4c700166d69b416dae324ee616ab57265c34.tar.bz2 scummvm-rg350-76ff4c700166d69b416dae324ee616ab57265c34.zip |
SCI: Hopefully fix bug #3565505 - "SCI : crash when loading a savegame"
This bug occurs because in the cases specified in the bug report, the main
loop hasn't run fully yet, and there is a mini loop running instead (e.g.
inside Print())
Hopefully, this catches most cases where the crash occurs, but it needs more
testing to find if there is any other such case.
-rw-r--r-- | engines/sci/detection.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/engines/sci/detection.cpp b/engines/sci/detection.cpp index 58ac5f1fa6..8695d97621 100644 --- a/engines/sci/detection.cpp +++ b/engines/sci/detection.cpp @@ -834,12 +834,16 @@ Common::Error SciEngine::saveGameState(int slot, const Common::String &desc) { return Common::kNoError; } +// Before enabling the load option in the ScummVM menu, the main game loop must +// have run at least once. When the game loop runs, kGameIsRestarting is invoked, +// thus the speed throttler is initialized. Hopefully fixes bug #3565505. + bool SciEngine::canLoadGameStateCurrently() { - return !_gamestate->executionStackBase; + return !_gamestate->executionStackBase && (_gamestate->_throttleLastTime > 0 || _gamestate->_throttleTrigger); } bool SciEngine::canSaveGameStateCurrently() { - return !_gamestate->executionStackBase; + return !_gamestate->executionStackBase && (_gamestate->_throttleLastTime > 0 || _gamestate->_throttleTrigger); } } // End of namespace Sci |