aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/event.cpp
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2017-01-01 19:23:19 -0500
committerSubv <subv2112@gmail.com>2017-01-05 13:06:17 -0500
commite52ca85711e8df54c8eafe556b6ba0ca683ddea0 (patch)
tree5a5842cdea80d830d4295d9a96cb5ff4bfd9162d /src/core/hle/kernel/event.cpp
parent0b897c45d2102ba5e1e765176d5840f66f6cfacd (diff)
Kernel: Implemented Pulse event and timers.
Closes #1904
Diffstat (limited to 'src/core/hle/kernel/event.cpp')
-rw-r--r--src/core/hle/kernel/event.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/core/hle/kernel/event.cpp b/src/core/hle/kernel/event.cpp
index 3e116e3df..a515f53f9 100644
--- a/src/core/hle/kernel/event.cpp
+++ b/src/core/hle/kernel/event.cpp
@@ -22,11 +22,6 @@ SharedPtr<Event> Event::Create(ResetType reset_type, std::string name) {
evt->reset_type = reset_type;
evt->name = std::move(name);
- if (reset_type == ResetType::Pulse) {
- LOG_ERROR(Kernel, "Unimplemented event reset type Pulse");
- UNIMPLEMENTED();
- }
-
return evt;
}
@@ -37,8 +32,7 @@ bool Event::ShouldWait() {
void Event::Acquire() {
ASSERT_MSG(!ShouldWait(), "object unavailable!");
- // Release the event if it's not sticky...
- if (reset_type != ResetType::Sticky)
+ if (reset_type == ResetType::OneShot)
signaled = false;
}
@@ -51,4 +45,11 @@ void Event::Clear() {
signaled = false;
}
+void Event::WakeupAllWaitingThreads() {
+ WaitObject::WakeupAllWaitingThreads();
+
+ if (reset_type == ResetType::Pulse)
+ signaled = false;
+}
+
} // namespace