diff options
-rw-r--r-- | src/quick/items/qquickshadereffect.cpp | 8 | ||||
-rw-r--r-- | src/quick/items/qquickshadereffect_p.h | 1 | ||||
-rw-r--r-- | src/quick/items/qquickshadereffectnode.cpp | 1 | ||||
-rw-r--r-- | src/quick/items/qquickshadereffectnode_p.h | 1 |
4 files changed, 11 insertions, 0 deletions
diff --git a/src/quick/items/qquickshadereffect.cpp b/src/quick/items/qquickshadereffect.cpp index 349207f145..6cb9216955 100644 --- a/src/quick/items/qquickshadereffect.cpp +++ b/src/quick/items/qquickshadereffect.cpp @@ -952,6 +952,12 @@ void QQuickShaderEffect::updateGeometry() update(); } +void QQuickShaderEffect::updateGeometryIfAtlased() +{ + if (m_supportsAtlasTextures) + updateGeometry(); +} + void QQuickShaderEffect::updateLogAndStatus(const QString &log, int status) { m_log = parseLog() + log; @@ -1000,6 +1006,8 @@ QSGNode *QQuickShaderEffect::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeDa m_dirtyUniforms = true; m_dirtyGeometry = true; connect(node, SIGNAL(logAndStatusChanged(QString,int)), this, SLOT(updateLogAndStatus(QString,int))); + connect(node, &QQuickShaderEffectNode::dirtyTexture, + this, &QQuickShaderEffect::updateGeometryIfAtlased); } QQuickShaderEffectMaterial *material = static_cast<QQuickShaderEffectMaterial *>(node->material()); diff --git a/src/quick/items/qquickshadereffect_p.h b/src/quick/items/qquickshadereffect_p.h index a5e993ee0c..4ed87e88ac 100644 --- a/src/quick/items/qquickshadereffect_p.h +++ b/src/quick/items/qquickshadereffect_p.h @@ -167,6 +167,7 @@ protected: private Q_SLOTS: void updateGeometry(); + void updateGeometryIfAtlased(); void updateLogAndStatus(const QString &log, int status); void sourceDestroyed(QObject *object); void propertyChanged(int mappedId); diff --git a/src/quick/items/qquickshadereffectnode.cpp b/src/quick/items/qquickshadereffectnode.cpp index 081e572e3b..954aa6c67b 100644 --- a/src/quick/items/qquickshadereffectnode.cpp +++ b/src/quick/items/qquickshadereffectnode.cpp @@ -491,6 +491,7 @@ QQuickShaderEffectNode::~QQuickShaderEffectNode() void QQuickShaderEffectNode::markDirtyTexture() { markDirty(DirtyMaterial); + Q_EMIT dirtyTexture(); } void QQuickShaderEffectNode::textureProviderDestroyed(QObject *object) diff --git a/src/quick/items/qquickshadereffectnode_p.h b/src/quick/items/qquickshadereffectnode_p.h index 76aecd1b04..8a7fd6c3a5 100644 --- a/src/quick/items/qquickshadereffectnode_p.h +++ b/src/quick/items/qquickshadereffectnode_p.h @@ -142,6 +142,7 @@ public: Q_SIGNALS: void logAndStatusChanged(const QString &, int status); + void dirtyTexture(); private Q_SLOTS: void markDirtyTexture(); |