aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/hle/kernel/semaphore.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel/semaphore.cpp')
-rw-r--r--src/core/hle/kernel/semaphore.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/core/hle/kernel/semaphore.cpp b/src/core/hle/kernel/semaphore.cpp
index 28892844..6464b258 100644
--- a/src/core/hle/kernel/semaphore.cpp
+++ b/src/core/hle/kernel/semaphore.cpp
@@ -32,18 +32,27 @@ public:
return available_count > 0;
}
- ResultVal<bool> WaitSynchronization(unsigned index) override {
+ ResultVal<bool> Wait(unsigned index) override {
bool wait = !IsAvailable();
if (wait) {
Kernel::WaitCurrentThread_WaitSynchronization(WAITTYPE_SEMA, this, index);
AddWaitingThread(GetCurrentThread());
- } else {
- --available_count;
}
return MakeResult<bool>(wait);
}
+
+ ResultVal<bool> Acquire() override {
+ bool res = false;
+
+ if (IsAvailable()) {
+ --available_count;
+ res = true;
+ }
+
+ return MakeResult<bool>(res);
+ }
};
////////////////////////////////////////////////////////////////////////////////////////////////////