diff options
-rw-r--r-- | src/imports/positioning/qdeclarativepositionsource.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/imports/positioning/qdeclarativepositionsource.cpp b/src/imports/positioning/qdeclarativepositionsource.cpp index b0e990da..05232d51 100644 --- a/src/imports/positioning/qdeclarativepositionsource.cpp +++ b/src/imports/positioning/qdeclarativepositionsource.cpp @@ -559,10 +559,9 @@ QDeclarativePositionSource::PositioningMethods QDeclarativePositionSource::prefe void QDeclarativePositionSource::start() { - if (!m_positionSource) - return; + if (m_positionSource) + m_positionSource->startUpdates(); - m_positionSource->startUpdates(); if (!m_active) { m_active = true; emit activeChanged(); @@ -721,6 +720,12 @@ void QDeclarativePositionSource::componentComplete() static_cast<QGeoPositionInfoSource::PositioningMethods>(int(m_preferredPositioningMethods))); setPosition(m_positionSource->lastKnownPosition()); + + if (m_active) + QTimer::singleShot(0, this, SLOT(start())); // delay ensures all properties have been set + } else if (m_active) { + m_active = false; + emit activeChanged(); } if (previousUpdateInterval != updateInterval()) @@ -733,12 +738,6 @@ void QDeclarativePositionSource::componentComplete() emit supportedPositioningMethodsChanged(); emit validityChanged(); - - if (m_active) { - m_active = false; - emit activeChanged(); - } - emit nameChanged(); } } |