summaryrefslogtreecommitdiff
path: root/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2021-01-27 15:40:17 +0100
committerIvan Solovev <ivan.solovev@qt.io>2021-01-29 10:40:46 +0100
commit26b53660fc916c543759e7add964ab696582120a (patch)
tree98f3de6180609447a4a7b14362aa3031b4b496ab /src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp
parenta8496e8d52e261a5a9206c4963adf43f6083de9e (diff)
downloadqtlocation-26b53660fc916c543759e7add964ab696582120a.tar.gz
QtPositioning: reset errors properly
Calling startUpdates(), startMonitoring() or requestUpdate() on QGeoPositionInfoSource/QGeoSatelliteInfoSource/QGeoAreaMonitorSource subclasses effectively means starting a new work session, which means that we should not care about the previous errors. This patch resets the errors to Error::NoError in all subclasses when calling these methods. Task-number: QTBUG-90491 Change-Id: Ia9cf0345e8c672d47814d8d0a865cd23541af61a Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp')
-rw-r--r--src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp b/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp
index 622c074f..34a1a035 100644
--- a/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp
+++ b/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp
@@ -159,6 +159,9 @@ void QGeoPositionInfoSourceGeoclue2::startUpdates()
}
qCDebug(lcPositioningGeoclue2) << "Starting updates";
+
+ m_error = QGeoPositionInfoSource::NoError;
+
m_running = true;
startClient();
@@ -184,13 +187,15 @@ void QGeoPositionInfoSourceGeoclue2::stopUpdates()
void QGeoPositionInfoSourceGeoclue2::requestUpdate(int timeout)
{
- if (timeout < minimumUpdateInterval() && timeout != 0) {
- setError(QGeoPositionInfoSource::UpdateTimeoutError);
+ if (m_requestTimer->isActive()) {
+ qCDebug(lcPositioningGeoclue2) << "Request timer was active, ignoring startUpdates";
return;
}
- if (m_requestTimer->isActive()) {
- qCDebug(lcPositioningGeoclue2) << "Request timer was active, ignoring startUpdates";
+ m_error = QGeoPositionInfoSource::NoError;
+
+ if (timeout < minimumUpdateInterval() && timeout != 0) {
+ setError(QGeoPositionInfoSource::UpdateTimeoutError);
return;
}
@@ -201,7 +206,8 @@ void QGeoPositionInfoSourceGeoclue2::requestUpdate(int timeout)
void QGeoPositionInfoSourceGeoclue2::setError(QGeoPositionInfoSource::Error error)
{
m_error = error;
- emit QGeoPositionInfoSource::errorOccurred(m_error);
+ if (m_error != QGeoPositionInfoSource::NoError)
+ emit QGeoPositionInfoSource::errorOccurred(m_error);
}
void QGeoPositionInfoSourceGeoclue2::restoreLastPosition()