summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2022-10-11 12:50:03 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-10-12 08:45:05 +0000
commitb6f3031ccf18bc371b3bce1e1379a08b24d16c45 (patch)
treed394d6685034bad06a45e7bedb500d9f5a96f38f
parentb35335d78aed5aa2fde5f6a601a9242c7fab6fe7 (diff)
PositionSource: unify error processing logic
When any error occurs during single update request, the update is canceled, and the active state should be changed to false. This patch takes the logic which was previously applied only to UpdateTimeoutError, and uses it for handling all error types. Change-Id: Ia8ca85635c2fa9c48e7cf8b631c889bfac9d2a77 Reviewed-by: Mate Barany <mate.barany@qt.io> Reviewed-by: Juha Vuolle <juha.vuolle@insta.fi> (cherry picked from commit 52e789fb72895631dfd08c0ed88f166d213a35ad) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/positioningquick/qdeclarativepositionsource.cpp33
-rw-r--r--src/positioningquick/qdeclarativepositionsource_p.h1
2 files changed, 11 insertions, 23 deletions
diff --git a/src/positioningquick/qdeclarativepositionsource.cpp b/src/positioningquick/qdeclarativepositionsource.cpp
index 0a059144..857d8470 100644
--- a/src/positioningquick/qdeclarativepositionsource.cpp
+++ b/src/positioningquick/qdeclarativepositionsource.cpp
@@ -325,27 +325,6 @@ bool QDeclarativePositionSource::isValidActualComputation() const
return m_positionSource != nullptr;
}
-void QDeclarativePositionSource::handleUpdateTimeout()
-{
- // notify will be called by the calling method
- m_sourceError.setValueBypassingBindings(QDeclarativePositionSource::UpdateTimeoutError);
-
- if (!m_active)
- return;
-
- if (m_singleUpdate) {
- m_singleUpdate = false;
-
- if (!m_regularUpdates) {
- // only singleUpdate based timeouts change activity
- // continuous updates may resume again
- // (see QGeoPositionInfoSource::startUpdates())
- m_active.setValueBypassingBindings(false);
- m_active.notify();
- }
- }
-}
-
/*!
\internal
*/
@@ -868,7 +847,7 @@ void QDeclarativePositionSource::sourceErrorReceived(const QGeoPositionInfoSourc
else if (error == QGeoPositionInfoSource::ClosedError)
m_sourceError.setValueBypassingBindings(QDeclarativePositionSource::ClosedError);
else if (error == QGeoPositionInfoSource::UpdateTimeoutError)
- handleUpdateTimeout(); // also sets m_sourceError
+ m_sourceError.setValueBypassingBindings(QDeclarativePositionSource::UpdateTimeoutError);
else if (error == QGeoPositionInfoSource::NoError)
return; //nothing to do
else
@@ -876,6 +855,16 @@ void QDeclarativePositionSource::sourceErrorReceived(const QGeoPositionInfoSourc
m_sourceError.notify();
emit sourceErrorChanged();
+
+ // if an error occurred during single update, the update is stopped, so we
+ // need to change the active state.
+ if (m_active && m_singleUpdate) {
+ m_singleUpdate = false;
+ if (!m_regularUpdates) {
+ m_active.setValueBypassingBindings(false);
+ m_active.notify();
+ }
+ }
}
QT_END_NAMESPACE
diff --git a/src/positioningquick/qdeclarativepositionsource_p.h b/src/positioningquick/qdeclarativepositionsource_p.h
index 1f3038b6..537d3459 100644
--- a/src/positioningquick/qdeclarativepositionsource_p.h
+++ b/src/positioningquick/qdeclarativepositionsource_p.h
@@ -132,7 +132,6 @@ private Q_SLOTS:
void notifySupportedPositioningMethodsChanged();
private:
- void handleUpdateTimeout();
void setPosition(const QGeoPositionInfo &pi);
void setSource(QGeoPositionInfoSource *source);
bool parametersReady();