diff --git a/Core/FileLoaders/RamCachingFileLoader.cpp b/Core/FileLoaders/RamCachingFileLoader.cpp index 5e7eb07e62..8e4808c771 100644 --- a/Core/FileLoaders/RamCachingFileLoader.cpp +++ b/Core/FileLoaders/RamCachingFileLoader.cpp @@ -104,12 +104,11 @@ void RamCachingFileLoader::ShutdownCache() { // We can't delete while the thread is running, so have to wait. // This should only happen from the menu. - while (aheadThreadRunning_) { - sleep_ms(1, "shutdown-ram-cache-poll"); - } if (aheadThread_.joinable()) aheadThread_.join(); + _dbg_assert_(!aheadThreadRunning_); + std::lock_guard guard(blocksMutex_); blocks_.clear(); if (cache_ != nullptr) { diff --git a/Core/FileLoaders/RamCachingFileLoader.h b/Core/FileLoaders/RamCachingFileLoader.h index dde5e74ecb..37d1ec7a85 100644 --- a/Core/FileLoaders/RamCachingFileLoader.h +++ b/Core/FileLoaders/RamCachingFileLoader.h @@ -64,8 +64,8 @@ private: std::vector blocks_; std::mutex blocksMutex_; - u32 aheadRemaining_; - s64 aheadPos_; + u32 aheadRemaining_ = 0; + s64 aheadPos_ = 0; std::thread aheadThread_; bool aheadThreadRunning_ = false; bool aheadCancel_ = false;