From aba0ad12685e2946a42d6a60d8cca58aa24b6d2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= Date: Thu, 12 Mar 2015 14:23:27 +0100 Subject: [PATCH] Fix segfault with missing screens MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is to keep up with the Qt 5.5 changes with null QScreen. BT: #0 XInternAtom (dpy=0x0, name=0x7f1195725664 "_KDE_NET_WM_SHADOW", onlyIfExists=0) at /var/tmp/portage/x11-libs/libX11-1.6.2/work/libX11-1.6.2/src/IntAtom.c:174 #1 0x00007f11956e438c in PanelShadows::Private::clearShadow (this=, window=0x7f119958ff90) at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/panelshadows.cpp:494 #2 0x00007f11956e7139 in PanelShadows::removeWindow (this=0x7f119593b060 <(anonymous namespace)::Q_QGS_privateDialogShadowsSelf::innerFunction()::holder>, window=window@entry=0x7f119958ff90) at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/panelshadows.cpp:142 #3 0x00007f11956dd8f5 in PanelView::~PanelView (this=0x7f119958ff90, __in_chrg=) at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/panelview.cpp:124 #4 0x00007f11956dd9af in PanelView::~PanelView (this=0x7f119958ff90, __in_chrg=) at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/panelview.cpp:125 #5 0x00007f11956effa8 in ShellCorona::removeView (this=0x7f1196c19b40, idx=0) at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/shellcorona.cpp:710 #6 0x00007f11956f0038 in ShellCorona::remove (this=this@entry=0x7f1196c19b40, desktopView=) at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/shellcorona.cpp:662 #7 0x00007f11956f009f in ShellCorona::screenRemoved (this=0x7f1196c19b40, screen=) at /var/tmp/portage/kde-plasma/plasma-workspace-5.2.1/work/plasma-workspace-5.2.1/shell/shellcorona.cpp:743 Signed-off-by: Lukáš Tinkl REVIEW: 122909 --- shell/panelshadows.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/shell/panelshadows.cpp b/shell/panelshadows.cpp index c97564a24..953a5c9cc 100644 --- a/shell/panelshadows.cpp +++ b/shell/panelshadows.cpp @@ -473,6 +473,9 @@ void PanelShadows::Private::updateShadow(const QWindow *window, Plasma::FrameSvg } Display *dpy = QX11Info::display(); + if (!dpy) { + return; + } Atom atom = XInternAtom(dpy, "_KDE_NET_WM_SHADOW", False); // qDebug() << "going to set the shadow of" << window->winId() << "to" << data; @@ -491,6 +494,9 @@ void PanelShadows::Private::clearShadow(const QWindow *window) return; } Display *dpy = QX11Info::display(); + if (!dpy) { + return; + } Atom atom = XInternAtom(dpy, "_KDE_NET_WM_SHADOW", False); XDeleteProperty(dpy, window->winId(), atom); #else