From 59c5ae639e1f3d756a5bff4feede19c4aeda31cf Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 23 Aug 2003 23:12:19 +0000 Subject: [PATCH] Fixed use of SDL with XInitThreads() --- configure.in | 2 +- src/video/Xext/README | 1 + src/video/Xext/Xxf86vm/XF86VMode.c | 12 ++++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 22609389d..ad466187e 100644 --- a/configure.in +++ b/configure.in @@ -553,7 +553,7 @@ CheckX11() AC_PATH_X AC_PATH_XTRA if test x$have_x = xyes; then - CFLAGS="$CFLAGS $X_CFLAGS -DENABLE_X11 -I$srcdir/include -I$srcdir/src/video" + CFLAGS="$CFLAGS $X_CFLAGS -DENABLE_X11 -DXTHREADS -I$srcdir/include -I$srcdir/src/video" if test x$ac_cv_func_shmat != xyes; then CFLAGS="$CFLAGS -DNO_SHARED_MEMORY" fi diff --git a/src/video/Xext/README b/src/video/Xext/README index 3717e5874..a16ea6844 100644 --- a/src/video/Xext/README +++ b/src/video/Xext/README @@ -7,3 +7,4 @@ You can't link static library code into shared libraries on non-x86 Linux platforms. Since these libraries haven't become standard yet, we'll just include them directly. +These sources are synchronized with XFree86 4.2.1 diff --git a/src/video/Xext/Xxf86vm/XF86VMode.c b/src/video/Xext/Xxf86vm/XF86VMode.c index aaf942001..4fb05b99b 100644 --- a/src/video/Xext/Xxf86vm/XF86VMode.c +++ b/src/video/Xext/Xxf86vm/XF86VMode.c @@ -344,6 +344,8 @@ SDL_NAME(XF86VidModeGetAllModeLines)(dpy, screen, modecount, modelinesPtr) else _XEatData(dpy, (rep.modecount) * sizeof(xXF86VidModeModeInfo)); Xfree(modelines); + UnlockDisplay(dpy); + SyncHandle(); return False; } mdinfptr = (SDL_NAME(XF86VidModeModeInfo) *) ( @@ -925,6 +927,8 @@ SDL_NAME(XF86VidModeGetMonitor)(dpy, screen, monitor) if (!(monitor->vendor = (char *)Xcalloc(rep.vendorLength + 1, 1))) { _XEatData(dpy, (rep.nhsync + rep.nvsync) * 4 + ((rep.vendorLength+3) & ~3) + ((rep.modelLength+3) & ~3)); + UnlockDisplay(dpy); + SyncHandle(); return False; } } else { @@ -936,6 +940,8 @@ SDL_NAME(XF86VidModeGetMonitor)(dpy, screen, monitor) ((rep.vendorLength+3) & ~3) + ((rep.modelLength+3) & ~3)); if (monitor->vendor) Xfree(monitor->vendor); + UnlockDisplay(dpy); + SyncHandle(); return False; } } else { @@ -949,6 +955,8 @@ SDL_NAME(XF86VidModeGetMonitor)(dpy, screen, monitor) Xfree(monitor->vendor); if (monitor->model) Xfree(monitor->model); + UnlockDisplay(dpy); + SyncHandle(); return False; } if (!(monitor->vsync = Xcalloc(rep.nvsync, sizeof(SDL_NAME(XF86VidModeSyncRange))))) { @@ -959,6 +967,8 @@ SDL_NAME(XF86VidModeGetMonitor)(dpy, screen, monitor) if (monitor->model) Xfree(monitor->model); Xfree(monitor->hsync); + UnlockDisplay(dpy); + SyncHandle(); return False; } for (i = 0; i < rep.nhsync; i++) { @@ -1096,6 +1106,8 @@ SDL_NAME(XF86VidModeGetDotClocks)(dpy, screen, if (!(dotclocks = (int*) Xcalloc(rep.clocks, sizeof(int)))) { _XEatData(dpy, (rep.clocks) * 4); Xfree(dotclocks); + UnlockDisplay(dpy); + SyncHandle(); return False; }