aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
diff options
context:
space:
mode:
authorFilippos Karapetis2010-11-20 19:52:31 +0000
committerFilippos Karapetis2010-11-20 19:52:31 +0000
commitd886c037dd43aa76550c8dcea7b59f8f53f1c6fa (patch)
tree9c094facafbfb57ecd066c197b989cb1bf208f09 /engines/sci/engine
parent29c6ab433e7bd1bb7ae2a3074275662d8d8907c5 (diff)
downloadscummvm-rg350-d886c037dd43aa76550c8dcea7b59f8f53f1c6fa.tar.gz
scummvm-rg350-d886c037dd43aa76550c8dcea7b59f8f53f1c6fa.tar.bz2
scummvm-rg350-d886c037dd43aa76550c8dcea7b59f8f53f1c6fa.zip
SCI: Fix ScummVM freezing during the credits scene in EcoQuest 1 (bug #3101846)
svn-id: r54395
Diffstat (limited to 'engines/sci/engine')
-rw-r--r--engines/sci/engine/kgraphics.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index 8d8b2dd46d..33c819fa4c 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -33,6 +33,7 @@
#include "sci/sci.h"
#include "sci/debug.h" // for g_debug_sleeptime_factor
+#include "sci/event.h"
#include "sci/resource.h"
#include "sci/engine/features.h"
#include "sci/engine/state.h"
@@ -1118,6 +1119,14 @@ reg_t kAnimate(EngineState *s, int argc, reg_t *argv) {
g_sci->_gfxAnimate->kernelAnimate(castListReference, cycle, argc, argv);
+ // WORKAROUND: At the end of Ecoquest 1, during the credits, the game
+ // doesn't call kGetEvent(), so no events are processed (e.g. window
+ // focusing, window moving etc). We poll events for that scene, to
+ // keep ScummVM responsive. Fixes ScummVM "freezing" during the credits,
+ // bug #3101846
+ if (g_sci->getGameId() == GID_ECOQUEST && s->currentRoomNumber() == 680)
+ g_sci->getEventManager()->getSciEvent(SCI_EVENT_PEEK);
+
return s->r_acc;
}