From 0742227e820f4a0c10fc0c001ef3443ebaeeae09 Mon Sep 17 00:00:00 2001 From: Fushan Wen Date: Tue, 28 Jun 2022 18:13:30 +0800 Subject: [PATCH] shell: avoid crash after waking up from sleep The panel was removed by a timer, which can cause null QScreen pointer. BUG: 455328 FIXED-IN: 5.25.3 (cherry picked from ffadcb34282f1219c312d73ebf9660fdbab8fe2d) --- shell/panelview.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/shell/panelview.cpp b/shell/panelview.cpp index 9f3f1d713..ffdc4cdbb 100644 --- a/shell/panelview.cpp +++ b/shell/panelview.cpp @@ -839,13 +839,16 @@ void PanelView::resizeEvent(QResizeEvent *ev) { updateEnabledBorders(); // don't setGeometry() to make really sure we aren't doing a resize loop - const QPoint pos = geometryByDistance(m_distance).topLeft(); - setPosition(pos); - if (m_shellSurface) { - m_shellSurface->setPosition(pos); + if (m_screenToFollow) { + const QPoint pos = geometryByDistance(m_distance).topLeft(); + setPosition(pos); + if (m_shellSurface) { + m_shellSurface->setPosition(pos); + } + + m_strutsTimer.start(STRUTSTIMERDELAY); + Q_EMIT m_corona->availableScreenRegionChanged(); } - m_strutsTimer.start(STRUTSTIMERDELAY); - Q_EMIT m_corona->availableScreenRegionChanged(); PlasmaQuick::ContainmentView::resizeEvent(ev); }