diff options
author | Liam <byteslice@airmail.cc> | 2023-12-23 20:06:41 +0100 |
---|---|---|
committer | Liam <byteslice@airmail.cc> | 2023-12-23 21:36:46 +0100 |
commit | 575db0417278eef0c854900885734fd068b97430 (patch) | |
tree | 6663a52529852ca1279b7461807e3beb8ed312af | |
parent | core_timing: remove user data value (diff) | |
download | yuzu-575db0417278eef0c854900885734fd068b97430.tar yuzu-575db0417278eef0c854900885734fd068b97430.tar.gz yuzu-575db0417278eef0c854900885734fd068b97430.tar.bz2 yuzu-575db0417278eef0c854900885734fd068b97430.tar.lz yuzu-575db0417278eef0c854900885734fd068b97430.tar.xz yuzu-575db0417278eef0c854900885734fd068b97430.tar.zst yuzu-575db0417278eef0c854900885734fd068b97430.zip |
-rw-r--r-- | src/core/core_timing.cpp | 5 | ||||
-rw-r--r-- | src/core/core_timing.h | 12 | ||||
-rw-r--r-- | 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<EventType>& event_type, bool wait) { +void CoreTiming::UnscheduleEvent(const std::shared_ptr<EventType>& event_type, + UnscheduleEventType type) { { std::scoped_lock lk{basic_lock}; @@ -161,7 +162,7 @@ void CoreTiming::UnscheduleEvent(const std::shared_ptr<EventType>& 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<EventType>& event_type, bool absolute_time = false); - void UnscheduleEvent(const std::shared_ptr<EventType>& event_type, bool wait = true); - - void UnscheduleEventWithoutWait(const std::shared_ptr<EventType>& event_type) { - UnscheduleEvent(event_type, false); - } + void UnscheduleEvent(const std::shared_ptr<EventType>& 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<s64>::max(); } |