From 12eacc3bab00f23d187a295b35e4a0d283ba85f4 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 26 Apr 2016 23:01:43 -0700 Subject: Long live QDeadlineTimer It's like QElapsedTimer, but marks a time in the future instead. [ChangeLog][QtCore] Added QDeadlineTimer, a counterpart to QElapsedTimer, used to mark a time point in the future (a deadline) and determine whether such a deadline has passed. Change-Id: Ifea6e497f11a461db432ffff144921f7fbc1d1d3 Reviewed-by: Lars Knoll --- src/corelib/kernel/qelapsedtimer_win.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/corelib/kernel/qelapsedtimer_win.cpp') diff --git a/src/corelib/kernel/qelapsedtimer_win.cpp b/src/corelib/kernel/qelapsedtimer_win.cpp index 520126d262..0c380b2f6a 100644 --- a/src/corelib/kernel/qelapsedtimer_win.cpp +++ b/src/corelib/kernel/qelapsedtimer_win.cpp @@ -38,6 +38,8 @@ ****************************************************************************/ #include "qelapsedtimer.h" +#include "qdeadlinetimer.h" +#include "qdeadlinetimer_p.h" #include QT_BEGIN_NAMESPACE @@ -76,6 +78,17 @@ static inline qint64 ticksToNanoseconds(qint64 ticks) } } +static inline qint64 nanosecondsToTicks(qint64 nsec) +{ + if (counterFrequency > 0) { + // QueryPerformanceCounter uses an arbitrary frequency + return double(nsec) * counterFrequency / 1000000000.; + } else { + // GetTickCount(64) uses milliseconds + return nsec / 1000000; + } +} + static quint64 getTickCount() { resolveCounterFrequency(); @@ -161,4 +174,13 @@ bool operator<(const QElapsedTimer &v1, const QElapsedTimer &v2) Q_DECL_NOTHROW return (v1.t1 - v2.t1) < 0; } +QDeadlineTimer QDeadlineTimer::current(Qt::TimerType timerType) Q_DECL_NOTHROW +{ + Q_STATIC_ASSERT(!QDeadlineTimerNanosecondsInT2); + QDeadlineTimer result; + result.t1 = ticksToNanoseconds(getTickCount()); + result.type = timerType; + return result; +} + QT_END_NAMESPACE -- cgit v1.2.3