aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/engine/kgraphics.cpp9
-rw-r--r--engines/sci/graphics/gui.cpp4
-rw-r--r--engines/sci/graphics/gui.h1
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);