kdeui: prevent segmentation fault due to failed XOpenDisplay()

This commit is contained in:
Ivailo Monev 2015-07-14 22:33:55 +00:00
parent 0f11be04d2
commit d17cfcde10

View file

@ -811,21 +811,24 @@ void KWindowSystem::lowerWindow( WId win )
bool KWindowSystem::compositingActive() bool KWindowSystem::compositingActive()
{ {
bool ret = false;
if( QX11Info::display()) { if( QX11Info::display()) {
init( INFO_BASIC ); init( INFO_BASIC );
if (s_d_func()->haveXfixes) { if (s_d_func()->haveXfixes) {
return s_d_func()->compositingEnabled; return s_d_func()->compositingEnabled;
} else { } else {
create_atoms(); create_atoms();
return XGetSelectionOwner( QX11Info::display(), net_wm_cm ); ret = XGetSelectionOwner( QX11Info::display(), net_wm_cm );
} }
} else { // work even without QApplication instance } else { // work even without QApplication instance
Display* dpy = XOpenDisplay( NULL ); Display* dpy = XOpenDisplay( NULL );
create_atoms( dpy ); if (dpy) {
bool ret = XGetSelectionOwner( dpy, net_wm_cm ) != None; create_atoms( dpy );
XCloseDisplay( dpy ); ret = XGetSelectionOwner( dpy, net_wm_cm ) != None;
return ret; XCloseDisplay( dpy );
}
} }
return ret;
} }
QRect KWindowSystem::workArea( int desktop ) QRect KWindowSystem::workArea( int desktop )