diff options
Diffstat (limited to 'src/location/labs/qsg/qmapcircleobjectqsg.cpp')
-rw-r--r-- | src/location/labs/qsg/qmapcircleobjectqsg.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/location/labs/qsg/qmapcircleobjectqsg.cpp b/src/location/labs/qsg/qmapcircleobjectqsg.cpp index f79be136..6c69ce5a 100644 --- a/src/location/labs/qsg/qmapcircleobjectqsg.cpp +++ b/src/location/labs/qsg/qmapcircleobjectqsg.cpp @@ -154,15 +154,16 @@ QSGNode *QMapCircleObjectPrivateQSG::updateMapObjectNode(QSGNode *oldNode, // Q_UNUSED(visibleNode); // coz of -Werror=unused-but-set-parameter MapPolygonNode *node = static_cast<MapPolygonNode *>(oldNode); - bool created = false; if (!node) { + 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) { //QMapPolygonObject *p = static_cast<QMapPolygonObject *>(q); node->update(color(), borderColor(), &m_geometry, &m_borderGeometry); m_geometry.setPreserveGeometry(false); @@ -171,9 +172,12 @@ QSGNode *QMapCircleObjectPrivateQSG::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; } |