X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fx11.c;h=fe022c5bf3f8ddb1f50d9d8c7b776c4f7694894b;hb=9991027ba0e61f105a15d517461614fce184ba48;hp=12f4e1e4268cabf8e8b39591d442bc67905d3f99;hpb=1ca582ff344bd825e03229636cee6d006e19251f;p=rocksndiamonds.git diff --git a/src/libgame/x11.c b/src/libgame/x11.c index 12f4e1e4..fe022c5b 100644 --- a/src/libgame/x11.c +++ b/src/libgame/x11.c @@ -22,6 +22,13 @@ static void X11InitDisplay(); static DrawWindow *X11InitWindow(); +static int X11DebugErrorHandler(Display *display, XErrorEvent *event) +{ + int x = 0; + + return 1 / x; /* !!! crash program to give backtrace in gdb !!! */ +} + void X11InitVideoDisplay(void) { /* initialize X11 video */ @@ -55,6 +62,14 @@ static void X11InitDisplay() Error(ERR_EXIT, "cannot connect to X server %s", XDisplayName(options.display_name)); + if (options.debug_x11_sync) + { + Error(ERR_WARN, "running in X11 synchronous mode (debug only)"); + + XSynchronize(display, True); + XSetErrorHandler(X11DebugErrorHandler); + } + screen = DefaultScreen(display); visual = DefaultVisual(display, screen); depth = DefaultDepth(display, screen);