diff --git a/UI/GameInfoCache.cpp b/UI/GameInfoCache.cpp index 37f962c874..23fcfc3574 100644 --- a/UI/GameInfoCache.cpp +++ b/UI/GameInfoCache.cpp @@ -674,6 +674,8 @@ void GameInfoCache::Init() { } void GameInfoCache::Shutdown() { + CancelAll(); + if (gameInfoWQ_) { StopProcessingWorkQueue(gameInfoWQ_); delete gameInfoWQ_; @@ -682,6 +684,8 @@ void GameInfoCache::Shutdown() { } void GameInfoCache::Clear() { + CancelAll(); + if (gameInfoWQ_) { gameInfoWQ_->Flush(); gameInfoWQ_->WaitUntilDone(); @@ -689,6 +693,15 @@ void GameInfoCache::Clear() { info_.clear(); } +void GameInfoCache::CancelAll() { + for (auto info : info_) { + FileLoader *fl = info.second->GetFileLoader(); + if (fl) { + fl->Cancel(); + } + } +} + void GameInfoCache::FlushBGs() { for (auto iter = info_.begin(); iter != info_.end(); iter++) { std::lock_guard lock(iter->second->lock); diff --git a/UI/GameInfoCache.h b/UI/GameInfoCache.h index f664a1d621..4cf43a7ca7 100644 --- a/UI/GameInfoCache.h +++ b/UI/GameInfoCache.h @@ -173,6 +173,7 @@ public: PrioritizedWorkQueue *WorkQueue() { return gameInfoWQ_; } + void CancelAll(); void WaitUntilDone(std::shared_ptr &info); private: diff --git a/android/jni/app-android.cpp b/android/jni/app-android.cpp index 5c44abb5a6..87d5d799c0 100644 --- a/android/jni/app-android.cpp +++ b/android/jni/app-android.cpp @@ -1171,8 +1171,6 @@ retry: } ILOG("Leaving EGL/Vulkan render loop."); - if (g_gameInfoCache) - g_gameInfoCache->WorkQueue()->Flush(); NativeShutdownGraphics(); renderer_inited = false;