aboutsummaryrefslogtreecommitdiff
path: root/engines/agi/agi.cpp
diff options
context:
space:
mode:
authorMartin Kiewitz2016-02-03 02:40:01 +0100
committerMartin Kiewitz2016-02-03 02:40:01 +0100
commit34117170f2955e854a93925a652af37575361b44 (patch)
treef63d6592f41195be8999ce8101c3e0e15d8cb6d0 /engines/agi/agi.cpp
parent778c1ddb69bb45b6992fdc9b8fff6b2c8d3e22ac (diff)
downloadscummvm-rg350-34117170f2955e854a93925a652af37575361b44.tar.gz
scummvm-rg350-34117170f2955e854a93925a652af37575361b44.tar.bz2
scummvm-rg350-34117170f2955e854a93925a652af37575361b44.zip
AGI: Change cycle delay handling, seems to fix GR
Removed pollTimer() Renamed pause() to wait() Doing 10 msec delays instead of at least 50 msec per EventProcess Seems to fix weird Gold Rush ingame timer issue?! bug #4147
Diffstat (limited to 'engines/agi/agi.cpp')
-rw-r--r--engines/agi/agi.cpp34
1 files changed, 12 insertions, 22 deletions
diff --git a/engines/agi/agi.cpp b/engines/agi/agi.cpp
index 6046d5ee79..401c42a76a 100644
--- a/engines/agi/agi.cpp
+++ b/engines/agi/agi.cpp
@@ -58,30 +58,23 @@ void AgiEngine::allowSynthetic(bool allow) {
_allowSynthetic = allow;
}
-void AgiEngine::pollTimer() {
- _lastTick += 50;
-
- while (_system->getMillis() < _lastTick) {
- processScummVMEvents();
- _console->onFrame();
- _system->delayMillis(10);
- _system->updateScreen();
- }
-
- _lastTick = _system->getMillis();
-}
-
-void AgiEngine::pause(uint32 msec) {
+void AgiEngine::wait(uint32 msec, bool busy) {
uint32 endTime = _system->getMillis() + msec;
- _gfx->setMouseCursor(true); // Busy mouse cursor
+ if (busy) {
+ _gfx->setMouseCursor(true); // Busy mouse cursor
+ }
- while (_system->getMillis() < endTime) {
+ do {
processScummVMEvents();
+ _console->onFrame();
_system->updateScreen();
_system->delayMillis(10);
+ } while (_system->getMillis() < endTime);
+
+ if (busy) {
+ _gfx->setMouseCursor(); // regular mouse cursor
}
- _gfx->setMouseCursor(); // regular mouse cursor
}
int AgiEngine::agiInit() {
@@ -395,7 +388,6 @@ AgiEngine::AgiEngine(OSystem *syst, const AGIGameDescription *gameDesc) : AgiBas
_game._curLogic = NULL;
_lastSaveTime = 0;
- _lastTick = 0;
memset(_keyQueue, 0, sizeof(_keyQueue));
@@ -472,8 +464,6 @@ void AgiEngine::initialize() {
_lastSaveTime = 0;
- _lastTick = _system->getMillis();
-
debugC(2, kDebugLevelMain, "Detect game");
if (agiDetectGame() == errOK) {
@@ -614,7 +604,7 @@ void AgiEngine::loadingTrigger_NewRoom(int16 newRoomNr) {
if (newRoomNr != curRoomNr) {
if (!_game.automaticRestoreGame) {
// wait a bit, we detected non-blocking text
- pause(2000); // 2 seconds
+ wait(2000, true); // 2 seconds, set busy
}
}
}
@@ -626,7 +616,7 @@ void AgiEngine::loadingTrigger_DrawPicture() {
if (!_game.automaticRestoreGame) {
// wait a bit, we detected non-blocking text
- pause(2000); // 2 seconds
+ wait(2000, true); // 2 seconds, set busy
}
}
}