diff options
author | Gunnar Sletta <gunnar.sletta@jollamobile.com> | 2015-01-22 13:26:24 +0100 |
---|---|---|
committer | Gunnar Sletta <gunnar@sletta.org> | 2015-01-26 14:26:13 +0100 |
commit | 0c461dcae28e20cc55920b45d611f22348f12e62 (patch) | |
tree | 76bd867a920cd5524ffd3b76d38790caa5bb0840 | |
parent | d896d76b0f2ff0387cd09a04107ea5df087268e1 (diff) |
Avoid crashes when resetting the same material or geometry.
We still need to call markDirty() though, to avoid changing
behavior.
Change-Id: I9df00e8d1cbe95bfae96b9ba9162bd6f226b5bdc
Reviewed-by: Florian Hänel <florian.haenel@basyskom.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
-rw-r--r-- | src/quick/scenegraph/coreapi/qsgnode.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/quick/scenegraph/coreapi/qsgnode.cpp b/src/quick/scenegraph/coreapi/qsgnode.cpp index 7f78318884..b14c62247e 100644 --- a/src/quick/scenegraph/coreapi/qsgnode.cpp +++ b/src/quick/scenegraph/coreapi/qsgnode.cpp @@ -787,7 +787,7 @@ QSGBasicGeometryNode::~QSGBasicGeometryNode() void QSGBasicGeometryNode::setGeometry(QSGGeometry *geometry) { - if (flags() & OwnsGeometry) + if ((flags() & OwnsGeometry) != 0 && m_geometry != geometry) delete m_geometry; m_geometry = geometry; markDirty(DirtyGeometry); @@ -954,7 +954,7 @@ void QSGGeometryNode::setRenderOrder(int order) */ void QSGGeometryNode::setMaterial(QSGMaterial *material) { - if (flags() & OwnsMaterial) + if ((flags() & OwnsMaterial) != 0 && m_material != material) delete m_material; m_material = material; #ifndef QT_NO_DEBUG @@ -985,7 +985,7 @@ void QSGGeometryNode::setMaterial(QSGMaterial *material) */ void QSGGeometryNode::setOpaqueMaterial(QSGMaterial *material) { - if (flags() & OwnsOpaqueMaterial) + if ((flags() & OwnsOpaqueMaterial) != 0 && m_opaque_material != m_material) delete m_opaque_material; m_opaque_material = material; #ifndef QT_NO_DEBUG |