diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sci/engine/kgraphics.cpp | 9 | ||||
-rw-r--r-- | engines/sci/graphics/gui.cpp | 4 | ||||
-rw-r--r-- | engines/sci/graphics/gui.h | 1 |
3 files changed, 12 insertions, 2 deletions
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp index d58809f578..543aebb857 100644 --- a/engines/sci/engine/kgraphics.cpp +++ b/engines/sci/engine/kgraphics.cpp @@ -1030,7 +1030,11 @@ reg_t kShowMovie(EngineState *s, int argc, reg_t *argv) { if (argc == 1) return NULL_REG; - s->_gui->hideCursor(); + // Hide the cursor if it's showing and then show it again if it was + // previously visible. + bool reshowCursor = s->_gui->isCursorVisible(); + if (reshowCursor) + s->_gui->hideCursor(); // The Windows and DOS versions use different video format as well // as a different argument set. @@ -1072,7 +1076,8 @@ reg_t kShowMovie(EngineState *s, int argc, reg_t *argv) { if (playedVideo) s->_gui->syncWithFramebuffer(); - s->_gui->showCursor(); + if (reshowCursor) + s->_gui->showCursor(); return s->r_acc; } diff --git a/engines/sci/graphics/gui.cpp b/engines/sci/graphics/gui.cpp index 31716979a9..74e3e37659 100644 --- a/engines/sci/graphics/gui.cpp +++ b/engines/sci/graphics/gui.cpp @@ -788,6 +788,10 @@ void SciGui::showCursor() { _cursor->show(); } +bool SciGui::isCursorVisible() { + return _cursor->isVisible(); +} + void SciGui::setCursorShape(GuiResourceId cursorId) { _cursor->setShape(cursorId); } diff --git a/engines/sci/graphics/gui.h b/engines/sci/graphics/gui.h index 56905619f8..e77d24c8ce 100644 --- a/engines/sci/graphics/gui.h +++ b/engines/sci/graphics/gui.h @@ -132,6 +132,7 @@ public: void hideCursor(); void showCursor(); + bool isCursorVisible(); void setCursorShape(GuiResourceId cursorId); void setCursorView(GuiResourceId viewNum, int loopNum, int cellNum, Common::Point *hotspot); virtual void setCursorPos(Common::Point pos); |