aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/address_arbiter.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2019-03-28 21:42:24 -0400
committerGitHub <noreply@github.com>2019-03-28 21:42:24 -0400
commitf770c17d011e76cb268df5ba5d687609a0f514d4 (patch)
tree95638bae93a71b58d4c58ff5adb03d1256b3cb8a /src/core/hle/kernel/address_arbiter.cpp
parentb404fcdf1443b91ac9994c05ad1fe039fcd9675e (diff)
parent9c7319a4d423a20c45cd8d7898c2f73659526d33 (diff)
Merge pull request #2266 from FernandoS27/arbitration
Kernel: Fixes to Arbitration and SignalProcessWideKey Management
Diffstat (limited to 'src/core/hle/kernel/address_arbiter.cpp')
-rw-r--r--src/core/hle/kernel/address_arbiter.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/core/hle/kernel/address_arbiter.cpp b/src/core/hle/kernel/address_arbiter.cpp
index 352190da8..c8842410b 100644
--- a/src/core/hle/kernel/address_arbiter.cpp
+++ b/src/core/hle/kernel/address_arbiter.cpp
@@ -26,7 +26,7 @@ void WakeThreads(const std::vector<SharedPtr<Thread>>& waiting_threads, s32 num_
// them all.
std::size_t last = waiting_threads.size();
if (num_to_wake > 0) {
- last = num_to_wake;
+ last = std::min(last, static_cast<std::size_t>(num_to_wake));
}
// Signal the waiting threads.
@@ -90,9 +90,9 @@ ResultCode AddressArbiter::ModifyByWaitingCountAndSignalToAddressIfEqual(VAddr a
// Determine the modified value depending on the waiting count.
s32 updated_value;
if (waiting_threads.empty()) {
- updated_value = value - 1;
- } else if (num_to_wake <= 0 || waiting_threads.size() <= static_cast<u32>(num_to_wake)) {
updated_value = value + 1;
+ } else if (num_to_wake <= 0 || waiting_threads.size() <= static_cast<u32>(num_to_wake)) {
+ updated_value = value - 1;
} else {
updated_value = value;
}