diff options
author | bunnei <bunneidev@gmail.com> | 2014-12-10 22:52:55 -0500 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2014-12-10 22:52:55 -0500 |
commit | 3a75c8069e9c044f6a8f2fd80c7d35ea245a9f6e (patch) | |
tree | 59d94738da7ef6f31ddbc8d4cbfbd58f578e25d8 /src/core/hle/kernel/thread.cpp | |
parent | 37711fc62444849e8333d8512242ec0891e6a4ab (diff) | |
parent | bc318c464bbe1a33e37312339d25c56021c444e8 (diff) |
Merge pull request #256 from Subv/mutex
Kernel/Mutex: Properly lock the mutex when a thread enters it
Diffstat (limited to 'src/core/hle/kernel/thread.cpp')
-rw-r--r-- | src/core/hle/kernel/thread.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index 1e879b45ad..492b917e1d 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -14,6 +14,7 @@ #include "core/hle/hle.h" #include "core/hle/kernel/kernel.h" #include "core/hle/kernel/thread.h" +#include "core/hle/kernel/mutex.h" #include "core/hle/result.h" #include "core/mem_map.h" @@ -164,6 +165,9 @@ ResultCode StopThread(Handle handle, const char* reason) { Thread* thread = g_object_pool.Get<Thread>(handle); if (thread == nullptr) return InvalidHandle(ErrorModule::Kernel); + // Release all the mutexes that this thread holds + ReleaseThreadMutexes(handle); + ChangeReadyState(thread, false); thread->status = THREADSTATUS_DORMANT; for (Handle waiting_handle : thread->waiting_threads) { |