diff options
| author | Liam <byteslice@airmail.cc> | 2023-01-14 15:48:01 -0500 |
|---|---|---|
| committer | Liam <byteslice@airmail.cc> | 2023-01-14 15:48:01 -0500 |
| commit | e1b0b3d0db58560c62f00f7a8fe9337872027d7c (patch) | |
| tree | b6f1f24811fd7be52276794b9fd45cc1f01f7cf4 /src/core/hle/kernel/k_hardware_timer.cpp | |
| parent | c45b1d872341e0ccd422f73e586c27c87aa5c43d (diff) | |
timing: wait for completion on unregister
Diffstat (limited to 'src/core/hle/kernel/k_hardware_timer.cpp')
| -rw-r--r-- | src/core/hle/kernel/k_hardware_timer.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/core/hle/kernel/k_hardware_timer.cpp b/src/core/hle/kernel/k_hardware_timer.cpp index 6bba79ea06..4dcd53821e 100644 --- a/src/core/hle/kernel/k_hardware_timer.cpp +++ b/src/core/hle/kernel/k_hardware_timer.cpp @@ -18,7 +18,8 @@ void KHardwareTimer::Initialize() { } void KHardwareTimer::Finalize() { - this->DisableInterrupt(); + m_kernel.System().CoreTiming().UnscheduleEvent(m_event_type, reinterpret_cast<uintptr_t>(this)); + m_wakeup_time = std::numeric_limits<s64>::max(); m_event_type.reset(); } @@ -59,7 +60,8 @@ void KHardwareTimer::EnableInterrupt(s64 wakeup_time) { } void KHardwareTimer::DisableInterrupt() { - m_kernel.System().CoreTiming().UnscheduleEvent(m_event_type, reinterpret_cast<uintptr_t>(this)); + m_kernel.System().CoreTiming().UnscheduleEventWithoutWait(m_event_type, + reinterpret_cast<uintptr_t>(this)); m_wakeup_time = std::numeric_limits<s64>::max(); } |
