summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/service_thread.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2022-01-22 07:34:47 +0100
committerGitHub <noreply@github.com>2022-01-22 07:34:47 +0100
commit68c8a1b17093dabfaf8558163b6f7ff326ac9938 (patch)
tree4a8965dd8c142333e681564a8da803c2e4a45a56 /src/core/hle/kernel/service_thread.cpp
parentMerge pull request #7752 from Morph1984/SetCpuOverclockEnabled (diff)
parenthle: kernel: KThread: Ensure host (dummy) threads block on locking. (diff)
downloadyuzu-68c8a1b17093dabfaf8558163b6f7ff326ac9938.tar
yuzu-68c8a1b17093dabfaf8558163b6f7ff326ac9938.tar.gz
yuzu-68c8a1b17093dabfaf8558163b6f7ff326ac9938.tar.bz2
yuzu-68c8a1b17093dabfaf8558163b6f7ff326ac9938.tar.lz
yuzu-68c8a1b17093dabfaf8558163b6f7ff326ac9938.tar.xz
yuzu-68c8a1b17093dabfaf8558163b6f7ff326ac9938.tar.zst
yuzu-68c8a1b17093dabfaf8558163b6f7ff326ac9938.zip
Diffstat (limited to 'src/core/hle/kernel/service_thread.cpp')
-rw-r--r--src/core/hle/kernel/service_thread.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/core/hle/kernel/service_thread.cpp b/src/core/hle/kernel/service_thread.cpp
index 03f3dec10..4eb3a5988 100644
--- a/src/core/hle/kernel/service_thread.cpp
+++ b/src/core/hle/kernel/service_thread.cpp
@@ -12,6 +12,7 @@
#include "common/scope_exit.h"
#include "common/thread.h"
#include "core/hle/kernel/k_session.h"
+#include "core/hle/kernel/k_thread.h"
#include "core/hle/kernel/kernel.h"
#include "core/hle/kernel/service_thread.h"
@@ -50,6 +51,10 @@ ServiceThread::Impl::Impl(KernelCore& kernel, std::size_t num_threads, const std
kernel.RegisterHostThread();
+ // Ensure the dummy thread allocated for this host thread is closed on exit.
+ auto* dummy_thread = kernel.GetCurrentEmuThread();
+ SCOPE_EXIT({ dummy_thread->Close(); });
+
while (true) {
std::function<void()> task;