summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron McCarthy <aaron.mccarthy@jollamobile.com>2013-11-27 12:37:27 +1000
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-12-03 03:20:50 +0100
commit5708dfcc80ac4eb029bab6af9b9fbee148da0786 (patch)
treefbf196592f59ae79828aa39c537cfdd33339986f
parent7e0283264806e16fc7373e1c05588bddce6c79a8 (diff)
downloadqtlocation-5708dfcc80ac4eb029bab6af9b9fbee148da0786.tar.gz
Fix incorrect accuracy values reported by Geoclue plugin.
Initialize variables to valid (unknown) values as they will not be assigned to if accuracy data is not available with the current position update from Geoclue. Change-Id: Icdca528da86df9a2a95acf1cc6704a9c39485fe2 Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
-rw-r--r--src/plugins/position/geoclue/qgeopositioninfosource_geocluemaster.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/plugins/position/geoclue/qgeopositioninfosource_geocluemaster.cpp b/src/plugins/position/geoclue/qgeopositioninfosource_geocluemaster.cpp
index c6920c33..fc0b8b99 100644
--- a/src/plugins/position/geoclue/qgeopositioninfosource_geocluemaster.cpp
+++ b/src/plugins/position/geoclue/qgeopositioninfosource_geocluemaster.cpp
@@ -47,6 +47,7 @@
#include <QtCore/QFile>
#include <QtCore/QSaveFile>
#include <QtCore/QStandardPaths>
+#include <QtCore/QtNumeric>
#ifdef Q_LOCATION_GEOCLUE_DEBUG
#include <QDebug>
@@ -497,21 +498,19 @@ QGeoPositionInfo QGeoPositionInfoSourceGeoclueMaster::geoclueToPositionInfo(
}
QGeoPositionInfo info(coordinate, dateTime);
if (accuracy) {
- double horizontalAccuracy;
- double verticalAccuracy;
- GeoclueAccuracyLevel accuracyLevel;
+ double horizontalAccuracy = qQNaN();
+ double verticalAccuracy = qQNaN();
+ GeoclueAccuracyLevel accuracyLevel = GEOCLUE_ACCURACY_LEVEL_NONE;
geoclue_accuracy_get_details(accuracy, &accuracyLevel, &horizontalAccuracy, &verticalAccuracy);
#ifdef Q_LOCATION_GEOCLUE_DEBUG
qDebug() << "QGeoPositionInfoSourceGeoclueMaster::accuracy horizontal vertical level: " << horizontalAccuracy << verticalAccuracy << accuracyLevel;
#endif
- if (accuracyLevel & GEOCLUE_ACCURACY_LEVEL_DETAILED)
- m_lastPositionFromSatellite = true;
- else
- m_lastPositionFromSatellite = false;
- if (accuracyLevel != GEOCLUE_ACCURACY_LEVEL_NONE) {
+ m_lastPositionFromSatellite = accuracyLevel & GEOCLUE_ACCURACY_LEVEL_DETAILED;
+
+ if (!qIsNaN(horizontalAccuracy))
info.setAttribute(QGeoPositionInfo::HorizontalAccuracy, horizontalAccuracy);
+ if (!qIsNaN(verticalAccuracy))
info.setAttribute(QGeoPositionInfo::VerticalAccuracy, verticalAccuracy);
- }
}
return info;
}