diff options
author | Kim Motoyoshi Kalland <kim.kalland@nokia.com> | 2012-02-08 17:01:36 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-21 10:07:20 +0100 |
commit | 63f1fb2dfeabc01f14a1766a2277ece4d338b0e6 (patch) | |
tree | d8868c7bcebf660ef0f858eab8b7f20a266eb9bc /src/quick/items/qquickshadereffectnode.cpp | |
parent | 94052647d25f3da3903574a66051466d09eecf5e (diff) |
Free ShaderEffectSource FBOs when no longer needed.
This commit also fixes handling of texture provider deletion in
ShaderEffect.
Change-Id: Ib22a9308a35325972bc545cf29de11bd625b22b2
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Diffstat (limited to 'src/quick/items/qquickshadereffectnode.cpp')
-rw-r--r-- | src/quick/items/qquickshadereffectnode.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/quick/items/qquickshadereffectnode.cpp b/src/quick/items/qquickshadereffectnode.cpp index ae61ad940d..c4b91844e0 100644 --- a/src/quick/items/qquickshadereffectnode.cpp +++ b/src/quick/items/qquickshadereffectnode.cpp @@ -376,6 +376,14 @@ void QQuickShaderEffectMaterial::updateTextures() const } } +void QQuickShaderEffectMaterial::invalidateTextureProvider(QSGTextureProvider *provider) +{ + for (int i = 0; i < m_textures.size(); ++i) { + if (provider == m_textures.at(i).second) + m_textures[i].second = 0; + } +} + QQuickShaderEffectNode::QQuickShaderEffectNode() : m_material(this) @@ -397,6 +405,12 @@ void QQuickShaderEffectNode::markDirtyTexture() markDirty(DirtyMaterial); } +void QQuickShaderEffectNode::textureProviderDestroyed(QObject *object) +{ + Q_ASSERT(qobject_cast<QSGTextureProvider *>(object)); + m_material.invalidateTextureProvider(static_cast<QSGTextureProvider *>(object)); +} + void QQuickShaderEffectNode::preprocess() { Q_ASSERT(material()); |