diff options
author | MÃ¥rten Nordheim <marten.nordheim@qt.io> | 2017-09-11 09:17:21 +0200 |
---|---|---|
committer | Paolo Angelelli <paolo.angelelli@qt.io> | 2017-09-11 14:25:32 +0000 |
commit | b13ff055eb64970f545ba590735a38652de7689b (patch) | |
tree | 87f6009c235f41b3d676af3649c1172069313dbd | |
parent | f09e5fb2eaba4a3d3f131fa4a4392ec49d02af0d (diff) | |
download | qtlocation-b13ff055eb64970f545ba590735a38652de7689b.tar.gz |
Fix disabling redirection for providers that have no local fallback
Currently these providers would not turn ready when disableRedirection()
is called, while they also get disconnected, thus never being tried to
be resolved, resulting in stalling the completion of the provider's
resolution process
Task-number: QTBUG-63033
Change-Id: I316b858fbc66b82bc124b8814b25fe29bc0c21a1
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
-rw-r--r-- | src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp | 15 | ||||
-rw-r--r-- | src/plugins/geoservices/osm/qgeotileproviderosm.cpp | 2 |
2 files changed, 9 insertions, 8 deletions
diff --git a/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp b/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp index da7b61d2..45e7efbe 100644 --- a/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp +++ b/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp @@ -220,15 +220,16 @@ QGeoTiledMappingManagerEngineOsm::QGeoTiledMappingManagerEngineOsm(const QVarian if (parameters.contains(QStringLiteral("osm.mapping.providersrepository.disabled"))) disableRedirection = parameters.value(QStringLiteral("osm.mapping.providersrepository.disabled")).toBool(); - foreach (QGeoTileProviderOsm * provider, m_providers) { + for (QGeoTileProviderOsm * provider: qAsConst(m_providers)) { // Providers are parented inside QGeoFileTileCacheOsm, as they are used in its destructor. - if (disableRedirection) + if (disableRedirection) { provider->disableRedirection(); - - connect(provider, &QGeoTileProviderOsm::resolutionFinished, - this, &QGeoTiledMappingManagerEngineOsm::onProviderResolutionFinished); - connect(provider, &QGeoTileProviderOsm::resolutionError, - this, &QGeoTiledMappingManagerEngineOsm::onProviderResolutionError); + } else { + connect(provider, &QGeoTileProviderOsm::resolutionFinished, + this, &QGeoTiledMappingManagerEngineOsm::onProviderResolutionFinished); + connect(provider, &QGeoTileProviderOsm::resolutionError, + this, &QGeoTiledMappingManagerEngineOsm::onProviderResolutionError); + } } updateMapTypes(); diff --git a/src/plugins/geoservices/osm/qgeotileproviderosm.cpp b/src/plugins/geoservices/osm/qgeotileproviderosm.cpp index 563ac161..a0cbd843 100644 --- a/src/plugins/geoservices/osm/qgeotileproviderosm.cpp +++ b/src/plugins/geoservices/osm/qgeotileproviderosm.cpp @@ -174,11 +174,11 @@ void QGeoTileProviderOsm::disableRedirection() if (p->isValid() && !found) { m_provider = p; m_providerId = m_providerList.indexOf(p); - m_status = Resolved; found = true; } p->disconnect(this); } + m_status = Resolved; } void QGeoTileProviderOsm::onResolutionFinished(TileProvider *provider) |