summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/kernel.cpp
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2019-12-11 11:55:38 -0400
committerGravatar bunnei2019-12-11 10:55:38 -0500
commit22c6b9fab2393a822209e16af5058eee0efe18ea (patch)
treea0261553fde8d9c12c0dfaf3dff93bd0d0f522ea /src/core/hle/kernel/kernel.cpp
parentMerge pull request #3201 from lioncash/dump (diff)
downloadyuzu-22c6b9fab2393a822209e16af5058eee0efe18ea.tar.gz
yuzu-22c6b9fab2393a822209e16af5058eee0efe18ea.tar.xz
yuzu-22c6b9fab2393a822209e16af5058eee0efe18ea.zip
Kernel: Correct behavior of Address Arbiter threads. (#3165)
* Kernel: Correct behavior of Address Arbiter threads. This corrects arbitration threads to behave just like in Horizon OS. They are added into a container and released according to what priority they had when added. Horizon OS does not reorder them if their priority changes. * Kernel: Address Feedback.
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
-rw-r--r--src/core/hle/kernel/kernel.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 0b149067a..1d0783bd3 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -78,9 +78,9 @@ static void ThreadWakeupCallback(u64 thread_handle, [[maybe_unused]] s64 cycles_
78 } 78 }
79 } 79 }
80 80
81 if (thread->GetArbiterWaitAddress() != 0) { 81 if (thread->GetStatus() == ThreadStatus::WaitArb) {
82 ASSERT(thread->GetStatus() == ThreadStatus::WaitArb); 82 auto& address_arbiter = thread->GetOwnerProcess()->GetAddressArbiter();
83 thread->SetArbiterWaitAddress(0); 83 address_arbiter.HandleWakeupThread(thread);
84 } 84 }
85 85
86 if (resume) { 86 if (resume) {