#include "timer_impl.hpp" #include #include #include namespace mbgl { namespace util { Timer::Impl::Impl() { #if QT_VERSION >= 0x050000 timer.setTimerType(Qt::PreciseTimer); #endif connect(&timer, SIGNAL(timeout()), this, SLOT(timerFired())); } void Timer::Impl::start(uint64_t timeout, uint64_t repeat_, std::function&& cb) { repeat = repeat_; callback = std::move(cb); timer.setSingleShot(true); timer.start(timeout); } void Timer::Impl::stop() { timer.stop(); } void Timer::Impl::timerFired() { if (repeat) { timer.setSingleShot(false); timer.start(repeat); } callback(); } Timer::Timer() : impl(std::make_unique()) { } Timer::~Timer() = default; void Timer::start(Duration timeout, Duration repeat, std::function&& cb) { impl->start(std::chrono::duration_cast(timeout).count(), std::chrono::duration_cast(repeat).count(), std::move(cb)); } void Timer::stop() { impl->stop(); } } }