rnd_jue-3.2.5
[rocksndiamonds.git] / src / libgame / x11.c
index 2bbf76d558e01c1761c82734dd1acdb9ad3edef3..fe022c5bf3f8ddb1f50d9d8c7b776c4f7694894b 100644 (file)
 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 */
 }