summaryrefslogtreecommitdiff
path: root/src/location
diff options
context:
space:
mode:
Diffstat (limited to 'src/location')
-rw-r--r--src/location/declarativemaps/qdeclarativecirclemapitem.cpp2
-rw-r--r--src/location/declarativemaps/qdeclarativegeomap.cpp2
-rw-r--r--src/location/declarativemaps/qdeclarativepolylinemapitem_p_p.h2
-rw-r--r--src/location/labs/qsg/qgeomapobjectqsgsupport.cpp13
-rw-r--r--src/location/labs/qsg/qgeomapobjectqsgsupport_p.h3
5 files changed, 13 insertions, 9 deletions
diff --git a/src/location/declarativemaps/qdeclarativecirclemapitem.cpp b/src/location/declarativemaps/qdeclarativecirclemapitem.cpp
index f0ba122c..841c29a8 100644
--- a/src/location/declarativemaps/qdeclarativecirclemapitem.cpp
+++ b/src/location/declarativemaps/qdeclarativecirclemapitem.cpp
@@ -140,8 +140,6 @@ QT_BEGIN_NAMESPACE
\since 5.14
*/
-static const int CircleSamples = 128;
-
struct Vertex
{
QVector2D position;
diff --git a/src/location/declarativemaps/qdeclarativegeomap.cpp b/src/location/declarativemaps/qdeclarativegeomap.cpp
index fe59e246..e297c2b1 100644
--- a/src/location/declarativemaps/qdeclarativegeomap.cpp
+++ b/src/location/declarativemaps/qdeclarativegeomap.cpp
@@ -1628,7 +1628,7 @@ void QDeclarativeGeoMap::clearData()
void QDeclarativeGeoMap::fitViewportToGeoShape(const QGeoShape &shape, QVariant margins)
{
QMargins m(10, 10, 10, 10); // lets defaults to 10 if margins is invalid
- switch (margins.type()) {
+ switch (static_cast<QMetaType::Type>(margins.type())) {
case QMetaType::Int:
case QMetaType::Double: {
const int value = int(margins.toDouble());
diff --git a/src/location/declarativemaps/qdeclarativepolylinemapitem_p_p.h b/src/location/declarativemaps/qdeclarativepolylinemapitem_p_p.h
index 22a69173..705ccf5a 100644
--- a/src/location/declarativemaps/qdeclarativepolylinemapitem_p_p.h
+++ b/src/location/declarativemaps/qdeclarativepolylinemapitem_p_p.h
@@ -395,7 +395,7 @@ public:
"}";
}
- const char *fragmentShader() const {
+ const char *fragmentShader() const override {
return
"uniform lowp vec4 color; \n"
"void main() { \n"
diff --git a/src/location/labs/qsg/qgeomapobjectqsgsupport.cpp b/src/location/labs/qsg/qgeomapobjectqsgsupport.cpp
index 0e1df8f6..a978573d 100644
--- a/src/location/labs/qsg/qgeomapobjectqsgsupport.cpp
+++ b/src/location/labs/qsg/qgeomapobjectqsgsupport.cpp
@@ -157,9 +157,14 @@ void QGeoMapObjectQSGSupport::updateMapObjects(QSGNode *root, QQuickWindow *wind
{
if (!root)
return;
+
+ if (m_mapObjectsRootNode && m_mapObjectsRootNode->parent())
+ root->appendChildNode(m_mapObjectsRootNode.get());
+
if (!m_mapObjectsRootNode) {
- m_mapObjectsRootNode = new QDeclarativePolygonMapItemPrivateOpenGL::RootNode();
- root->appendChildNode(m_mapObjectsRootNode);
+ m_mapObjectsRootNode = std::make_unique<QDeclarativePolygonMapItemPrivateOpenGL::RootNode>();
+ root->appendChildNode(m_mapObjectsRootNode.get());
+ m_mapObjectsRootNode->setFlag(QSGNode::OwnedByParent, false);
}
m_mapObjectsRootNode->removeAllChildNodes();
@@ -184,7 +189,7 @@ void QGeoMapObjectQSGSupport::updateMapObjects(QSGNode *root, QQuickWindow *wind
MapObject &mo = m_mapObjects[i];
QQSGMapObject *sgo = mo.sgObject;
QSGNode *oldNode = mo.qsgNode;
- mo.qsgNode = sgo->updateMapObjectNode(oldNode, &mo.visibleNode, m_mapObjectsRootNode, window);
+ mo.qsgNode = sgo->updateMapObjectNode(oldNode, &mo.visibleNode, m_mapObjectsRootNode.get(), window);
if (Q_UNLIKELY(!mo.qsgNode)) {
qWarning() << "updateMapObjectNode for "<<mo.object->type() << " returned NULL";
} else if (mo.visibleNode && (mo.visibleNode->visible() != mo.object->visible())) {
@@ -200,7 +205,7 @@ void QGeoMapObjectQSGSupport::updateMapObjects(QSGNode *root, QQuickWindow *wind
QQSGMapObject *sgo = mo.sgObject;
QSGNode *oldNode = mo.qsgNode;
sgo->updateGeometry(); // or subtree will be blocked
- mo.qsgNode = sgo->updateMapObjectNode(oldNode, &mo.visibleNode, m_mapObjectsRootNode, window);
+ mo.qsgNode = sgo->updateMapObjectNode(oldNode, &mo.visibleNode, m_mapObjectsRootNode.get(), window);
if (mo.qsgNode) {
if (mo.visibleNode && (mo.visibleNode->visible() != mo.object->visible())) {
mo.visibleNode->setVisible(mo.object->visible());
diff --git a/src/location/labs/qsg/qgeomapobjectqsgsupport_p.h b/src/location/labs/qsg/qgeomapobjectqsgsupport_p.h
index 1ec966fa..cbbc0969 100644
--- a/src/location/labs/qsg/qgeomapobjectqsgsupport_p.h
+++ b/src/location/labs/qsg/qgeomapobjectqsgsupport_p.h
@@ -59,6 +59,7 @@
#include <QtLocation/private/qdeclarativepolylinemapitem_p.h>
#include <QtLocation/private/qdeclarativepolygonmapitem_p_p.h>
#include <QtCore/qpointer.h>
+#include <memory>
QT_BEGIN_NAMESPACE
struct Q_LOCATION_PRIVATE_EXPORT MapObject {
@@ -85,7 +86,7 @@ public:
QList<MapObject> m_pendingMapObjects;
QList<MapObject> m_removedMapObjects;
QGeoMap *m_map = nullptr;
- QDeclarativePolygonMapItemPrivateOpenGL::RootNode *m_mapObjectsRootNode = nullptr;
+ std::unique_ptr<QDeclarativePolygonMapItemPrivateOpenGL::RootNode> m_mapObjectsRootNode;
};
QT_END_NAMESPACE