diff options
author | Gunnar Sletta <gunnar.sletta@jollamobile.com> | 2014-04-01 09:39:28 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-04-01 12:33:34 +0200 |
commit | 81ba77d736f07efac37d284cd741d71f9dad4149 (patch) | |
tree | 4f8b22f81da4ef18806654e862bf2c440e2a5ce9 /src/quick/items/qquickshadereffectsource.cpp | |
parent | 359e526c1fc8600253bca166d6ed5e579e598b7c (diff) |
Prevent crash when mixing shaders from different windows
Change-Id: Iad9383ff02cb3130d725a215582400e7806df1dc
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Diffstat (limited to 'src/quick/items/qquickshadereffectsource.cpp')
-rw-r--r-- | src/quick/items/qquickshadereffectsource.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/quick/items/qquickshadereffectsource.cpp b/src/quick/items/qquickshadereffectsource.cpp index ebeff599f4..44cafe347e 100644 --- a/src/quick/items/qquickshadereffectsource.cpp +++ b/src/quick/items/qquickshadereffectsource.cpp @@ -710,9 +710,15 @@ void QQuickShaderEffectSource::setSourceItem(QQuickItem *item) if (window()) d->derefWindow(); } - m_sourceItem = item; - if (item) { + if (window() == item->window()) { + m_sourceItem = item; + } else { + qWarning("ShaderEffectSource: sourceItem and ShaderEffectSource must both be children of the same window."); + m_sourceItem = 0; + } + + if (m_sourceItem) { QQuickItemPrivate *d = QQuickItemPrivate::get(item); // 'item' needs a window to get a scene graph node. It usually gets one through its // parent, but if the source item is "inline" rather than a reference -- i.e. |