summaryrefslogtreecommitdiffstats
path: root/src/positioningquick/qdeclarativepositionsource.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/positioningquick/qdeclarativepositionsource.cpp')
-rw-r--r--src/positioningquick/qdeclarativepositionsource.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/positioningquick/qdeclarativepositionsource.cpp b/src/positioningquick/qdeclarativepositionsource.cpp
index 9b7cafc1..3436811a 100644
--- a/src/positioningquick/qdeclarativepositionsource.cpp
+++ b/src/positioningquick/qdeclarativepositionsource.cpp
@@ -227,7 +227,7 @@ void QDeclarativePositionSource::tryAttach(const QString &newName, bool useFallb
m_positionSource->setPreferredPositioningMethods(
static_cast<QGeoPositionInfoSource::PositioningMethods>(int(m_preferredPositioningMethods)));
- if (m_active) {
+ if (m_startPending) {
const QGeoPositionInfo &lastKnown = m_positionSource->lastKnownPosition();
if (lastKnown.isValid())
setPosition(lastKnown);
@@ -655,6 +655,8 @@ QDeclarativePositionSource::PositioningMethods QDeclarativePositionSource::prefe
void QDeclarativePositionSource::start()
{
+ m_startPending = false;
+
if (m_positionSource)
m_positionSource->startUpdates();
@@ -727,10 +729,12 @@ void QDeclarativePositionSource::setActive(bool active)
if (active == m_active)
return;
- if (active)
+ if (active) {
+ m_startPending = true;
QTimer::singleShot(0, this, SLOT(start())); // delay ensures all properties have been set
- else
+ } else {
stop();
+ }
}
bool QDeclarativePositionSource::isActive() const