tdecore: fix a crash of dcop non-GUI apps without X

Previously non-GUI apps crashed on TDEApplication::updateUserTimestamp
callback when receiving a DCOP message.

Signed-off-by: Alexander Golubev <fatzer2@gmail.com>
pull/1/head
Alexander Golubev 8 years ago committed by Slávek Banko
parent 6c1b8a75f2
commit 5842fb37df

@ -2268,16 +2268,20 @@ bool TDEApplication::x11EventFilter( XEvent *_event )
void TDEApplication::updateUserTimestamp( unsigned long time ) void TDEApplication::updateUserTimestamp( unsigned long time )
{ {
#if defined Q_WS_X11 #if defined Q_WS_X11
Display *display = tqt_xdisplay();
if (!display) {
return;
}
if( time == 0 ) if( time == 0 )
{ // get current X timestamp { // get current X timestamp
Window w = XCreateSimpleWindow( tqt_xdisplay(), tqt_xrootwin(), 0, 0, 1, 1, 0, 0, 0 ); Window w = XCreateSimpleWindow( display, tqt_xrootwin(), 0, 0, 1, 1, 0, 0, 0 );
XSelectInput( tqt_xdisplay(), w, PropertyChangeMask ); XSelectInput( tqt_xdisplay(), w, PropertyChangeMask );
unsigned char data[ 1 ]; unsigned char data[ 1 ];
XChangeProperty( tqt_xdisplay(), w, XA_ATOM, XA_ATOM, 8, PropModeAppend, data, 1 ); XChangeProperty( display, w, XA_ATOM, XA_ATOM, 8, PropModeAppend, data, 1 );
XEvent ev; XEvent ev;
XWindowEvent( tqt_xdisplay(), w, PropertyChangeMask, &ev ); XWindowEvent( display, w, PropertyChangeMask, &ev );
time = ev.xproperty.time; time = ev.xproperty.time;
XDestroyWindow( tqt_xdisplay(), w ); XDestroyWindow( display, w );
} }
if( GET_QT_X_USER_TIME() == 0 if( GET_QT_X_USER_TIME() == 0
|| NET::timestampCompare( time, GET_QT_X_USER_TIME() ) > 0 ) // check time > tqt_x_user_time || NET::timestampCompare( time, GET_QT_X_USER_TIME() ) > 0 ) // check time > tqt_x_user_time

Loading…
Cancel
Save