summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMÃ¥rten Nordheim <marten.nordheim@qt.io>2017-09-11 09:17:21 +0200
committerPaolo Angelelli <paolo.angelelli@qt.io>2017-09-11 14:25:32 +0000
commitb13ff055eb64970f545ba590735a38652de7689b (patch)
tree87f6009c235f41b3d676af3649c1172069313dbd /src
parentf09e5fb2eaba4a3d3f131fa4a4392ec49d02af0d (diff)
downloadqtlocation-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>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp15
-rw-r--r--src/plugins/geoservices/osm/qgeotileproviderosm.cpp2
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)