diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-11-10 12:26:49 +0100 |
---|---|---|
committer | Andy Nichols <andy.nichols@theqtcompany.com> | 2015-11-16 12:26:35 +0000 |
commit | e17b8554cb8b72a029c9272f5fead98bf748688a (patch) | |
tree | 0d6c4fb0910530fdb7acc01885533ec498641fa5 /src/render/geometry | |
parent | 096bfc0da2af1b6ba3a7e39798edd6732e6c952e (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.cpp | 3 | ||||
-rw-r--r-- | src/render/geometry/qgeometryrenderer.cpp | 3 |
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); |