From bec1acac06c8fcdfcd809ded4cd2d74fe7b6af3c Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 14 Apr 2005 21:53:37 +0000 Subject: Fix from wjp for redraws and input during delays svn-id: r17602 --- gob/inter.cpp | 2 +- gob/util.cpp | 14 +++++++++++++- gob/util.h | 3 ++- 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); -- cgit v1.2.3