summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2022-06-10 09:47:23 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-06-17 08:26:56 +0000
commit03cfe5e93cc6a12bc03e4d7373ed3a368ea79adf (patch)
tree6392b6fc4c2594821645db1a00eea4e2be819248
parent2083dcf5726deab09291f0dbf59a8da9b68c5c18 (diff)
PositionSource: do not query lastKnownPosition if the source is inactive
If the source is inactive, it is expected that it can't update its position. This also allows to avoid a weird situation on Android when permissions are requested for an inactive PositionSource object. Fixes: QTBUG-103478 Change-Id: I357d616c1cac07905a3f863a1994afb4953dead1 Reviewed-by: Alex Blasche <alexander.blasche@qt.io> (cherry picked from commit 2e26fe2c638d2bb66aa78873d0cbe8ca46d547e9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/positioningquick/qdeclarativepositionsource.cpp8
-rw-r--r--tests/auto/qdeclarativepositionsource/tst_qdeclarativepositionsource.cpp7
2 files changed, 9 insertions, 6 deletions
diff --git a/src/positioningquick/qdeclarativepositionsource.cpp b/src/positioningquick/qdeclarativepositionsource.cpp
index e6c59082..b019b23b 100644
--- a/src/positioningquick/qdeclarativepositionsource.cpp
+++ b/src/positioningquick/qdeclarativepositionsource.cpp
@@ -252,9 +252,11 @@ void QDeclarativePositionSource::tryAttach(const QString &newName, bool useFallb
m_positionSource->setPreferredPositioningMethods(
static_cast<QGeoPositionInfoSource::PositioningMethods>(int(m_preferredPositioningMethods)));
- const QGeoPositionInfo &lastKnown = m_positionSource->lastKnownPosition();
- if (lastKnown.isValid())
- setPosition(lastKnown);
+ if (m_active) {
+ const QGeoPositionInfo &lastKnown = m_positionSource->lastKnownPosition();
+ if (lastKnown.isValid())
+ setPosition(lastKnown);
+ }
} else {
m_sourceName.setValueBypassingBindings(newName);
m_defaultSourceUsed = false;
diff --git a/tests/auto/qdeclarativepositionsource/tst_qdeclarativepositionsource.cpp b/tests/auto/qdeclarativepositionsource/tst_qdeclarativepositionsource.cpp
index 32045789..9c806d41 100644
--- a/tests/auto/qdeclarativepositionsource/tst_qdeclarativepositionsource.cpp
+++ b/tests/auto/qdeclarativepositionsource/tst_qdeclarativepositionsource.cpp
@@ -114,9 +114,10 @@ void tst_DeclarativePositionSource::positionBinding()
// adding 0.1 lat and 0.1 log at every step
m_positionSource->setName("test.source");
m_positionSource->setUpdateInterval(200);
- const QGeoCoordinate c1(0, 0);
- const QGeoCoordinate c2(0.1, 0.1, 0);
- QCOMPARE(m_positionSource->position()->coordinate(), c1);
+ const QGeoCoordinate c1(0.1, 0.1, 0);
+ const QGeoCoordinate c2(0.2, 0.2, 0);
+ m_positionSource->update();
+ QTRY_COMPARE_WITH_TIMEOUT(m_positionSource->position()->coordinate(), c1, 5000);
QGeoPositionInfo posInfo;
posInfo.setCoordinate(c1);