diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-12-12 18:06:30 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-12-12 18:06:30 +0100 |
commit | 82913414623f36acb3d2c07d6c124af9f61fcdb4 (patch) | |
tree | 610f66dd1fcb487e20bbf18587e8cfad38a40826 /src/quick/items | |
parent | d34098d8981d9103626ff7264e7b5ec084bfb63e (diff) | |
parent | f95fdacb3a12e4f0d37d3c32b34326f2bd1536de (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.cpp | 15 | ||||
-rw-r--r-- | src/quick/items/qquickshadereffectsource_p.h | 1 | ||||
-rw-r--r-- | src/quick/items/qquickwindowmodule.cpp | 2 |
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: |