diff options
author | Michal Klocek <michal.klocek@theqtcompany.com> | 2015-04-28 14:00:39 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@theqtcompany.com> | 2015-05-21 08:13:17 +0000 |
commit | 3c674e0ec3fcbb1acebd27580ef005d7f6726719 (patch) | |
tree | 970902e2baa57b31bd2851ec1b987e4f70eeb4b1 /src/location/maps/qgeomap.cpp | |
parent | 52b887a8004029cf18942b5d16b1dcf396feabc0 (diff) | |
download | qtlocation-3c674e0ec3fcbb1acebd27580ef005d7f6726719.tar.gz |
Fix missing guarded pointers for mapping engine
Since mapping engine is going to be destroyed
on geoseriveprovider change/plugin unload use
QPointer to track engine existence before
making calls.
This commit refactors a bit QGeoTileRequestManager
to handle all the calls to the enigne. Check for
null pointer before calling the engine. Move
registerMap method to base class.
Update QGeoTiledMapNokia class accordingly.
Change-Id: I886e85e660b2c515e4a617e98e9cc0c3c13781b6
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'src/location/maps/qgeomap.cpp')
-rw-r--r-- | src/location/maps/qgeomap.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/location/maps/qgeomap.cpp b/src/location/maps/qgeomap.cpp index e633e46f..f6f8d5e2 100644 --- a/src/location/maps/qgeomap.cpp +++ b/src/location/maps/qgeomap.cpp @@ -127,18 +127,12 @@ QString QGeoMap::pluginString() QGeoCameraCapabilities QGeoMap::cameraCapabilities() { Q_D(const QGeoMap); - if (d->m_engine) + if (!d->m_engine.isNull()) return d->m_engine->cameraCapabilities(); else return QGeoCameraCapabilities(); } -QGeoMappingManagerEngine *QGeoMap::engine() -{ - Q_D(const QGeoMap); - return d->m_engine; -} - int QGeoMap::mapVersion() { return -1; @@ -158,7 +152,9 @@ QGeoMapPrivate::QGeoMapPrivate(QGeoMappingManagerEngine *engine) m_controller(0), m_activeMapType(QGeoMapType()) { - m_pluginString = m_engine->managerName() + QLatin1Char('_') + QString::number(m_engine->managerVersion()); + if (!m_engine.isNull()) { + m_pluginString = m_engine->managerName() + QLatin1Char('_') + QString::number(m_engine->managerVersion()); + } } QGeoMapPrivate::~QGeoMapPrivate() @@ -174,7 +170,7 @@ void QGeoMapPrivate::setCameraData(const QGeoCameraData &cameraData) QGeoCameraData oldCameraData = m_cameraData; m_cameraData = cameraData; - if (m_engine) { + if (!m_engine.isNull()) { QGeoCameraCapabilities capabilities = m_engine->cameraCapabilities(); if (m_cameraData.zoomLevel() < capabilities.minimumZoomLevel()) m_cameraData.setZoomLevel(capabilities.minimumZoomLevel()); |