diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2022-06-10 09:47:23 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-06-17 08:26:56 +0000 |
commit | 03cfe5e93cc6a12bc03e4d7373ed3a368ea79adf (patch) | |
tree | 6392b6fc4c2594821645db1a00eea4e2be819248 | |
parent | 2083dcf5726deab09291f0dbf59a8da9b68c5c18 (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.cpp | 8 | ||||
-rw-r--r-- | tests/auto/qdeclarativepositionsource/tst_qdeclarativepositionsource.cpp | 7 |
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); |