diff options
author | Sven Hesse | 2012-06-28 17:37:58 +0200 |
---|---|---|
committer | Sven Hesse | 2012-07-30 01:24:18 +0200 |
commit | b5fa752b78c63bedcb53d38fb11244b7e99f9941 (patch) | |
tree | a421e5016586003a63ca869faccbeffc4298a9d4 /engines/gob/util.cpp | |
parent | 1cb6cc0218382bbf5fe487fd0e84d233e56592bb (diff) | |
download | scummvm-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.cpp | 20 |
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(); } |