aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics
diff options
context:
space:
mode:
authorFilippos Karapetis2012-02-17 10:52:40 +0200
committerFilippos Karapetis2012-02-17 10:53:42 +0200
commitc48ad37244e3706972b538616d0c0ce6653b4c68 (patch)
tree19532492e7ad73be403d2c3ee0fee9ca4f1953db /engines/sci/graphics
parent8c5f988a005f8bdf11ad9ea025bc31a010bd133e (diff)
downloadscummvm-rg350-c48ad37244e3706972b538616d0c0ce6653b4c68.tar.gz
scummvm-rg350-c48ad37244e3706972b538616d0c0ce6653b4c68.tar.bz2
scummvm-rg350-c48ad37244e3706972b538616d0c0ce6653b4c68.zip
SCI: Fix bug #3487088 - "SCI: LB1: Missing Wait cursor"
Diffstat (limited to 'engines/sci/graphics')
-rw-r--r--engines/sci/graphics/cursor.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/engines/sci/graphics/cursor.cpp b/engines/sci/graphics/cursor.cpp
index a939b042a7..1f7a2cfdbb 100644
--- a/engines/sci/graphics/cursor.cpp
+++ b/engines/sci/graphics/cursor.cpp
@@ -131,6 +131,15 @@ void GfxCursor::kernelSetShape(GuiResourceId resourceId) {
// bit 0 of resourceData[3] is set on <SCI1 games, which means center hotspot
if ((hotspot.x == 0) && (hotspot.y == 256))
hotspot.x = hotspot.y = SCI_CURSOR_SCI0_HEIGHTWIDTH / 2;
+ // LB1 defines bogus hotspot data for the busy cursor, which is fairly easy
+ // to detect, as the hotspot is defined outside the visible screen (!).
+ // Presumably, this was done to prevent the cursor from being usable, however
+ // the only thing that can be done when the wait cursor is shown is to skip
+ // scenes by left clicking. This bogus hotspot causes the cursor to not be
+ // drawn at all, thus we detect it and set the hotspot to (0, 0) instead.
+ // Fixes bug #3487088.
+ if (hotspot.x > _screen->getDisplayWidth())
+ hotspot.x = hotspot.y = 0;
// Now find out what colors we are supposed to use
colorMapping[0] = 0; // Black is hardcoded