diff options
author | Subv <subv2112@gmail.com> | 2016-12-14 18:13:02 +0100 |
---|---|---|
committer | Subv <subv2112@gmail.com> | 2016-12-14 18:35:01 +0100 |
commit | 5b1edc6ae70972d4a11eee1f1ff8fdff2122b5a2 (patch) | |
tree | b6fbcc194effc5e05a608ebde0ea3c887720d920 /src/core/hle/kernel | |
parent | Properly remove a thread from its wait_objects' waitlist when it is awoken by a timeout. (diff) | |
download | yuzu-5b1edc6ae70972d4a11eee1f1ff8fdff2122b5a2.tar yuzu-5b1edc6ae70972d4a11eee1f1ff8fdff2122b5a2.tar.gz yuzu-5b1edc6ae70972d4a11eee1f1ff8fdff2122b5a2.tar.bz2 yuzu-5b1edc6ae70972d4a11eee1f1ff8fdff2122b5a2.tar.lz yuzu-5b1edc6ae70972d4a11eee1f1ff8fdff2122b5a2.tar.xz yuzu-5b1edc6ae70972d4a11eee1f1ff8fdff2122b5a2.tar.zst yuzu-5b1edc6ae70972d4a11eee1f1ff8fdff2122b5a2.zip |
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r-- | src/core/hle/kernel/kernel.cpp | 9 | ||||
-rw-r--r-- | src/core/hle/kernel/thread.h | 10 |
2 files changed, 11 insertions, 8 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index 2ddeffcdd..209d35270 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp @@ -50,9 +50,9 @@ SharedPtr<Thread> WaitObject::GetHighestPriorityReadyThread() { if (thread->current_priority >= candidate_priority) continue; - bool ready_to_run = std::none_of(thread->wait_objects.begin(), thread->wait_objects.end(), [](const SharedPtr<WaitObject>& object) { - return object->ShouldWait(); - }); + bool ready_to_run = + std::none_of(thread->wait_objects.begin(), thread->wait_objects.end(), + [](const SharedPtr<WaitObject>& object) { return object->ShouldWait(); }); if (ready_to_run) { candidate = thread.get(); candidate_priority = thread->current_priority; @@ -83,7 +83,8 @@ void WaitObject::WakeupAllWaitingThreads() { thread->SetWaitSynchronizationResult(RESULT_SUCCESS); thread->ResumeFromWait(); - // Note: Removing the thread from the object's waitlist will be done by GetHighestPriorityReadyThread + // Note: Removing the thread from the object's waitlist will be + // done by GetHighestPriorityReadyThread. } } diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h index 4c254cb9d..238359fc5 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/thread.h @@ -178,17 +178,19 @@ public: /// Mutexes currently held by this thread, which will be released when it exits. boost::container::flat_set<SharedPtr<Mutex>> held_mutexes; - SharedPtr<Process> owner_process; ///< Process that owns this thread + SharedPtr<Process> owner_process; ///< Process that owns this thread /// Objects that the thread is waiting on. /// This is only populated when the thread should wait for all the objects to become ready. std::vector<SharedPtr<WaitObject>> wait_objects; - boost::container::flat_map<int, s32> wait_objects_index; ///< Mapping of Object ids to their position in the last waitlist that this object waited on. + /// Mapping of Object ids to their position in the last waitlist that this object waited on. + boost::container::flat_map<int, s32> wait_objects_index; - VAddr wait_address; ///< If waiting on an AddressArbiter, this is the arbitration address + VAddr wait_address; ///< If waiting on an AddressArbiter, this is the arbitration address - bool wait_set_output; ///< True if the WaitSynchronizationN output parameter should be set on thread wakeup + /// True if the WaitSynchronizationN output parameter should be set on thread wakeup. + bool wait_set_output; std::string name; |