From 10f52fa2b0d33c0a315e297e405cf760bec983b2 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 26 Jan 2014 19:10:20 -0800 Subject: [PATCH] Just in case, also clear results on shutdown. --- Core/HLE/sceIo.cpp | 1 + Core/HW/AsyncIOManager.cpp | 6 ++++++ Core/HW/AsyncIOManager.h | 1 + 3 files changed, 8 insertions(+) diff --git a/Core/HLE/sceIo.cpp b/Core/HLE/sceIo.cpp index 7d6899d497..60cfbd382c 100644 --- a/Core/HLE/sceIo.cpp +++ b/Core/HLE/sceIo.cpp @@ -503,6 +503,7 @@ void __IoShutdown() { if (ioManagerThread != NULL) { delete ioManagerThread; ioManagerThread = NULL; + ioManager.Shutdown(); } pspFileSystem.Unmount("ms0:", memstickSystem); diff --git a/Core/HW/AsyncIOManager.cpp b/Core/HW/AsyncIOManager.cpp index f1b23ebaef..0bf29f1134 100644 --- a/Core/HW/AsyncIOManager.cpp +++ b/Core/HW/AsyncIOManager.cpp @@ -29,6 +29,12 @@ void AsyncIOManager::ScheduleOperation(AsyncIOEvent ev) { ScheduleEvent(ev); } +void AsyncIOManager::Shutdown() { + lock_guard guard(resultsLock_); + resultsPending_.clear(); + results_.clear(); +} + bool AsyncIOManager::PopResult(u32 handle, AsyncIOResult &result) { lock_guard guard(resultsLock_); if (results_.find(handle) != results_.end()) { diff --git a/Core/HW/AsyncIOManager.h b/Core/HW/AsyncIOManager.h index 6c057da9b1..d2aacfa316 100644 --- a/Core/HW/AsyncIOManager.h +++ b/Core/HW/AsyncIOManager.h @@ -52,6 +52,7 @@ public: void DoState(PointerWrap &p); void ScheduleOperation(AsyncIOEvent ev); + void Shutdown(); bool PopResult(u32 handle, AsyncIOResult &result); bool WaitResult(u32 handle, AsyncIOResult &result);