diff options
author | bunnei <bunneidev@gmail.com> | 2015-06-08 05:39:37 +0200 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2015-06-17 04:34:39 +0200 |
commit | 71e8822d23c030311858e6fcc8480b9c52f13f39 (patch) | |
tree | 0a5f53cbcebc2c98c7c9c224cbc1a91c1b783366 /src/core/hle/kernel/kernel.cpp | |
parent | Merge pull request #866 from lioncash/typo (diff) | |
download | yuzu-71e8822d23c030311858e6fcc8480b9c52f13f39.tar yuzu-71e8822d23c030311858e6fcc8480b9c52f13f39.tar.gz yuzu-71e8822d23c030311858e6fcc8480b9c52f13f39.tar.bz2 yuzu-71e8822d23c030311858e6fcc8480b9c52f13f39.tar.lz yuzu-71e8822d23c030311858e6fcc8480b9c52f13f39.tar.xz yuzu-71e8822d23c030311858e6fcc8480b9c52f13f39.tar.zst yuzu-71e8822d23c030311858e6fcc8480b9c52f13f39.zip |
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
-rw-r--r-- | src/core/hle/kernel/kernel.cpp | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index 726e4d2ff..20e11da16 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp @@ -32,27 +32,13 @@ void WaitObject::RemoveWaitingThread(Thread* thread) { waiting_threads.erase(itr); } -SharedPtr<Thread> WaitObject::WakeupNextThread() { - if (waiting_threads.empty()) - return nullptr; - - auto next_thread = std::move(waiting_threads.front()); - waiting_threads.erase(waiting_threads.begin()); - - next_thread->ReleaseWaitObject(this); - - return next_thread; -} - void WaitObject::WakeupAllWaitingThreads() { - auto waiting_threads_copy = waiting_threads; + for (auto thread : waiting_threads) + thread->ResumeFromWait(); - // We use a copy because ReleaseWaitObject will remove the thread from this object's - // waiting_threads list - for (auto thread : waiting_threads_copy) - thread->ReleaseWaitObject(this); + waiting_threads.clear(); - ASSERT_MSG(waiting_threads.empty(), "failed to awaken all waiting threads!"); + HLE::Reschedule(__func__); } HandleTable::HandleTable() { |