diff options
author | bunnei <bunneidev@gmail.com> | 2014-11-30 14:47:49 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2014-11-30 14:47:49 +0100 |
commit | e3d1ffff4be6312ef2f25321cf4100748a7cd0b2 (patch) | |
tree | 7db418f0f4f275110f69861c2c228279d92d24fa | |
parent | Merge pull request #226 from bunnei/svc-and-thread-fixes (diff) | |
parent | Mutex: Changed behavior to always release mutex for all threads. (diff) | |
download | yuzu-e3d1ffff4be6312ef2f25321cf4100748a7cd0b2.tar yuzu-e3d1ffff4be6312ef2f25321cf4100748a7cd0b2.tar.gz yuzu-e3d1ffff4be6312ef2f25321cf4100748a7cd0b2.tar.bz2 yuzu-e3d1ffff4be6312ef2f25321cf4100748a7cd0b2.tar.lz yuzu-e3d1ffff4be6312ef2f25321cf4100748a7cd0b2.tar.xz yuzu-e3d1ffff4be6312ef2f25321cf4100748a7cd0b2.tar.zst yuzu-e3d1ffff4be6312ef2f25321cf4100748a7cd0b2.zip |
-rw-r--r-- | src/core/hle/kernel/mutex.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/core/hle/kernel/mutex.cpp b/src/core/hle/kernel/mutex.cpp index b303ba128..d07e9761b 100644 --- a/src/core/hle/kernel/mutex.cpp +++ b/src/core/hle/kernel/mutex.cpp @@ -88,20 +88,19 @@ bool ReleaseMutexForThread(Mutex* mutex, Handle thread) { bool ReleaseMutex(Mutex* mutex) { MutexEraseLock(mutex); - bool woke_threads = false; // Find the next waiting thread for the mutex... - while (!woke_threads && !mutex->waiting_threads.empty()) { + while (!mutex->waiting_threads.empty()) { std::vector<Handle>::iterator iter = mutex->waiting_threads.begin(); - woke_threads |= ReleaseMutexForThread(mutex, *iter); + ReleaseMutexForThread(mutex, *iter); mutex->waiting_threads.erase(iter); } + // Reset mutex lock thread handle, nothing is waiting - if (!woke_threads) { - mutex->locked = false; - mutex->lock_thread = -1; - } - return woke_threads; + mutex->locked = false; + mutex->lock_thread = -1; + + return true; } /** |