diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2021-01-27 15:40:17 +0100 |
---|---|---|
committer | Ivan Solovev <ivan.solovev@qt.io> | 2021-01-29 10:40:46 +0100 |
commit | 26b53660fc916c543759e7add964ab696582120a (patch) | |
tree | 98f3de6180609447a4a7b14362aa3031b4b496ab /src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp | |
parent | a8496e8d52e261a5a9206c4963adf43f6083de9e (diff) | |
download | qtlocation-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/serialnmea/qnmeasatelliteinfosource.cpp')
-rw-r--r-- | src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp b/src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp index cb127218..c33eb146 100644 --- a/src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp +++ b/src/plugins/position/serialnmea/qnmeasatelliteinfosource.cpp @@ -272,6 +272,8 @@ void QNmeaSatelliteInfoSourcePrivate::startUpdates() if (m_invokedStart) return; + m_satelliteError = QGeoSatelliteInfoSource::NoError; + m_invokedStart = true; m_pendingUpdate.clear(); m_noUpdateLastInterval = false; @@ -320,6 +322,8 @@ void QNmeaSatelliteInfoSourcePrivate::requestUpdate(int msec) if (m_requestTimer && m_requestTimer->isActive()) return; + m_satelliteError = QGeoSatelliteInfoSource::NoError; + if (msec <= 0 || msec < m_source->minimumUpdateInterval()) { m_source->setError(QGeoSatelliteInfoSource::UpdateTimeoutError); return; @@ -549,7 +553,8 @@ void QNmeaSatelliteInfoSource::requestUpdate(int msec) void QNmeaSatelliteInfoSource::setError(QGeoSatelliteInfoSource::Error satelliteError) { d->m_satelliteError = satelliteError; - emit QGeoSatelliteInfoSource::errorOccurred(satelliteError); + if (d->m_satelliteError != QGeoSatelliteInfoSource::NoError) + emit QGeoSatelliteInfoSource::errorOccurred(satelliteError); } |