From 575db0417278eef0c854900885734fd068b97430 Mon Sep 17 00:00:00 2001 From: Liam Date: Sat, 23 Dec 2023 14:06:41 -0500 Subject: core_timing: use static typing for no-wait unschedule --- src/core/core_timing.cpp | 5 +++-- src/core/core_timing.h | 12 +++++++----- src/core/hle/kernel/k_hardware_timer.cpp | 3 ++- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/core/core_timing.cpp b/src/core/core_timing.cpp index 3b7b0aa45..d08c007bb 100644 --- a/src/core/core_timing.cpp +++ b/src/core/core_timing.cpp @@ -143,7 +143,8 @@ void CoreTiming::ScheduleLoopingEvent(std::chrono::nanoseconds start_time, event.Set(); } -void CoreTiming::UnscheduleEvent(const std::shared_ptr& event_type, bool wait) { +void CoreTiming::UnscheduleEvent(const std::shared_ptr& event_type, + UnscheduleEventType type) { { std::scoped_lock lk{basic_lock}; @@ -161,7 +162,7 @@ void CoreTiming::UnscheduleEvent(const std::shared_ptr& event_type, b } // Force any in-progress events to finish - if (wait) { + if (type == UnscheduleEventType::Wait) { std::scoped_lock lk{advance_lock}; } } diff --git a/src/core/core_timing.h b/src/core/core_timing.h index d86337cdc..d8cd599ee 100644 --- a/src/core/core_timing.h +++ b/src/core/core_timing.h @@ -35,6 +35,11 @@ struct EventType { const std::string name; }; +enum class UnscheduleEventType { + Wait, + NoWait, +}; + /** * This is a system to schedule events into the emulated machine's future. Time is measured * in main CPU clock cycles. @@ -98,11 +103,8 @@ public: const std::shared_ptr& event_type, bool absolute_time = false); - void UnscheduleEvent(const std::shared_ptr& event_type, bool wait = true); - - void UnscheduleEventWithoutWait(const std::shared_ptr& event_type) { - UnscheduleEvent(event_type, false); - } + void UnscheduleEvent(const std::shared_ptr& event_type, + UnscheduleEventType type = UnscheduleEventType::Wait); void AddTicks(u64 ticks_to_add); diff --git a/src/core/hle/kernel/k_hardware_timer.cpp b/src/core/hle/kernel/k_hardware_timer.cpp index 2a29a487c..4e947dd6b 100644 --- a/src/core/hle/kernel/k_hardware_timer.cpp +++ b/src/core/hle/kernel/k_hardware_timer.cpp @@ -61,7 +61,8 @@ void KHardwareTimer::EnableInterrupt(s64 wakeup_time) { } void KHardwareTimer::DisableInterrupt() { - m_kernel.System().CoreTiming().UnscheduleEventWithoutWait(m_event_type); + m_kernel.System().CoreTiming().UnscheduleEvent(m_event_type, + Core::Timing::UnscheduleEventType::NoWait); m_wakeup_time = std::numeric_limits::max(); } -- cgit v1.2.3