aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/util.cpp
diff options
context:
space:
mode:
authorSven Hesse2012-06-28 17:37:58 +0200
committerSven Hesse2012-07-30 01:24:18 +0200
commitb5fa752b78c63bedcb53d38fb11244b7e99f9941 (patch)
treea421e5016586003a63ca869faccbeffc4298a9d4 /engines/gob/util.cpp
parent1cb6cc0218382bbf5fe487fd0e84d233e56592bb (diff)
downloadscummvm-rg350-b5fa752b78c63bedcb53d38fb11244b7e99f9941.tar.gz
scummvm-rg350-b5fa752b78c63bedcb53d38fb11244b7e99f9941.tar.bz2
scummvm-rg350-b5fa752b78c63bedcb53d38fb11244b7e99f9941.zip
GOB: Keep the mouse responsive while waiting for the frame to end
Diffstat (limited to 'engines/gob/util.cpp')
-rw-r--r--engines/gob/util.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/engines/gob/util.cpp b/engines/gob/util.cpp
index 64dfcf9b12..5d6ae78872 100644
--- a/engines/gob/util.cpp
+++ b/engines/gob/util.cpp
@@ -367,21 +367,29 @@ void Util::notifyNewAnim() {
_startFrameTime = getTimeKey();
}
-void Util::waitEndFrame() {
+void Util::waitEndFrame(bool handleInput) {
int32 time;
- _vm->_video->waitRetrace();
-
time = getTimeKey() - _startFrameTime;
if ((time > 1000) || (time < 0)) {
+ _vm->_video->retrace();
_startFrameTime = getTimeKey();
return;
}
- int32 toWait = _frameWaitTime - time;
+ int32 toWait = 0;
+ do {
+ if (toWait > 0)
+ delay(MIN<int>(toWait, 10));
+
+ if (handleInput)
+ processInput();
+
+ _vm->_video->retrace();
- if (toWait > 0)
- delay(toWait);
+ time = getTimeKey() - _startFrameTime;
+ toWait = _frameWaitTime - time;
+ } while (toWait > 0);
_startFrameTime = getTimeKey();
}