diff options
| author | Liam <byteslice@airmail.cc> | 2022-10-12 20:26:04 -0400 |
|---|---|---|
| committer | Liam <byteslice@airmail.cc> | 2022-10-12 20:29:29 -0400 |
| commit | a9ace6856de57f1124daaa77aacd6f36a64c68f7 (patch) | |
| tree | acf105c0e57d62889e2ebf88b463a7ebf7adc0b4 /src/core/hle/kernel/k_readable_event.cpp | |
| parent | dbacb31f61f3ba0e4f6c37ccfca16cf282a00cc4 (diff) | |
kernel: remove KWritableEvent
Diffstat (limited to 'src/core/hle/kernel/k_readable_event.cpp')
| -rw-r--r-- | src/core/hle/kernel/k_readable_event.cpp | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/src/core/hle/kernel/k_readable_event.cpp b/src/core/hle/kernel/k_readable_event.cpp index 94c5464fe..5c942d47c 100644 --- a/src/core/hle/kernel/k_readable_event.cpp +++ b/src/core/hle/kernel/k_readable_event.cpp @@ -15,31 +15,44 @@ KReadableEvent::KReadableEvent(KernelCore& kernel_) : KSynchronizationObject{ker KReadableEvent::~KReadableEvent() = default; +void KReadableEvent::Initialize(KEvent* parent) { + m_is_signaled = false; + m_parent = parent; + + if (m_parent != nullptr) { + m_parent->Open(); + } +} + bool KReadableEvent::IsSignaled() const { - ASSERT(kernel.GlobalSchedulerContext().IsLocked()); + ASSERT(KScheduler::IsSchedulerLockedByCurrentThread(kernel)); - return is_signaled; + return m_is_signaled; } void KReadableEvent::Destroy() { - if (parent) { - parent->Close(); + if (m_parent) { + { + KScopedSchedulerLock sl{kernel}; + m_parent->OnReadableEventDestroyed(); + } + m_parent->Close(); } } Result KReadableEvent::Signal() { KScopedSchedulerLock lk{kernel}; - if (!is_signaled) { - is_signaled = true; - NotifyAvailable(); + if (!m_is_signaled) { + m_is_signaled = true; + this->NotifyAvailable(); } return ResultSuccess; } Result KReadableEvent::Clear() { - Reset(); + this->Reset(); return ResultSuccess; } @@ -47,11 +60,11 @@ Result KReadableEvent::Clear() { Result KReadableEvent::Reset() { KScopedSchedulerLock lk{kernel}; - if (!is_signaled) { + if (!m_is_signaled) { return ResultInvalidState; } - is_signaled = false; + m_is_signaled = false; return ResultSuccess; } |
