Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#7164 closed defect (fixed)

MYST: Cursor stays hidden after loading saved game while intro is playing

Reported by: criezy Owned by: bgK
Priority: normal Component: Engine: Mohawk
Keywords: Cc:
Game: Myst

Description

When loading a saved game while the intro is playing in Myst ME after loading the mouse cursor doesn't reappear.

Tested on OS X with recent master (gc294e4f). This was also reported on IRC on Debian 64 bits (with git aadc8531 and cedcdbc4).

I am attaching a save game right at the start of the game for convenience. Load it while the intro is playing and the problem should occur.

Ticket imported from: bugs/7164.

Attachments (2)

myst-001.mym (12.4 KB) - added by criezy 3 years ago.
myst-001.mys (54 bytes) - added by criezy 3 years ago.

Download all attachments as: .zip

Change History (10)

Changed 3 years ago by criezy

Attachment: myst-001.mys added

comment:1 Changed 3 years ago by criezy

  • Attachments has changed:

Diff:


--- old
+++ new
@@ -0,0 +1,2 @@
+myst-001.mym (12.7 kB; application/octet-stream)
+myst-001.mys (54 Bytes; application/octet-stream)

comment:2 Changed 3 years ago by criezy

Attachements were missing. Trying again...

comment:3 Changed 3 years ago by bgK

Owner: set to bgK
Resolution: fixed
Status: newclosed

comment:4 Changed 3 years ago by bgK

Thanks for the report, should be fixed in b51589e9

comment:5 Changed 3 years ago by criezy

Resolution: fixed
Status: closednew

comment:6 Changed 3 years ago by criezy

I am reopening the bug as it is fixed only when using the GMM to load the game. When using the MohawkOptionsDialog it still does not work.

After a quick look at the code, my understanding of it is that the Dialog::runModal(), or more exaclty GuiManager::runLoop(), will push a new cursor at the start and pop it at the end. In between the game is loaded, and the cursor is set to visible. But the cursor that is set to visible is the one that was pushed at the start of Dialog::runModal(). When it is removed from the stack at the end of runModal() we get back to the cursor from the engine that is still hidden.

A quick look at the GMM shows that it works because the load is actually triggered after runModal() and not from inside it. See Engine::openMainMenuDialog() (engine.cpp line 518). The comment indicate: "Load savegame after main menu execution (not from inside the menu loop to avoid mouse cursor glitches and simliar bugs, e.g. #2822778)."

A solution would be to do the same, with the MohawkOptionsDialog::load() not calling loadGameState(int slot) but instead storing the slot to open and opening it from MohawkEngine_Myst::run() just after the runDialog(*_optionsDialog); (and I assume the same would need to be done with Riven).

comment:7 Changed 3 years ago by criezy

And I have now opened a pull request with a fix for the remaining issue:
https://github.com/scummvm/scummvm/pull/801

comment:8 Changed 3 years ago by criezy

Resolution: fixed
Status: newclosed

comment:9 Changed 3 years ago by criezy

Fully fixed with commit 191a9a0.

Note: See TracTickets for help on using tickets.