Fix segfault with missing screens
Review Request #122909 - Created March 11, 2015 and submitted
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
|This is wrong. It will now cause pixmap leakage.||Martin Flöser|
Review request changed
Status: Closed (submitted)
Submitted with commit aba0ad12685e2946a42d6a60d8cca58aa24b6d2a by Jan Kundrát to branch master.
For the record I reverted with http://commits.kde.org/plasma-workspace/c4c7e6d53f66fbdd6d58b40e5f3b443c6cf2e197:The reason for revertion is that it leaks pixmaps. QX11Info::display should not return a nullptr if there is no QScreen. This needs fixing in Qt, not workarounds in our software. None of our X11 specific code in plasma-workspace or frameworks can handle the case that the Display* or xcb_connection_t* becomes null suddenly. Neither can Qt internally. If it would happen Qt would abort. The only application in our workspace which would be "somewhat" safe is KWin because it caches the returned Display after first invokation to QX11Info::display.