Commit a521525c authored by Xuetian Weng's avatar Xuetian Weng Committed by 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.
parent 6838b113
Pipeline #194607 passed with stage
in 34 minutes and 42 seconds
......@@ -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