From 18b22e3b8e07871232a39f69d3cd603b5c5b6e0d Mon Sep 17 00:00:00 2001 From: Paolo Angelelli Date: Thu, 24 Aug 2017 16:47:32 +0200 Subject: Fix PositionSource never turning active on android It seems that if m_positionSource gets created too late, PositionSource never becomes active so it never starts pushing position updates. Task-number: QTBUG-62778 Change-Id: I7b375e9f9f1fbe546dfc27fa6bf0c431df393e65 Reviewed-by: Alex Blasche --- src/imports/positioning/qdeclarativepositionsource.cpp | 17 ++++++++--------- 1 file 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(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(); } } -- cgit v1.2.1