mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-26 19:58:36 +01:00
Fix black screen on multiple libretro content loads.
Moves ThreadPool teardown to retro_unload_game. Gives ThreadPool threads some breathing room to terminate before game load starts spamming it with tasks.
This commit is contained in:
1 parent
752fdc9d4d
commit
02a24cdb7d
3 files changed
+3
-6
No files matched your search
@@ -98,10 +98,6 @@ static void WorkerThreadFunc(GlobalThreadContext *global, ThreadContext *thread)
|
||||
}
|
||||
|
||||
void ThreadManager::Init(int numRealCores, int numLogicalCoresPerCpu) {
|
||||
if (!global_->threads_.empty()) {
|
||||
Teardown();
|
||||
}
|
||||
|
||||
numComputeThreads_ = std::min(numRealCores * numLogicalCoresPerCpu, MAX_CORES_TO_USE);
|
||||
int numThreads = numComputeThreads_ + EXTRA_THREADS;
|
||||
numThreads_ = numThreads;
|
||||
|
||||
@@ -46,6 +46,7 @@ public:
|
||||
void Init(int numCores, int numLogicalCoresPerCpu);
|
||||
void EnqueueTask(Task *task, TaskType taskType);
|
||||
void EnqueueTaskOnThread(int threadNum, Task *task, TaskType taskType);
|
||||
void Teardown();
|
||||
|
||||
// Currently does nothing. It will always be best-effort - maybe it cancels,
|
||||
// maybe it doesn't. Note that the id is the id() returned by the task. You need to make that
|
||||
@@ -57,8 +58,6 @@ public:
|
||||
int GetNumLooperThreads() const;
|
||||
|
||||
private:
|
||||
void Teardown();
|
||||
|
||||
GlobalThreadContext *global_ = nullptr;
|
||||
|
||||
int numThreads_ = 0;
|
||||
|
||||
@@ -675,6 +675,8 @@ void retro_unload_game(void)
|
||||
delete ctx;
|
||||
ctx = nullptr;
|
||||
PSP_CoreParameter().graphicsContext = nullptr;
|
||||
|
||||
g_threadManager.Teardown();
|
||||
}
|
||||
|
||||
void retro_reset(void)
|
||||
|
||||
Reference in new issue
Block a user