Verified Commit d24df924 authored by Xuetian Weng's avatar Xuetian Weng
Browse files

Delegate updateShadow to event loop.

If PlasmaCore.Dialog resizes while visible, the kwin shadow property
used by InternalWindow may update the shadow during rendering and cause
crash related to current context.

(cherry picked from commit a521525c)
parent ad25bf05
Pipeline #194674 passed with stage
in 21 minutes and 1 second
......@@ -119,7 +119,14 @@ bool InternalWindow::eventFilter(QObject *watched, QEvent *event)
setSkipCloseAnimation(m_handle->property(s_skipClosePropertyName).toBool());
}
if (pe->propertyName() == s_shadowEnabledPropertyName) {
updateShadow();
// Some dialog e.g. Plasma::Dialog may update shadow in the middle of rendering.
// The opengl context changed by updateShadow may break the QML Window rendering
// and cause crash.
QMetaObject::invokeMethod(
this, [this]() {
updateShadow();
},
Qt::QueuedConnection);
}
if (pe->propertyName() == "kwin_windowType") {
m_windowType = m_handle->property("kwin_windowType").value<NET::WindowType>();
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment