aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-12-12 18:06:30 +0100
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2013-12-12 18:06:30 +0100
commit82913414623f36acb3d2c07d6c124af9f61fcdb4 (patch)
tree610f66dd1fcb487e20bbf18587e8cfad38a40826 /src/quick/items
parentd34098d8981d9103626ff7264e7b5ec084bfb63e (diff)
parentf95fdacb3a12e4f0d37d3c32b34326f2bd1536de (diff)
Merge remote-tracking branch 'origin/release' into stable
Conflicts: src/qml/qml/qqmlcompiler.cpp Change-Id: I802731139d47c5b733dd805f7bf432d67d7331e1
Diffstat (limited to 'src/quick/items')
-rw-r--r--src/quick/items/qquickshadereffectsource.cpp15
-rw-r--r--src/quick/items/qquickshadereffectsource_p.h1
-rw-r--r--src/quick/items/qquickwindowmodule.cpp2
3 files changed, 14 insertions, 4 deletions
diff --git a/src/quick/items/qquickshadereffectsource.cpp b/src/quick/items/qquickshadereffectsource.cpp
index e076a342df..98203c51e5 100644
--- a/src/quick/items/qquickshadereffectsource.cpp
+++ b/src/quick/items/qquickshadereffectsource.cpp
@@ -158,16 +158,24 @@ QQuickShaderEffectTexture::QQuickShaderEffectTexture(QQuickItem *shaderSource)
QQuickShaderEffectTexture::~QQuickShaderEffectTexture()
{
- if (m_renderer)
- disconnect(m_renderer, SIGNAL(sceneGraphChanged()), this, SLOT(markDirtyTexture()));
+ invalidated();
+}
+
+void QQuickShaderEffectTexture::invalidated()
+{
delete m_renderer;
+ m_renderer = 0;
delete m_fbo;
delete m_secondaryFbo;
+ m_fbo = m_secondaryFbo = 0;
#ifdef QSG_DEBUG_FBO_OVERLAY
delete m_debugOverlay;
+ m_debugOverlay = 0;
#endif
- if (m_transparentTexture)
+ if (m_transparentTexture) {
glDeleteTextures(1, &m_transparentTexture);
+ m_transparentTexture = 0;
+ }
}
int QQuickShaderEffectTexture::textureId() const
@@ -609,6 +617,7 @@ void QQuickShaderEffectSource::ensureTexture()
"Cannot be used outside the rendering thread");
m_texture = new QQuickShaderEffectTexture(this);
+ connect(QQuickItemPrivate::get(this)->window, SIGNAL(sceneGraphInvalidated()), m_texture, SLOT(invalidated()), Qt::DirectConnection);
connect(m_texture, SIGNAL(updateRequested()), this, SLOT(update()));
connect(m_texture, SIGNAL(scheduledUpdateCompleted()), this, SIGNAL(scheduledUpdateCompleted()));
}
diff --git a/src/quick/items/qquickshadereffectsource_p.h b/src/quick/items/qquickshadereffectsource_p.h
index 6218775700..efa963fe64 100644
--- a/src/quick/items/qquickshadereffectsource_p.h
+++ b/src/quick/items/qquickshadereffectsource_p.h
@@ -124,6 +124,7 @@ Q_SIGNALS:
public Q_SLOTS:
void markDirtyTexture();
+ void invalidated();
private:
void grab();
diff --git a/src/quick/items/qquickwindowmodule.cpp b/src/quick/items/qquickwindowmodule.cpp
index cd1b68991d..44a4bf3db6 100644
--- a/src/quick/items/qquickwindowmodule.cpp
+++ b/src/quick/items/qquickwindowmodule.cpp
@@ -82,7 +82,7 @@ public:
if (!m_complete)
m_visibility = visibility;
else
- QQuickWindow::setVisibility(m_visibility);
+ QQuickWindow::setVisibility(visibility);
}
Q_SIGNALS: