diff options
Diffstat (limited to 'src/plugins/sensors/winrt/winrtcompass.cpp')
-rw-r--r-- | src/plugins/sensors/winrt/winrtcompass.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/plugins/sensors/winrt/winrtcompass.cpp b/src/plugins/sensors/winrt/winrtcompass.cpp index 6a678e2a..45aeeddc 100644 --- a/src/plugins/sensors/winrt/winrtcompass.cpp +++ b/src/plugins/sensors/winrt/winrtcompass.cpp @@ -94,7 +94,6 @@ public: qCWarning(lcWinRtSensors) << "Failed to get compass reading timestamp." << qt_error_string(hr); return hr; } -#ifndef Q_OS_WINPHONE // Windows Phone doesn't implement the accuracy interface ComPtr<ICompassReadingHeadingAccuracy> accuracyReading; hr = value.As(&accuracyReading); if (FAILED(hr)) { @@ -124,7 +123,7 @@ public: reading.setCalibrationLevel(1.00); break; } -#endif + reading.setAzimuth(heading); reading.setTimestamp(dateTimeToMsSinceEpoch(dateTime)); q->newReadingAvailable(); @@ -165,6 +164,9 @@ WinRtCompass::WinRtCompass(QSensor *sensor) return; } + addDataRate(1, 1000 / d->minimumReportInterval); // dataRate in Hz + sensor->setDataRate(1); + setReading<QCompassReading>(&d->reading); } @@ -189,7 +191,12 @@ void WinRtCompass::start() sensorError(hr); return; } - quint32 reportInterval = qMax(d->minimumReportInterval, quint32(1000/sensor()->dataRate())); + + int dataRate = sensor()->dataRate(); + if (!dataRate) + return; + + quint32 reportInterval = qMax(d->minimumReportInterval, quint32(1000/dataRate)); hr = d->sensor->put_ReportInterval(reportInterval); if (FAILED(hr)) { qCWarning(lcWinRtSensors) << "Unable to attach to set report interval." |