#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 |
Version: | 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)
Change History (10)
by , 8 years ago
Attachment: | myst-001.mys added |
---|
comment:1 by , 8 years ago
comment:3 by , 8 years ago
Owner: | set to |
---|---|
Resolution: | → fixed |
Status: | new → closed |
comment:5 by , 8 years ago
Resolution: | fixed |
---|---|
Status: | closed → new |
comment:6 by , 8 years ago
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 by , 8 years ago
And I have now opened a pull request with a fix for the remaining issue: https://github.com/scummvm/scummvm/pull/801
comment:8 by , 8 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Diff: