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 )
{
#if defined Q_WS_X11
Display *display = qt_xdisplay();
if (!display) {
return;
}
if( time == 0 )
{ // 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 );
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;
XWindowEvent( qt_xdisplay(), w, PropertyChangeMask, &ev );
XWindowEvent( display, w, PropertyChangeMask, &ev );
time = ev.xproperty.time;
XDestroyWindow( qt_xdisplay(), w );
XDestroyWindow( display, w );
}
if( GET_QT_X_USER_TIME() == 0
|| NET::timestampCompare( time, GET_QT_X_USER_TIME() ) > 0 ) // check time > qt_x_user_time

Loading…
Cancel
Save