aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/hle/kernel/semaphore.cpp
diff options
context:
space:
mode:
authorGravatar bunnei <bunneidev@gmail.com>2015-01-17 22:23:49 -0500
committerGravatar bunnei <bunneidev@gmail.com>2015-01-21 19:10:24 -0500
commitaa01c57ae9d73e41b65d37860ca6fbb91caba33a (patch)
tree904936860b1e8319ec5edc3a1e0e6c2c12f01d9f /src/core/hle/kernel/semaphore.cpp
parent627e96fc15f99eea0f1c5ccdb46d85cadb3efd69 (diff)
Kernel: Separate WaitSynchronization into Wait and Acquire methods.
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);
+ }
};
////////////////////////////////////////////////////////////////////////////////////////////////////