diff options
author | Sukyoung Oh <sukyoung.oh@qt.io> | 2022-03-29 16:50:39 +0900 |
---|---|---|
committer | Sukyoung Oh <sukyoung.oh@qt.io> | 2022-03-29 17:04:20 +0900 |
commit | 684ed0323cd979c5ef472ef431ccbbb145c35e9f (patch) | |
tree | f3b1b81d258001eed4a7e08e1704098ba4e42854 /src/imports/controls | |
parent | fb9d2be11ed53c106fbbb8eb73a3ae7902ecb4ab (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.cpp | 2 |
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; } |