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);