Fix segfault with missing screens

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=<optimized out>, 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=<optimized out>)
     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=<optimized out>)
     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=<optimized out>)
     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=<optimized out>)
     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 <lukas@kde.org>
REVIEW: 122909
wilder-5.14
Jan Kundrát 11 years ago
parent 12eba17713
commit aba0ad1268
  1. 6
      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

Loading…
Cancel
Save