projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20080802-1-src
[rocksndiamonds.git]
/
src
/
libgame
/
x11.c
diff --git
a/src/libgame/x11.c
b/src/libgame/x11.c
index 2bbf76d558e01c1761c82734dd1acdb9ad3edef3..fe022c5bf3f8ddb1f50d9d8c7b776c4f7694894b 100644
(file)
--- a/
src/libgame/x11.c
+++ b/
src/libgame/x11.c
@@
-22,6
+22,13
@@
static void X11InitDisplay();
static DrawWindow *X11InitWindow();
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 */
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));
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);
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();
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 */
}
/* as we currently cannot use the fade delay, also do not use post delay */
}