From 0852fae324f83b2a0a689b995fcacf2e9d4fc5ca Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 14 Jun 2011 17:21:39 +1000 Subject: use MacOS specific monotonic time --- src/plugins/sensors/dummy/dummycommon.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'src/plugins') diff --git a/src/plugins/sensors/dummy/dummycommon.cpp b/src/plugins/sensors/dummy/dummycommon.cpp index 643342d4..33e1512f 100644 --- a/src/plugins/sensors/dummy/dummycommon.cpp +++ b/src/plugins/sensors/dummy/dummycommon.cpp @@ -47,6 +47,9 @@ // the function isn't actually implemented. #else #include +#ifdef Q_OS_MAC +#include +#endif #endif dummycommon::dummycommon(QSensor *sensor) @@ -88,6 +91,18 @@ 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; +} +#endif + quint64 dummycommon::getTimestamp() { #ifdef Q_OS_WINCE @@ -102,10 +117,15 @@ quint64 dummycommon::getTimestamp() uli.HighPart = userTime.dwHighDateTime; ULONGLONG systemTimeInMS = uli.QuadPart/10000; return static_cast(systemTimeInMS); +#elif 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); -- cgit v1.2.3