diff --git a/Common/Thread/ThreadManager.cpp b/Common/Thread/ThreadManager.cpp index 615332911557..aea8b7558e14 100644 --- a/Common/Thread/ThreadManager.cpp +++ b/Common/Thread/ThreadManager.cpp @@ -139,6 +139,7 @@ static void WorkerThreadFunc(GlobalThreadContext *global, TaskThreadContext *thr } SetCurrentThreadName(thread->name); + // Should we do this on all threads? if (thread->type == TaskType::IO_BLOCKING) { AttachThreadToJNI(); } diff --git a/Common/Thread/ThreadManager.h b/Common/Thread/ThreadManager.h index 0b29af773043..c4b2e7a50de2 100644 --- a/Common/Thread/ThreadManager.h +++ b/Common/Thread/ThreadManager.h @@ -7,7 +7,7 @@ // To help smart scheduling. enum class TaskType { CPU_COMPUTE, - IO_BLOCKING, + IO_BLOCKING, // NOTE: Only these can access scoped storage on Android (they initialize the JNI context). DEDICATED_THREAD, // These can never get stuck in queue behind others, but are more expensive to launch. Cannot use I/O. }; diff --git a/Core/Screenshot.cpp b/Core/Screenshot.cpp index 781007450c67..f147b78357cb 100644 --- a/Core/Screenshot.cpp +++ b/Core/Screenshot.cpp @@ -361,7 +361,7 @@ ScreenshotResult TakeGameScreenshot(Draw::DrawContext *draw, const Path &filenam } if (callback) { - g_threadManager.EnqueueTask(new IndependentTask(TaskType::CPU_COMPUTE, TaskPriority::LOW, + g_threadManager.EnqueueTask(new IndependentTask(TaskType::IO_BLOCKING, TaskPriority::LOW, [buf = std::move(buf), callback = std::move(callback), filename, fmt, w, h]() { u8 *flipbuffer = nullptr; u32 width = w, height = h;