mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
On a PSP, every InitStart fails with INVALID_STATUS until the last dialog started is back at NONE, including while it's shutting down, and before its params are checked. A failed InitStart leaves the current type alone. We returned WRONG_TYPE instead, and a failed InitStart (e.g. a bad size) still switched the current type, so every later dialog was refused. (One of ours that fails after already starting, as savedata can, still becomes the current type, since the game may poll it.) The busy check applies status changes that are due, but doesn't use up an auto status dialog's one-time INITIALIZE/SHUTDOWN reports; one that only waits to report SHUTDOWN is let finish. Auto status dialogs now release volatile memory on the way to NONE, including when the game saw RUNNING before the init thread was done, which used to leave it locked for the next dialog. GamedataInstall no longer requires currentDialogActive, which its ShutdownStart cleared even when it then failed, so it could never finish - and would now have blocked every other dialog. Also: MsgDialog accepts exactly the three sizes sceUtility_Driver does (we memcpy'd whatever size was given), and HtmlViewer GetStatus answers WRONG_TYPE. Adds utility/dialog/status and utility/dialog/priority, recorded on a PSP. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>