diff options
author | Tim Jenßen <[email protected]> | 2025-04-10 18:45:48 +0200 |
---|---|---|
committer | Tim Jenssen <[email protected]> | 2025-05-06 11:20:42 +0200 |
commit | 981814fd8d571b12940e3b2a2441fc686fd5bdcb (patch) | |
tree | c3cff0839676ca395f9415a62d840ccd24925b45 | |
parent | 30d2b91fb48c2a28188f75d3e87311a2a6aba5d8 (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.cpp | 4 |
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); |