aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2005-04-14 21:53:37 +0000
committerEugene Sandulenko2005-04-14 21:53:37 +0000
commitbec1acac06c8fcdfcd809ded4cd2d74fe7b6af3c (patch)
tree7131c03958eaef97d22eab817a5c5fd6f5e25c0a
parent4b18be1cf74af2da60fc94e67faefb1e1dbe24e7 (diff)
downloadscummvm-rg350-bec1acac06c8fcdfcd809ded4cd2d74fe7b6af3c.tar.gz
scummvm-rg350-bec1acac06c8fcdfcd809ded4cd2d74fe7b6af3c.tar.bz2
scummvm-rg350-bec1acac06c8fcdfcd809ded4cd2d74fe7b6af3c.zip
Fix from wjp for redraws and input during delays
svn-id: r17602
-rw-r--r--gob/inter.cpp2
-rw-r--r--gob/util.cpp14
-rw-r--r--gob/util.h3
3 files changed, 16 insertions, 3 deletions
diff --git a/gob/inter.cpp b/gob/inter.cpp
index 69ff7a0161..02a152ef54 100644
--- a/gob/inter.cpp
+++ b/gob/inter.cpp
@@ -931,7 +931,7 @@ void inter_keyFunc(void) {
if (flag != 1) {
if (flag != 2) {
- util_delay(flag);
+ util_longDelay(flag);
return;
}
diff --git a/gob/util.cpp b/gob/util.cpp
index d0410d1649..eeaf569a5f 100644
--- a/gob/util.cpp
+++ b/gob/util.cpp
@@ -175,6 +175,15 @@ void util_setMousePos(int16 x, int16 y) {
g_system->warpMouse(x, y);
}
+void util_longDelay(uint16 msecs)
+{
+ uint32 time = g_system->getMillis() + msecs;
+ do {
+ util_processInput();
+ util_delay(10);
+ } while (g_system->getMillis() < time);
+}
+
void util_delay(uint16 msecs) {
g_system->delayMillis(msecs);
}
@@ -198,7 +207,9 @@ void util_waitMouseUp(void) {
int16 buttons;
do {
+ util_processInput();
util_getMouseState(&x, &y, &buttons);
+ if (buttons != 0) util_delay(10);
} while (buttons != 0);
}
@@ -208,7 +219,9 @@ void util_waitMouseDown(void) {
int16 buttons;
do {
+ util_processInput();
util_getMouseState(&x, &y, &buttons);
+ if (buttons == 0) util_delay(10);
} while (buttons == 0);
}
@@ -246,7 +259,6 @@ void util_waitEndFrame() {
if (timer_enabled) {
do {
time = util_getTimeKey();
-
} while (time - startFrameTime < frameWaitTime);
} else {
if (frameWaitTime - time > 0)
diff --git a/gob/util.h b/gob/util.h
index 9233667f45..11a0483433 100644
--- a/gob/util.h
+++ b/gob/util.h
@@ -46,6 +46,7 @@ int16 util_checkKey(void);
int16 util_getRandom(int16 max);
void util_getMouseState(int16 *pX, int16 *pY, int16 *pButtons);
void util_setMousePos(int16 x, int16 y);
+void util_longDelay(uint16 msecs);
void util_delay(uint16 msecs);
void util_beep(int16 freq);
uint32 util_getTimeKey(void);
@@ -67,7 +68,7 @@ void util_clearPalette(void);
void util_insertStr(const char *str1, char *str2, int16 pos);
void util_cutFromStr(char *str, int16 from, int16 cutlen);
int16 util_strstr(const char *str1, char *str2);
-void util_waitEndFrame(void);
+void util_waitEndFrame();
void util_setFrameRate(int16 rate);
void util_listInsertBack(Util_List * list, void *data);