diff options
| author | liamwhite <liamwhite@users.noreply.github.com> | 2022-10-14 17:30:38 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-14 17:30:38 -0400 |
| commit | ae6dd1143c0549fe5bcbd7326c69cbcb6b5a4433 (patch) | |
| tree | 4b04503746cd43789b1a812756974e38868be4cc /src/core/hle/kernel/k_readable_event.cpp | |
| parent | 1d3810971453df275ccd0fcdfb9c480a070c30c3 (diff) | |
| parent | a9ace6856de57f1124daaa77aacd6f36a64c68f7 (diff) | |
Merge pull request #9061 from liamwhite/writable-event
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; } |
