summaryrefslogtreecommitdiffstats
path: root/src/render/geometry
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-11-10 12:26:49 +0100
committerAndy Nichols <andy.nichols@theqtcompany.com>2015-11-16 12:26:35 +0000
commite17b8554cb8b72a029c9272f5fead98bf748688a (patch)
tree0d6c4fb0910530fdb7acc01885533ec498641fa5 /src/render/geometry
parent096bfc0da2af1b6ba3a7e39798edd6732e6c952e (diff)
GeometryRenderer: do not leak geometry build with functor
Change-Id: Ib4f2d366da12d7295a3089da9378e8d8e0c53392 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
Diffstat (limited to 'src/render/geometry')
-rw-r--r--src/render/geometry/geometryrenderer.cpp3
-rw-r--r--src/render/geometry/qgeometryrenderer.cpp3
2 files changed, 4 insertions, 2 deletions
diff --git a/src/render/geometry/geometryrenderer.cpp b/src/render/geometry/geometryrenderer.cpp
index 13780781d..69c58cff7 100644
--- a/src/render/geometry/geometryrenderer.cpp
+++ b/src/render/geometry/geometryrenderer.cpp
@@ -35,6 +35,7 @@
****************************************************************************/
#include "geometryrenderer_p.h"
+#include <Qt3DCore/private/qnode_p.h>
#include <Qt3DCore/qscenepropertychange.h>
#include <Qt3DRender/private/geometryrenderermanager_p.h>
#include <Qt3DCore/qbackendscenepropertychange.h>
@@ -179,7 +180,7 @@ void GeometryRenderer::executeFunctor()
e->setPropertyName("geometry");
// The Frontend element has to perform the clone
// So that the objects are created in the main thread
- e->setValue(QVariant::fromValue(geometry));
+ e->setValue(QVariant::fromValue(QNodePtr(geometry, &QNodePrivate::nodePtrDeleter)));
e->setTargetNode(peerUuid());
notifyObservers(e);
// Maybe we could also send a status to help troubleshoot errors
diff --git a/src/render/geometry/qgeometryrenderer.cpp b/src/render/geometry/qgeometryrenderer.cpp
index 9688b26f1..cb0e9abb8 100644
--- a/src/render/geometry/qgeometryrenderer.cpp
+++ b/src/render/geometry/qgeometryrenderer.cpp
@@ -261,7 +261,8 @@ void QGeometryRenderer::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
Q_D(QGeometryRenderer);
QScenePropertyChangePtr change = qSharedPointerCast<QScenePropertyChange>(e);
if (change->type() == NodeUpdated && change->propertyName() == QByteArrayLiteral("geometry")) {
- QGeometry *backendGeometry = change->value().value<QGeometry *>();
+ QNodePtr nodePtr = change->value().value<QNodePtr>();
+ QGeometry *backendGeometry = static_cast<QGeometry *>(nodePtr.data());
QGeometry *frontendGeometry = static_cast<QGeometry *>(QNode::clone(backendGeometry));
if (frontendGeometry != Q_NULLPTR)
d->insertTree(frontendGeometry);