diff options
author | Jake Petroules <jake.petroules@qt.io> | 2017-07-10 17:14:36 -0700 |
---|---|---|
committer | Jake Petroules <jake.petroules@qt.io> | 2017-07-11 00:33:47 +0000 |
commit | bdd165798c040f4ec0f464d7e822441e65c15a25 (patch) | |
tree | 9a3539bddbb5af82160f942f6bd32205dba10ac5 /src/plugins | |
parent | 18132193d83ab94777943c67258d93b3f8b1aa0f (diff) | |
download | qtsensors-bdd165798c040f4ec0f464d7e822441e65c15a25.tar.gz |
Use QDeadlineTimer to greatly simplify dummy plugin implementation
Change-Id: Ibda65cd63dcf277730044da04ee30b68513f95ee
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/sensors/dummy/dummycommon.cpp | 79 |
1 files changed, 2 insertions, 77 deletions
diff --git a/src/plugins/sensors/dummy/dummycommon.cpp b/src/plugins/sensors/dummy/dummycommon.cpp index e2a4a51..4a19b13 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 <QtCore/qt_windows.h> -// WINCE has <time.h> but using clock() gives a link error because -// the function isn't actually implemented. -#else -#include <time.h> -#ifdef Q_OS_MAC -#include <mach/mach_time.h> -#endif -#endif +#include <QtCore/qdeadlinetimer.h> 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<quint64>(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; } |