summaryrefslogtreecommitdiff
path: root/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-11-24 19:36:23 +0100
committerLiang Qi <liang.qi@qt.io>2016-11-24 19:36:23 +0100
commite2ece6d1283926c5a91362933719f3d10efa2ed5 (patch)
tree5fa62a28a909fd74dbbe31fcba29dc3c5f8e74bb /src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp
parentf0c46685091fade417f118bfdc8ccdcbb4e9b9ce (diff)
parent78c73ebf88fbb97ebb796fc71e76232af5c8f1d3 (diff)
downloadqtlocation-e2ece6d1283926c5a91362933719f3d10efa2ed5.tar.gz
Merge remote-tracking branch 'origin/5.6' into 5.75.7
Change-Id: I49b1b3fc94819b5a7f2fd1ab2481a1d8ea41586b
Diffstat (limited to 'src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp')
-rw-r--r--src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp b/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp
index 245d855e..33523493 100644
--- a/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp
+++ b/src/plugins/position/winrt/qgeopositioninfosource_winrt.cpp
@@ -343,7 +343,7 @@ void QGeoPositionInfoSourceWinRT::virtualPositionUpdate()
// We can only do this if we received a valid position before
if (d->lastPosition.isValid()) {
QGeoPositionInfo sent = d->lastPosition;
- sent.setTimestamp(QDateTime::currentDateTime());
+ sent.setTimestamp(sent.timestamp().addMSecs(updateInterval()));
d->lastPosition = sent;
emit positionUpdated(sent);
}
@@ -486,7 +486,24 @@ HRESULT QGeoPositionInfoSourceWinRT::onPositionChanged(IGeolocator *locator, IPo
currentInfo.setAttribute(QGeoPositionInfo::GroundSpeed, value);
}
- currentInfo.setTimestamp(QDateTime::currentDateTime());
+ DateTime dateTime;
+ hr = coord->get_Timestamp(&dateTime);
+
+ if (dateTime.UniversalTime > 0) {
+ ULARGE_INTEGER uLarge;
+ uLarge.QuadPart = dateTime.UniversalTime;
+ FILETIME fileTime;
+ fileTime.dwHighDateTime = uLarge.HighPart;
+ fileTime.dwLowDateTime = uLarge.LowPart;
+ SYSTEMTIME systemTime;
+ if (FileTimeToSystemTime(&fileTime, &systemTime)) {
+ currentInfo.setTimestamp(QDateTime(QDate(systemTime.wYear, systemTime.wMonth,
+ systemTime.wDay),
+ QTime(systemTime.wHour, systemTime.wMinute,
+ systemTime.wSecond, systemTime.wMilliseconds),
+ Qt::UTC));
+ }
+ }
emit nativePositionUpdate(currentInfo);