summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2017-01-17 09:28:10 +0100
committerPaolo Angelelli <paolo.angelelli@qt.io>2017-01-17 13:09:05 +0000
commit444a2d5b19e601e74e78384c823d7d048e797c4c (patch)
tree33844957e45634bc25515f0bc551f0fc71494b27
parent9643b177a9c63d97d3854b2ed0325f4b8f4e1df1 (diff)
Prevent destroying QGeoTileProviderOsm before QGeoFileTileCacheOsm
Parenting QGeoTileProviderOsm under QGeoMappingManagerEngine puts them at the same level in the qobject tree as QGeoFileTileCacheOsm. Since the latter uses the providers in the destructor, it might end up calling the destructor with providers already destroyed. This patch parents the providers under the file tile cache, so that they will be destroyed after the cache. Task-number: QTBUG-58124 Change-Id: Id2fc04da58e1ba9c80a4b6c4ebeaf98cccc7d872 Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
-rw-r--r--src/plugins/geoservices/osm/qgeofiletilecacheosm.cpp1
-rw-r--r--src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp2
2 files changed, 2 insertions, 1 deletions
diff --git a/src/plugins/geoservices/osm/qgeofiletilecacheosm.cpp b/src/plugins/geoservices/osm/qgeofiletilecacheosm.cpp
index a563cced..31d5ebc8 100644
--- a/src/plugins/geoservices/osm/qgeofiletilecacheosm.cpp
+++ b/src/plugins/geoservices/osm/qgeofiletilecacheosm.cpp
@@ -53,6 +53,7 @@ QGeoFileTileCacheOsm::QGeoFileTileCacheOsm(const QVector<QGeoTileProviderOsm *>
{
m_highDpi.resize(providers.size());
for (int i = 0; i < providers.size(); i++) {
+ providers[i]->setParent(this);
m_highDpi[i] = providers[i]->isHighDpi();
m_mapIdFutures[providers[i]->mapType().mapId()].isFinished(); // To construct a default future for this mapId
connect(providers[i], &QGeoTileProviderOsm::resolutionFinished, this, &QGeoFileTileCacheOsm::onProviderResolutionFinished);
diff --git a/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp b/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp
index ff79c261..3228b31b 100644
--- a/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp
+++ b/src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp
@@ -213,7 +213,7 @@ QGeoTiledMappingManagerEngineOsm::QGeoTiledMappingManagerEngineOsm(const QVarian
disableRedirection = parameters.value(QStringLiteral("osm.mapping.providersrepository.disabled")).toBool();
foreach (QGeoTileProviderOsm * provider, m_providers) {
- provider->setParent(this);
+ // Providers are parented inside QGeoFileTileCacheOsm, as they are used in its destructor.
if (disableRedirection)
provider->disableRedirection();