diff options
author | Paul Gilbert | 2015-03-18 19:02:17 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-03-18 19:02:17 -0400 |
commit | b8ad1ce140c91257ba79fe50f41da34a5a6e74c2 (patch) | |
tree | 72d3aeddfa430c575bfa313b52a8040ffa0e82d9 /engines/sherlock/events.cpp | |
parent | 62f3f5d14e391cdac0bbfe200cdde2e4773afba4 (diff) | |
download | scummvm-rg350-b8ad1ce140c91257ba79fe50f41da34a5a6e74c2.tar.gz scummvm-rg350-b8ad1ce140c91257ba79fe50f41da34a5a6e74c2.tar.bz2 scummvm-rg350-b8ad1ce140c91257ba79fe50f41da34a5a6e74c2.zip |
SHERLOCK: Make random pixel transitions more like the original
Diffstat (limited to 'engines/sherlock/events.cpp')
-rw-r--r-- | engines/sherlock/events.cpp | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/engines/sherlock/events.cpp b/engines/sherlock/events.cpp index c6c013193c..b2d9fc65e8 100644 --- a/engines/sherlock/events.cpp +++ b/engines/sherlock/events.cpp @@ -166,18 +166,32 @@ void EventsManager::wait(int numFrames) { } bool EventsManager::delay(uint32 time, bool interruptable) { - uint32 delayEnd = g_system->getMillis() + time; - - while (!_vm->shouldQuit() && g_system->getMillis() < delayEnd) { - pollEventsAndWait(); - - if (interruptable && (isKeyPressed() || _mouseClicked)) { - clearEvents(); - return false; + // Different handling for really short versus extended times + if (time < 10) { + // For really short periods, simply delay by the desired amount + pollEvents(); + g_system->delayMillis(time); + bool result = !(interruptable && (isKeyPressed() || _mouseClicked)); + + clearEvents(); + return result; + } else { + // For long periods go into a loop where we delay by 10ms at a time and then + // check for events. This ensures for longer delays that responsiveness is + // maintained + uint32 delayEnd = g_system->getMillis() + time; + + while (!_vm->shouldQuit() && g_system->getMillis() < delayEnd) { + pollEventsAndWait(); + + if (interruptable && (isKeyPressed() || _mouseClicked)) { + clearEvents(); + return false; + } } - } - return true; + return true; + } } /** |