From db5be6c70c016d2b4095963eef9b7c47aa91b5e1 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Mon, 14 Jun 2021 14:55:20 +1000 Subject: [PATCH] TimingEvent: Add Delay method --- src/core/timing_event.cpp | 11 +++++++++++ src/core/timing_event.h | 3 +++ 2 files changed, 14 insertions(+) diff --git a/src/core/timing_event.cpp b/src/core/timing_event.cpp index 8e92e0ce7..6848d2f6c 100644 --- a/src/core/timing_event.cpp +++ b/src/core/timing_event.cpp @@ -392,6 +392,17 @@ TickCount TimingEvent::GetTicksUntilNextExecution() const return std::max(m_downcount - CPU::GetPendingTicks(), static_cast(0)); } +void TimingEvent::Delay(TickCount ticks) +{ + if (!m_active) + { + Panic("Trying to delay an inactive event"); + return; + } + + m_downcount += ticks; +} + void TimingEvent::Schedule(TickCount ticks) { const TickCount pending_ticks = CPU::GetPendingTicks(); diff --git a/src/core/timing_event.h b/src/core/timing_event.h index 553c30e7d..3988c7fde 100644 --- a/src/core/timing_event.h +++ b/src/core/timing_event.h @@ -30,6 +30,9 @@ public: TickCount GetTicksSinceLastExecution() const; TickCount GetTicksUntilNextExecution() const; + // Adds ticks to current execution. + void Delay(TickCount ticks); + void Schedule(TickCount ticks); void SetIntervalAndSchedule(TickCount ticks); void SetPeriodAndSchedule(TickCount ticks);