diff options
author | Paolo Angelelli <paolo.angelelli@qt.io> | 2017-01-17 09:28:10 +0100 |
---|---|---|
committer | Paolo Angelelli <paolo.angelelli@qt.io> | 2017-01-17 13:09:05 +0000 |
commit | 444a2d5b19e601e74e78384c823d7d048e797c4c (patch) | |
tree | 33844957e45634bc25515f0bc551f0fc71494b27 | |
parent | 9643b177a9c63d97d3854b2ed0325f4b8f4e1df1 (diff) | |
download | qtlocation-444a2d5b19e601e74e78384c823d7d048e797c4c.tar.gz |
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.cpp | 1 | ||||
-rw-r--r-- | src/plugins/geoservices/osm/qgeotiledmappingmanagerengineosm.cpp | 2 |
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(); |