summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/mutex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel/mutex.cpp')
-rw-r--r--src/core/hle/kernel/mutex.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/core/hle/kernel/mutex.cpp b/src/core/hle/kernel/mutex.cpp
index be2c49706..ebc9e79d7 100644
--- a/src/core/hle/kernel/mutex.cpp
+++ b/src/core/hle/kernel/mutex.cpp
@@ -56,7 +56,15 @@ SharedPtr<Mutex> Mutex::Create(bool initial_locked, std::string name) {
56} 56}
57 57
58bool Mutex::ShouldWait() { 58bool Mutex::ShouldWait() {
59 return lock_count > 0 && holding_thread != GetCurrentThread();; 59 auto thread = GetCurrentThread();
60 bool wait = lock_count > 0 && holding_thread != thread;
61
62 // If the holding thread of the mutex is lower priority than this thread, that thread should
63 // temporarily inherit this thread's priority
64 if (wait && thread->current_priority < holding_thread->current_priority)
65 holding_thread->BoostPriority(thread->current_priority);
66
67 return wait;
60} 68}
61 69
62void Mutex::Acquire() { 70void Mutex::Acquire() {