summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/kernel.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2019-11-23 19:24:39 +0100
committerGitHub <noreply@github.com>2019-11-23 19:24:39 +0100
commit6a3fc5d2ff2732e0392db56b04ff0c4e2c167bf2 (patch)
tree7d8189083964982abf5e48e3dd8e87e504ca7ab6 /src/core/hle/kernel/kernel.cpp
parentMerge pull request #3141 from ReinUsesLisp/gl-position (diff)
parentKernel: Optimize condition variable threads management. (diff)
downloadyuzu-6a3fc5d2ff2732e0392db56b04ff0c4e2c167bf2.tar
yuzu-6a3fc5d2ff2732e0392db56b04ff0c4e2c167bf2.tar.gz
yuzu-6a3fc5d2ff2732e0392db56b04ff0c4e2c167bf2.tar.bz2
yuzu-6a3fc5d2ff2732e0392db56b04ff0c4e2c167bf2.tar.lz
yuzu-6a3fc5d2ff2732e0392db56b04ff0c4e2c167bf2.tar.xz
yuzu-6a3fc5d2ff2732e0392db56b04ff0c4e2c167bf2.tar.zst
yuzu-6a3fc5d2ff2732e0392db56b04ff0c4e2c167bf2.zip
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
-rw-r--r--src/core/hle/kernel/kernel.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index f94ac150d..9d3b309b3 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -64,8 +64,11 @@ static void ThreadWakeupCallback(u64 thread_handle, [[maybe_unused]] s64 cycles_
} else if (thread->GetStatus() == ThreadStatus::WaitMutex ||
thread->GetStatus() == ThreadStatus::WaitCondVar) {
thread->SetMutexWaitAddress(0);
- thread->SetCondVarWaitAddress(0);
thread->SetWaitHandle(0);
+ if (thread->GetStatus() == ThreadStatus::WaitCondVar) {
+ thread->GetOwnerProcess()->RemoveConditionVariableThread(thread);
+ thread->SetCondVarWaitAddress(0);
+ }
auto* const lock_owner = thread->GetLockOwner();
// Threads waking up by timeout from WaitProcessWideKey do not perform priority inheritance