diff options
| author | 2019-12-11 11:55:38 -0400 | |
|---|---|---|
| committer | 2019-12-11 10:55:38 -0500 | |
| commit | 22c6b9fab2393a822209e16af5058eee0efe18ea (patch) | |
| tree | a0261553fde8d9c12c0dfaf3dff93bd0d0f522ea /src/core/hle/kernel/kernel.cpp | |
| parent | Merge pull request #3201 from lioncash/dump (diff) | |
| download | yuzu-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.cpp | 6 |
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) { |