aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/graphics/frameout.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp
index 08fdd5143f..749403093f 100644
--- a/engines/sci/graphics/frameout.cpp
+++ b/engines/sci/graphics/frameout.cpp
@@ -35,6 +35,7 @@
#include "sci/sci.h"
#include "sci/console.h"
+#include "sci/event.h"
#include "sci/engine/features.h"
#include "sci/engine/kernel.h"
#include "sci/engine/state.h"
@@ -507,6 +508,14 @@ void GfxFrameout::kernelAddPicAt(const reg_t planeObject, const GuiResourceId pi
#pragma mark Rendering
void GfxFrameout::frameOut(const bool shouldShowBits, const Common::Rect &eraseRect) {
+ // In SSCI, mouse events were received via hardware interrupt, so the mouse
+ // cursor would always get updated whenever the user moved the mouse. Since
+ // we must poll for mouse events instead, poll here so that the mouse gets
+ // updated with its current position at render time. If we do not do this,
+ // the mouse gets "stuck" during loops that do not make calls to kGetEvent,
+ // like transitions and the benchmarking loop at the start of every game.
+ g_sci->getEventManager()->getSciEvent(SCI_EVENT_PEEK);
+
RobotDecoder &robotPlayer = g_sci->_video32->getRobotPlayer();
const bool robotIsActive = robotPlayer.getStatus() != RobotDecoder::kRobotStatusUninitialized;