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>
(cherry picked from commit 5842fb37df)
v3.5.13-sru
Alexander Golubev 8 years ago committed by Slávek Banko
parent b1a20aabbe
commit 0b91193d5d

@ -2204,16 +2204,20 @@ bool KApplication::x11EventFilter( XEvent *_event )
void KApplication::updateUserTimestamp( unsigned long time ) void KApplication::updateUserTimestamp( unsigned long time )
{ {
#if defined Q_WS_X11 #if defined Q_WS_X11
Display *display = qt_xdisplay();
if (!display) {
return;
}
if( time == 0 ) if( time == 0 )
{ // get current X timestamp { // get current X timestamp
Window w = XCreateSimpleWindow( qt_xdisplay(), qt_xrootwin(), 0, 0, 1, 1, 0, 0, 0 ); Window w = XCreateSimpleWindow( display, qt_xrootwin(), 0, 0, 1, 1, 0, 0, 0 );
XSelectInput( qt_xdisplay(), w, PropertyChangeMask ); XSelectInput( qt_xdisplay(), w, PropertyChangeMask );
unsigned char data[ 1 ]; unsigned char data[ 1 ];
XChangeProperty( qt_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( qt_xdisplay(), w, PropertyChangeMask, &ev ); XWindowEvent( display, w, PropertyChangeMask, &ev );
time = ev.xproperty.time; time = ev.xproperty.time;
XDestroyWindow( qt_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 > qt_x_user_time || NET::timestampCompare( time, GET_QT_X_USER_TIME() ) > 0 ) // check time > qt_x_user_time

Loading…
Cancel
Save