ScheduledTask(Function<void()>&& function, Seconds interval, bool repeating) : m_function(WTFMove(function)) , m_fireInterval(interval) , m_isRepeating(repeating) { updateReadyTime(); }
void RunLoop::TimerBase::start(double fireInterval, bool repeat) { auto intervalDuration = std::chrono::duration<double>(fireInterval); auto safeDuration = std::chrono::microseconds::max(); if (intervalDuration < safeDuration) safeDuration = std::chrono::duration_cast<std::chrono::microseconds>(intervalDuration); m_fireInterval = safeDuration; m_isRepeating = repeat; updateReadyTime(); }
bool fired() { if (!isActive()) return false; m_function(); if (!m_isRepeating) return false; updateReadyTime(); return isActive(); }