From b13ff055eb64970f545ba590735a38652de7689b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= Date: Mon, 11 Sep 2017 09:17:21 +0200 Subject: 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 --- .../geoservices/osm/qgeotiledmappingmanagerengineosm.cpp | 15 ++++++++------- 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) -- cgit v1.2.1