diff --git a/src/location/declarativemaps/qdeclarativegeomap.cpp b/src/location/declarativemaps/qdeclarativegeomap.cpp index f5d2bdb5c3388bb9e8fc975c2da8120a91a01de9..bd9c9cf23af9b4b3b807c91f1b5c96ca7c8ddd28 100644 --- a/src/location/declarativemaps/qdeclarativegeomap.cpp +++ b/src/location/declarativemaps/qdeclarativegeomap.cpp @@ -241,6 +241,8 @@ QDeclarativeGeoMap::~QDeclarativeGeoMap() delete m_copyrights.data(); m_copyrights.clear(); + + delete m_map; } /*! @@ -279,17 +281,17 @@ void QDeclarativeGeoMap::onMapChildrenChanged() copyrights = m_copyrights.data(); - connect(m_map.data(), SIGNAL(copyrightsChanged(QImage)), + connect(m_map, SIGNAL(copyrightsChanged(QImage)), copyrights, SLOT(copyrightsChanged(QImage))); - connect(m_map.data(), SIGNAL(copyrightsChanged(QImage)), + connect(m_map, SIGNAL(copyrightsChanged(QImage)), this, SIGNAL(copyrightsChanged(QImage))); - connect(m_map.data(), SIGNAL(copyrightsChanged(QString)), + connect(m_map, SIGNAL(copyrightsChanged(QString)), copyrights, SLOT(copyrightsChanged(QString))); - connect(m_map.data(), SIGNAL(copyrightsChanged(QString)), + connect(m_map, SIGNAL(copyrightsChanged(QString)), this, SIGNAL(copyrightsChanged(QString))); - connect(m_map.data(), SIGNAL(copyrightsStyleSheetChanged(QString)), + connect(m_map, SIGNAL(copyrightsStyleSheetChanged(QString)), copyrights, SLOT(onCopyrightsStyleSheetChanged(QString))); connect(copyrights, SIGNAL(linkActivated(QString)), @@ -725,7 +727,7 @@ void QDeclarativeGeoMap::onCameraCapabilitiesChanged(const QGeoCameraCapabilitie */ void QDeclarativeGeoMap::mappingManagerInitialized() { - m_map = QPointer<QGeoMap>(m_mappingManager->createMap(this)); + m_map = m_mappingManager->createMap(this); if (!m_map) return; @@ -765,11 +767,11 @@ void QDeclarativeGeoMap::mappingManagerInitialized() QImage copyrightImage; if (!m_initialized && width() > 0 && height() > 0) { QMetaObject::Connection copyrightStringCatcherConnection = - connect(m_map.data(), + connect(m_map, QOverload<const QString &>::of(&QGeoMap::copyrightsChanged), [©rightString](const QString ©){ copyrightString = copy; }); QMetaObject::Connection copyrightImageCatcherConnection = - connect(m_map.data(), + connect(m_map, QOverload<const QImage &>::of(&QGeoMap::copyrightsChanged), [©rightImage](const QImage ©){ copyrightImage = copy; }); m_map->setViewportSize(QSize(width(), height())); @@ -781,28 +783,28 @@ void QDeclarativeGeoMap::mappingManagerInitialized() m_copyrights = new QDeclarativeGeoMapCopyrightNotice(this); m_copyrights->onCopyrightsStyleSheetChanged(m_map->copyrightsStyleSheet()); - connect(m_map.data(), SIGNAL(copyrightsChanged(QImage)), + connect(m_map, SIGNAL(copyrightsChanged(QImage)), m_copyrights.data(), SLOT(copyrightsChanged(QImage))); - connect(m_map.data(), SIGNAL(copyrightsChanged(QImage)), + connect(m_map, SIGNAL(copyrightsChanged(QImage)), this, SIGNAL(copyrightsChanged(QImage))); - connect(m_map.data(), SIGNAL(copyrightsChanged(QString)), + connect(m_map, SIGNAL(copyrightsChanged(QString)), m_copyrights.data(), SLOT(copyrightsChanged(QString))); - connect(m_map.data(), SIGNAL(copyrightsChanged(QString)), + connect(m_map, SIGNAL(copyrightsChanged(QString)), this, SIGNAL(copyrightsChanged(QString))); if (!copyrightString.isEmpty()) - emit m_map.data()->copyrightsChanged(copyrightString); + emit m_map->copyrightsChanged(copyrightString); else if (!copyrightImage.isNull()) - emit m_map.data()->copyrightsChanged(copyrightImage); + emit m_map->copyrightsChanged(copyrightImage); - connect(m_map.data(), SIGNAL(copyrightsStyleSheetChanged(QString)), + connect(m_map, SIGNAL(copyrightsStyleSheetChanged(QString)), m_copyrights.data(), SLOT(onCopyrightsStyleSheetChanged(QString))); connect(m_copyrights.data(), SIGNAL(linkActivated(QString)), this, SIGNAL(copyrightLinkActivated(QString))); - connect(m_map.data(), &QGeoMap::sgNodeChanged, this, &QQuickItem::update); - connect(m_map.data(), &QGeoMap::cameraCapabilitiesChanged, this, &QDeclarativeGeoMap::onCameraCapabilitiesChanged); + connect(m_map, &QGeoMap::sgNodeChanged, this, &QQuickItem::update); + connect(m_map, &QGeoMap::cameraCapabilitiesChanged, this, &QDeclarativeGeoMap::onCameraCapabilitiesChanged); // set visibility of copyright notice m_copyrights->setCopyrightsVisible(m_copyrightsVisible); diff --git a/src/location/declarativemaps/qdeclarativegeomap_p.h b/src/location/declarativemaps/qdeclarativegeomap_p.h index f07a2e7f3cfbd2b2d8610dd12709a7c815caff86..e8ff326519d1ef8fe9266d6b7c7e37c72269679b 100644 --- a/src/location/declarativemaps/qdeclarativegeomap_p.h +++ b/src/location/declarativemaps/qdeclarativegeomap_p.h @@ -252,7 +252,7 @@ private: QList<QDeclarativeGeoMapType *> m_supportedMapTypes; QList<QDeclarativeGeoMapItemView *> m_mapViews; QQuickGeoMapGestureArea *m_gestureArea; - QPointer<QGeoMap> m_map; + QGeoMap* m_map = nullptr; QPointer<QDeclarativeGeoMapCopyrightNotice> m_copyrights; QList<QPointer<QDeclarativeGeoMapItemBase> > m_mapItems; QList<QPointer<QDeclarativeGeoMapItemGroup> > m_mapItemGroups; diff --git a/src/location/declarativemaps/qquickgeomapgesturearea.cpp b/src/location/declarativemaps/qquickgeomapgesturearea.cpp index a40afd6827d7a2870f443bbb4c2a0695cf090069..33a984d6fd4b413c4398d144196ff1e839cf2bc0 100644 --- a/src/location/declarativemaps/qquickgeomapgesturearea.cpp +++ b/src/location/declarativemaps/qquickgeomapgesturearea.cpp @@ -508,7 +508,7 @@ QQuickGeoMapGestureArea::QQuickGeoMapGestureArea(QDeclarativeGeoMap *map) /*! \internal */ -void QQuickGeoMapGestureArea::setMap(QPointer<QGeoMap> map) +void QQuickGeoMapGestureArea::setMap(QGeoMap *map) { if (m_map || !map) return; diff --git a/src/location/declarativemaps/qquickgeomapgesturearea_p.h b/src/location/declarativemaps/qquickgeomapgesturearea_p.h index 5daa39cf230fece8016b8a7f9980732e0455e898..0bc774d338bc784a6aa0f2e5aa9dd80f47a317b2 100644 --- a/src/location/declarativemaps/qquickgeomapgesturearea_p.h +++ b/src/location/declarativemaps/qquickgeomapgesturearea_p.h @@ -178,7 +178,7 @@ public: void setMaximumZoomLevel(qreal max); qreal maximumZoomLevel() const; - void setMap(QPointer<QGeoMap> map); + void setMap(QGeoMap* map); bool preventStealing() const; void setPreventStealing(bool prevent); @@ -267,7 +267,7 @@ private: void updateFlickParameters(const QPointF &pos); private: - QPointer<QGeoMap> m_map; + QGeoMap* m_map; QDeclarativeGeoMap *m_declarativeMap; bool m_enabled; diff --git a/src/location/maps/qgeomappingmanager.cpp b/src/location/maps/qgeomappingmanager.cpp index cf040bebe605f714b0d475916a00915ea3662527..d73050f7deb4c1d405d956919d5cc4fa558456eb 100644 --- a/src/location/maps/qgeomappingmanager.cpp +++ b/src/location/maps/qgeomappingmanager.cpp @@ -133,10 +133,8 @@ int QGeoMappingManager::managerVersion() const */ QGeoMap *QGeoMappingManager::createMap(QObject *parent) { - QGeoMap * map = d_ptr->engine->createMap(); - if (map) - connect(parent, &QObject::destroyed,map, &QGeoMap::deleteLater); - return map; + Q_UNUSED(parent) + return d_ptr->engine->createMap(); } QList<QGeoMapType> QGeoMappingManager::supportedMapTypes() const