summaryrefslogtreecommitdiff
path: root/src/location/labs/qsg/qmappolygonobjectqsg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/location/labs/qsg/qmappolygonobjectqsg.cpp')
-rw-r--r--src/location/labs/qsg/qmappolygonobjectqsg.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/location/labs/qsg/qmappolygonobjectqsg.cpp b/src/location/labs/qsg/qmappolygonobjectqsg.cpp
index 9963cac9..25473478 100644
--- a/src/location/labs/qsg/qmappolygonobjectqsg.cpp
+++ b/src/location/labs/qsg/qmappolygonobjectqsg.cpp
@@ -85,17 +85,16 @@ QSGNode *QMapPolygonObjectPrivateQSG::updateMapObjectNode(QSGNode *oldNode,
Q_UNUSED(visibleNode);
MapPolygonNode *node = static_cast<MapPolygonNode *>(oldNode);
- bool created = false;
if (!node) {
- if (!m_geometry.size() && !m_borderGeometry.size())
+ if (!m_geometry.size() && !m_borderGeometry.size()) {
return nullptr;
+ }
node = new MapPolygonNode();
*visibleNode = static_cast<VisibleNode *>(node);
- created = true;
}
//TODO: update only material
- if (m_geometry.isScreenDirty() || !m_borderGeometry.isScreenDirty() || !oldNode || created) {
+ if (m_geometry.isScreenDirty() || !m_borderGeometry.isScreenDirty() || !oldNode) {
node->update(fillColor(), borderColor(), &m_geometry, &m_borderGeometry);
m_geometry.setPreserveGeometry(false);
m_borderGeometry.setPreserveGeometry(false);
@@ -103,9 +102,12 @@ QSGNode *QMapPolygonObjectPrivateQSG::updateMapObjectNode(QSGNode *oldNode,
m_borderGeometry.markClean();
}
- if (created)
+ if (m_geometry.size() || m_borderGeometry.size()) {
root->appendChildNode(node);
-
+ } else {
+ delete node;
+ return nullptr;
+ }
return node;
}