Prevent badly formed texture nodes in the scene graph.
authorGunnar Sletta <gunnar.sletta@digia.com>
Tue, 15 Oct 2013 07:12:09 +0000 (09:12 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Mon, 21 Oct 2013 11:38:42 +0000 (13:38 +0200)
commit486d367e8086e63f51707e78c07ef77fa6240f0a
tree6722f818311ce2bd537944f314fb8d60c81b516c
parent19d6806716946081bc08169d3f702acf33560a89
Prevent badly formed texture nodes in the scene graph.

A texture based node without a valid texture is not allowed,
as the material and the renderer will only tolerate
well-formed nodes. If a node is missing any part of its material
state it should not be in the scene graph in the first place.

Because of an "optimization" in QSGDefaultImageNode::setTexture
and QSGSimpleTextureNode::setTexture, we must temporarily set
the texture to 0 to ensure that it gets updated properly. This
temporarily puts the node into an invalid state which can lead
to crashes when QSGNode::markDirty() reaches the renderer.

Task-number: QTBUG-34062
Change-Id: Ic1735c9b974b90b3684262de9589133c961bac6e
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
src/quick/items/qquickborderimage.cpp
src/quick/items/qquickimage.cpp
src/quick/scenegraph/qsgdefaultimagenode.cpp
src/quick/scenegraph/util/qsgsimpletexturenode.cpp