28#include "kxerrorhandler.h" 
   34int KXErrorHandler::pos = 0;
 
   35int KXErrorHandler::size = 0;
 
   38    :   user_handler1( NULL ),
 
   39        user_handler2( NULL ),
 
   40        old_handler( XSetErrorHandler( handler_wrapper )),
 
   41        first_request( XNextRequest( dpy )),
 
   49    :   user_handler1( handler ),
 
   50        user_handler2( NULL ),
 
   51        old_handler( XSetErrorHandler( handler_wrapper )),
 
   52        first_request( XNextRequest( dpy )),
 
   60    :   user_handler1( NULL ),
 
   61        user_handler2( handler ),
 
   62        old_handler( XSetErrorHandler( handler_wrapper )),
 
   63        first_request( XNextRequest( dpy )),
 
   70KXErrorHandler::~KXErrorHandler()
 
   72    XSetErrorHandler( old_handler );
 
   73    assert( 
this == handlers[ pos - 1 ] ); 
 
   77void KXErrorHandler::addHandler()
 
   84    handlers[ pos++ ] = 
this;
 
   90        XSync( display, False );
 
   94int KXErrorHandler::handler_wrapper( Display* dpy, XErrorEvent* e )
 
   97    int ret = handlers[ pos ]->handle( dpy, e );
 
  102int KXErrorHandler::handle( Display* dpy, XErrorEvent* e )
 
  109        if( user_handler1 != NULL && user_handler1( e->request_code, e->error_code, e->resourceid ))
 
  111        if( user_handler2 != NULL && user_handler2( dpy, e ) != 0 )
 
  118    return old_handler( dpy, e );
 
This class simplifies handling of X errors.
KXErrorHandler(Display *dpy=tqt_xdisplay())
Creates error handler that will set error flag after encountering any X error.
bool error(bool sync) const
This function returns true if the error flag is set (i.e.
static int timestampCompare(unsigned long time1, unsigned long time2)
Compares two X timestamps, taking into account wrapping and 64bit architectures.