diff options
-rw-r--r-- | engines/touche/touche.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/engines/touche/touche.cpp b/engines/touche/touche.cpp index badcfc24dd..61b765bc55 100644 --- a/engines/touche/touche.cpp +++ b/engines/touche/touche.cpp @@ -268,14 +268,18 @@ void ToucheEngine::mainLoop() { fadePaletteFromFlags(); } - _system->updateScreen(); - int delay = _system->getMillis() - frameTimeStamp; - delay = (_fastMode ? 10 : kCycleDelay) - delay; - if (delay < 1) { - delay = 1; - } - _system->delayMillis(delay); - frameTimeStamp = _system->getMillis(); + uint32 nextFrame = frameTimeStamp + (_fastMode ? 10 : kCycleDelay); + uint32 now = _system->getMillis(); + if (nextFrame < now) { + nextFrame = now + 1; + } + while (now < nextFrame) { + processEvents(); + _system->updateScreen(); + now = _system->getMillis(); + _system->delayMillis((nextFrame - now >= 10) ? 10 : nextFrame - now); + } + frameTimeStamp = nextFrame; } writeConfigurationSettings(); |