summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@qt.io>2017-07-11 00:14:36 (GMT)
committerJake Petroules <jake.petroules@qt.io>2017-07-11 00:33:47 (GMT)
commitbdd165798c040f4ec0f464d7e822441e65c15a25 (patch)
tree9a3539bddbb5af82160f942f6bd32205dba10ac5
parent18132193d83ab94777943c67258d93b3f8b1aa0f (diff)
downloadqtsensors-bdd165798c040f4ec0f464d7e822441e65c15a25.tar.gz
Use QDeadlineTimer to greatly simplify dummy plugin implementation
Change-Id: Ibda65cd63dcf277730044da04ee30b68513f95ee Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--src/plugins/sensors/dummy/dummycommon.cpp79
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;
}