We were a bit inconsistent here. A negative size Image element would not
render at all, a negative size ShaderEffect would render mirrored
and a negative size ShaderEffectSource would trigger an assert.
Be consistent and not draw any of them.
DropShadow from QtGraphicalEffects uses both a ShaderEffectSource and
a ShaderEffect together, so keeping the behavior in ShaderEffect
would make it render incorrectly.
Task-number: QTBUG-31383
Change-Id: Ied5568d7edbc2aed96b00adfdc6aae09b6f2a7d9
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
{
QQuickShaderEffectNode *node = static_cast<QQuickShaderEffectNode *>(oldNode);
- // In the case of a bad vertex shader, don't try to create a node...
- if (m_common.attributes.isEmpty()) {
+ // In the case of zero-size or a bad vertex shader, don't try to create a node...
+ if (m_common.attributes.isEmpty() || width() <= 0 || height() <= 0) {
if (node)
delete node;
return 0;
QSGNode *QQuickShaderEffectSource::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
- if (!m_sourceItem || m_sourceItem->width() == 0 || m_sourceItem->height() == 0) {
+ if (!m_sourceItem || m_sourceItem->width() <= 0 || m_sourceItem->height() <= 0) {
if (m_texture)
m_texture->setItem(0);
delete oldNode;