diff --git a/Core/Dialog/PSPDialog.cpp b/Core/Dialog/PSPDialog.cpp index b7dde7a58..5420fbc59 100644 --- a/Core/Dialog/PSPDialog.cpp +++ b/Core/Dialog/PSPDialog.cpp @@ -58,7 +58,7 @@ void PSPDialog::DisplayMessage(std::string text) PPGeDrawTextWrapped(text.c_str(), 40, 50, 420, PPGE_ALIGN_LEFT, 0.55f, CalcFadedColor(0xFFFFFFFF)); } -int PSPDialog::Shutdown() +int PSPDialog::Shutdown(bool force) { status = SCE_UTILITY_STATUS_SHUTDOWN; return 0; diff --git a/Core/Dialog/PSPDialog.h b/Core/Dialog/PSPDialog.h index 98decbc9f..3f0a9451d 100644 --- a/Core/Dialog/PSPDialog.h +++ b/Core/Dialog/PSPDialog.h @@ -52,7 +52,7 @@ public: virtual ~PSPDialog(); virtual int Update(); - virtual int Shutdown(); + virtual int Shutdown(bool force = false); virtual void DoState(PointerWrap &p); enum DialogStatus diff --git a/Core/Dialog/PSPMsgDialog.cpp b/Core/Dialog/PSPMsgDialog.cpp index 685d157cd..d763a3ee9 100755 --- a/Core/Dialog/PSPMsgDialog.cpp +++ b/Core/Dialog/PSPMsgDialog.cpp @@ -239,7 +239,7 @@ int PSPMsgDialog::Abort() return PSPDialog::Shutdown(); } -int PSPMsgDialog::Shutdown() +int PSPMsgDialog::Shutdown(bool force) { return PSPDialog::Shutdown(); } diff --git a/Core/Dialog/PSPMsgDialog.h b/Core/Dialog/PSPMsgDialog.h index d96a0e389..b06a00b4c 100644 --- a/Core/Dialog/PSPMsgDialog.h +++ b/Core/Dialog/PSPMsgDialog.h @@ -59,7 +59,7 @@ public: virtual int Init(unsigned int paramAddr); virtual int Update(); - virtual int Shutdown(); + virtual int Shutdown(bool force = false); virtual void DoState(PointerWrap &p); int Abort(); diff --git a/Core/Dialog/PSPSaveDialog.cpp b/Core/Dialog/PSPSaveDialog.cpp index 7b4fda7d6..a054ca83e 100755 --- a/Core/Dialog/PSPSaveDialog.cpp +++ b/Core/Dialog/PSPSaveDialog.cpp @@ -860,9 +860,9 @@ int PSPSaveDialog::Update() return 0; } -int PSPSaveDialog::Shutdown() +int PSPSaveDialog::Shutdown(bool force) { - if (status != SCE_UTILITY_STATUS_FINISHED) + if (status != SCE_UTILITY_STATUS_FINISHED && !force) return SCE_ERROR_UTILITY_INVALID_STATUS; PSPDialog::Shutdown(); diff --git a/Core/Dialog/PSPSaveDialog.h b/Core/Dialog/PSPSaveDialog.h index 48580b790..254438512 100644 --- a/Core/Dialog/PSPSaveDialog.h +++ b/Core/Dialog/PSPSaveDialog.h @@ -69,7 +69,7 @@ public: virtual int Init(int paramAddr); virtual int Update(); - virtual int Shutdown(); + virtual int Shutdown(bool force = false); virtual void DoState(PointerWrap &p); private : diff --git a/Core/HLE/sceUtility.cpp b/Core/HLE/sceUtility.cpp index 1baecef9f..e8c7db559 100644 --- a/Core/HLE/sceUtility.cpp +++ b/Core/HLE/sceUtility.cpp @@ -77,10 +77,10 @@ void __UtilityDoState(PointerWrap &p) void __UtilityShutdown() { - saveDialog.Shutdown(); - msgDialog.Shutdown(); - oskDialog.Shutdown(); - netDialog.Shutdown(); + saveDialog.Shutdown(true); + msgDialog.Shutdown(true); + oskDialog.Shutdown(true); + netDialog.Shutdown(true); } int __UtilityGetStatus()