X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fx11.c;h=fe022c5bf3f8ddb1f50d9d8c7b776c4f7694894b;hb=0448c027347ae76facf5475a21884ca2476f035f;hp=2bbf76d558e01c1761c82734dd1acdb9ad3edef3;hpb=8b04d496646e102dd15710ba091e2f37cadcec5e;p=rocksndiamonds.git diff --git a/src/libgame/x11.c b/src/libgame/x11.c index 2bbf76d5..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); @@ -374,7 +389,7 @@ void X11FadeRectangle(Bitmap *bitmap_cross, int x, int y, int width, int height, if (draw_border_function != NULL) draw_border_function(); - X11CopyArea(backbuffer, window, x, y, width, height, 0, 0, BLIT_OPAQUE); + X11CopyArea(backbuffer, window, x, y, width, height, x, y, BLIT_OPAQUE); /* as we currently cannot use the fade delay, also do not use post delay */ }