diff options
author | Valery Volgutov <valery.volgutov@lge.com> | 2017-12-12 15:02:16 +0300 |
---|---|---|
committer | Jaeyoon Jung <jaeyoon.jung@lge.com> | 2020-05-18 17:20:53 +0900 |
commit | 1c5de027d0c31d1d6697bd0557128d92207763d8 (patch) | |
tree | 1cf5fc74adb1e4c708ebba85dd392ef6ab184e1f /src/quick/items/qquickshadereffectsource.cpp | |
parent | 33941cb8a036145fbf0ef386680b4f98bbbe0fc1 (diff) |
Fix for possible crash in QSGDefaultLayer::grab
When QQuickItem::setParentItem set to NULL, derefWindow can
be called. And for it item QSGNode will be destroyed.
If this item used for QQuickEffectShaderSource we will have
access to invalid QSGNode when "live" flag is enabled.
Change-Id: If785e5328a044ec9d2564a82361470f1b8091fc5
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'src/quick/items/qquickshadereffectsource.cpp')
-rw-r--r-- | src/quick/items/qquickshadereffectsource.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/quick/items/qquickshadereffectsource.cpp b/src/quick/items/qquickshadereffectsource.cpp index b298ed74da..4f61d61309 100644 --- a/src/quick/items/qquickshadereffectsource.cpp +++ b/src/quick/items/qquickshadereffectsource.cpp @@ -344,6 +344,7 @@ void QQuickShaderEffectSource::setSourceItem(QQuickItem *item) d->refFromEffectItem(m_hideSource); d->addItemChangeListener(this, QQuickItemPrivate::Geometry); connect(m_sourceItem, SIGNAL(destroyed(QObject*)), this, SLOT(sourceItemDestroyed(QObject*))); + connect(m_sourceItem, SIGNAL(parentChanged(QQuickItem*)), this, SLOT(sourceItemParentChanged(QQuickItem*))); } else { qWarning("ShaderEffectSource: sourceItem and ShaderEffectSource must both be children of the same window."); m_sourceItem = nullptr; @@ -363,6 +364,13 @@ void QQuickShaderEffectSource::sourceItemDestroyed(QObject *item) } +void QQuickShaderEffectSource::sourceItemParentChanged(QQuickItem *parent) +{ + if (!parent && m_texture) + m_texture->setItem(0); +} + + /*! \qmlproperty rect QtQuick::ShaderEffectSource::sourceRect |