aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Jenßen <[email protected]>2025-04-10 18:45:48 +0200
committerTim Jenssen <[email protected]>2025-05-06 11:20:42 +0200
commit981814fd8d571b12940e3b2a2441fc686fd5bdcb (patch)
treec3cff0839676ca395f9415a62d840ccd24925b45
parent30d2b91fb48c2a28188f75d3e87311a2a6aba5d8 (diff)
Guard against null sceneGraphContext() in QQuickShaderEffect shutdown
This fixes a shutdown crash observed in Qt Design Studio 4.8 with Qt 6.8.3. Minimal crash trace: QQuickShaderEffectPrivate::shaderEffectManager QQuickShaderEffectPrivate::updateShader QQuickShaderEffect::setVertexShader ... QQmlBinding::slowWrite QObject::~QObject Pick-to: 6.9 6.8 Change-Id: I0e729bf7bb59a4e133cc2d06d79af2343934bbc5 Reviewed-by: Ulf Hermann <[email protected]> Reviewed-by: Tor Arne Vestbø <[email protected]>
-rw-r--r--src/quick/items/qquickshadereffect.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/quick/items/qquickshadereffect.cpp b/src/quick/items/qquickshadereffect.cpp
index c956977301..2a0659c250 100644
--- a/src/quick/items/qquickshadereffect.cpp
+++ b/src/quick/items/qquickshadereffect.cpp
@@ -1181,7 +1181,9 @@ QSGGuiThreadShaderEffectManager *QQuickShaderEffectPrivate::shaderEffectManager(
return m_mgr;
QQuickWindow *w = q->window();
if (w) { // note: just the window, don't care about isSceneGraphInitialized() here
- m_mgr = QQuickWindowPrivate::get(w)->context->sceneGraphContext()->createGuiThreadShaderEffectManager();
+ QSGRenderContext *renderContext = QQuickWindowPrivate::get(w)->context;
+ if (QSGContext *sgContext = renderContext->sceneGraphContext())
+ m_mgr = sgContext->createGuiThreadShaderEffectManager();
if (m_mgr) {
QObject::connect(m_mgr, &QSGGuiThreadShaderEffectManager::logAndStatusChanged, q, &QQuickShaderEffect::logChanged);
QObject::connect(m_mgr, &QSGGuiThreadShaderEffectManager::logAndStatusChanged, q, &QQuickShaderEffect::statusChanged);