aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickshadereffectsource.cpp
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar.sletta@jollamobile.com>2014-04-01 09:39:28 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-04-01 12:33:34 +0200
commit81ba77d736f07efac37d284cd741d71f9dad4149 (patch)
tree4f8b22f81da4ef18806654e862bf2c440e2a5ce9 /src/quick/items/qquickshadereffectsource.cpp
parent359e526c1fc8600253bca166d6ed5e579e598b7c (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.cpp10
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.