From bdd165798c040f4ec0f464d7e822441e65c15a25 Mon Sep 17 00:00:00 2001 From: Jake Petroules Date: Mon, 10 Jul 2017 17:14:36 -0700 Subject: Use QDeadlineTimer to greatly simplify dummy plugin implementation Change-Id: Ibda65cd63dcf277730044da04ee30b68513f95ee Reviewed-by: Thiago Macieira --- src/plugins/sensors/dummy/dummycommon.cpp | 79 +------------------------------ 1 file changed, 2 insertions(+), 77 deletions(-) (limited to 'src/plugins') diff --git a/src/plugins/sensors/dummy/dummycommon.cpp b/src/plugins/sensors/dummy/dummycommon.cpp index e2a4a51f..4a19b13f 100644 --- a/src/plugins/sensors/dummy/dummycommon.cpp +++ b/src/plugins/sensors/dummy/dummycommon.cpp @@ -39,16 +39,7 @@ #include "dummycommon.h" -#ifdef Q_OS_WIN -#include -// WINCE has but using clock() gives a link error because -// the function isn't actually implemented. -#else -#include -#ifdef Q_OS_MAC -#include -#endif -#endif +#include dummycommon::dummycommon(QSensor *sensor) : QSensorBackend(sensor) @@ -89,74 +80,8 @@ void dummycommon::timerEvent(QTimerEvent * /*event*/) poll(); } -#ifdef Q_OS_MAC -//taken from qelapsedtimer_mac.cpp -static mach_timebase_info_data_t info = {0,0}; -static qint64 absoluteToNSecs(qint64 cpuTime) -{ - if (info.denom == 0) - mach_timebase_info(&info); - qint64 nsecs = cpuTime * info.numer / info.denom; - return nsecs; -} -#elif defined(Q_OS_WIN) -// Obtain a time stamp from the performance counter, -// default to tick count. -static quint64 windowsTimeStamp() -{ - static bool hasFrequency = false; - static quint64 frequency = 0; - if (!hasFrequency) { - LARGE_INTEGER frequencyLI; - hasFrequency = true; - QueryPerformanceFrequency(&frequencyLI); - frequency = frequencyLI.QuadPart; - } - - if (frequency) { // Microseconds. - LARGE_INTEGER counterLI; - if (QueryPerformanceCounter(&counterLI)) - return 1000000 * counterLI.QuadPart / frequency; - } -#ifndef Q_OS_WINRT - return GetTickCount(); -#else - return GetTickCount64(); -#endif -} -#endif - quint64 dummycommon::getTimestamp() { -#if defined(Q_OS_WIN) - return windowsTimeStamp(); -#elif defined(Q_OS_WINCE) - //d This implementation is based on code found here: - // http://social.msdn.microsoft.com/Forums/en/vssmartdevicesnative/thread/74870c6c-76c5-454c-8533-812cfca585f8 - HANDLE currentThread = GetCurrentThread(); - FILETIME creationTime, exitTime, kernalTime, userTime; - GetThreadTimes(currentThread, &creationTime, &exitTime, &kernalTime, &userTime); - - ULARGE_INTEGER uli; - uli.LowPart = userTime.dwLowDateTime; - uli.HighPart = userTime.dwHighDateTime; - ULONGLONG systemTimeInMS = uli.QuadPart/10000; - return static_cast(systemTimeInMS); -#elif defined(Q_OS_MAC) - uint64_t cpu_time = mach_absolute_time(); - uint64_t nsecs = absoluteToNSecs(cpu_time); - - quint64 result = (nsecs * 0.001); //scale to microseconds - return result; -#else - struct timespec tv; - int ok; - ok = clock_gettime(CLOCK_MONOTONIC, &tv); - Q_ASSERT(ok == 0); - Q_UNUSED(ok); - - quint64 result = (tv.tv_sec * 1000000ULL) + (tv.tv_nsec * 0.001); // scale to microseconds - return result; -#endif + return QDeadlineTimer::current().deadlineNSecs() / 1000; } -- cgit v1.2.3