aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/readable_event.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-12-04 18:54:18 -0500
committerLioncash <mathew1800@gmail.com>2018-12-04 20:14:55 -0500
commita3aa7aaf0be9d95766b9c123b7c32b6505084c3c (patch)
tree1781f48332b8b58303baeac93654bc247b87bf94 /src/core/hle/kernel/readable_event.cpp
parente5dd4cb39266fe4e237b4024da881f855353b3eb (diff)
kernel/readable_event: Add member function for enforcing a strict reset contract
svcResetSignal relies on the event instance to have already been signaled before attempting to reset it. If this isn't the case, then an error code has to be returned.
Diffstat (limited to 'src/core/hle/kernel/readable_event.cpp')
-rw-r--r--src/core/hle/kernel/readable_event.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/core/hle/kernel/readable_event.cpp b/src/core/hle/kernel/readable_event.cpp
index 92e16b4e6..ba01f495c 100644
--- a/src/core/hle/kernel/readable_event.cpp
+++ b/src/core/hle/kernel/readable_event.cpp
@@ -4,10 +4,10 @@
#include <algorithm>
#include "common/assert.h"
+#include "core/hle/kernel/errors.h"
#include "core/hle/kernel/object.h"
#include "core/hle/kernel/readable_event.h"
#include "core/hle/kernel/thread.h"
-#include "core/hle/kernel/writable_event.h"
namespace Kernel {
@@ -34,6 +34,16 @@ void ReadableEvent::Clear() {
signaled = false;
}
+ResultCode ReadableEvent::Reset() {
+ if (!signaled) {
+ return ERR_INVALID_STATE;
+ }
+
+ Clear();
+
+ return RESULT_SUCCESS;
+}
+
void ReadableEvent::WakeupAllWaitingThreads() {
WaitObject::WakeupAllWaitingThreads();