aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/controls
diff options
context:
space:
mode:
authorSukyoung Oh <sukyoung.oh@qt.io>2022-03-29 16:50:39 +0900
committerSukyoung Oh <sukyoung.oh@qt.io>2022-03-29 17:04:20 +0900
commit684ed0323cd979c5ef472ef431ccbbb145c35e9f (patch)
treef3b1b81d258001eed4a7e08e1704098ba4e42854 /src/imports/controls
parentfb9d2be11ed53c106fbbb8eb73a3ae7902ecb4ab (diff)
Reset provider's texture if QQuickNiniPatchImage's source is invalid
When QQuickNinePatchImage is used as a source of other shader related object like ShaderEffect, OpacityMask or etc., there isn't a implementation to invalidate the provider's texture when QQuickNinePatchImage is invalid. It causes segmentation fault due to dangling pointer. Fixes: QTBUG-100508 Change-Id: I9ea25fe68b41d3b15503e3dccea3a816ad485a20 (cherry picked from commit 81bbd0b45aeb1eb98efd9153c79ebf4f0e4be839) Reviewed-by: <sukyoung.oh@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/imports/controls')
-rw-r--r--src/imports/controls/imagine/qquickninepatchimage.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/imports/controls/imagine/qquickninepatchimage.cpp b/src/imports/controls/imagine/qquickninepatchimage.cpp
index dfad628b..5b74f6f5 100644
--- a/src/imports/controls/imagine/qquickninepatchimage.cpp
+++ b/src/imports/controls/imagine/qquickninepatchimage.cpp
@@ -439,6 +439,8 @@ QSGNode *QQuickNinePatchImage::updatePaintNode(QSGNode *oldNode, UpdatePaintNode
QSizeF sz = size();
QImage image = d->pix.image();
if (!sz.isValid() || image.isNull()) {
+ if (d->provider)
+ d->provider->updateTexture(nullptr);
delete oldNode;
return nullptr;
}