Small X11DRV patch
Lionel Ulmer
lionel.ulmer at free.fr
Sat Jul 13 13:24:05 CDT 2002
Hi all,
This patch will prevent Wine to crash with an X11 error when remote
displaying to a XFree 4.2 server with DGA / XVidMode enabled.
Changelog:
Test for X11 errors for DGA2 and XVidMode extensions
--
Lionel Ulmer - http://www.bbrox.org/
-------------- next part --------------
Index: dlls/x11drv/dga2.c
===================================================================
RCS file: /home/wine/wine/dlls/x11drv/dga2.c,v
retrieving revision 1.9
diff -u -r1.9 dga2.c
--- dlls/x11drv/dga2.c 31 May 2002 23:40:57 -0000 1.9
+++ dlls/x11drv/dga2.c 13 Jul 2002 18:22:42 -0000
@@ -58,9 +58,15 @@
info->dwWidth, info->dwHeight, info->dwBPP, info->wRefreshRate);
}
+static int DGA2ErrorHandler(Display *dpy, XErrorEvent *event, void *arg)
+{
+ return 1;
+}
+
void X11DRV_XF86DGA2_Init(void)
{
int nmodes, major, minor, i;
+ Bool ok;
if (xf86dga2_modes) return; /* already initialized? */
@@ -71,7 +77,10 @@
if (!TSXDGAQueryExtension(gdi_display, &dga_event, &dga_error)) return;
- if (!TSXDGAQueryVersion(gdi_display, &major, &minor)) return;
+ X11DRV_expect_error(gdi_display, DGA2ErrorHandler, NULL);
+ ok = TSXDGAQueryVersion(gdi_display, &major, &minor);
+ if (X11DRV_check_error()) ok = FALSE;
+ if (!ok) return;
if (major < 2) return; /* only bother with DGA 2+ */
Index: dlls/x11drv/xvidmode.c
===================================================================
RCS file: /home/wine/wine/dlls/x11drv/xvidmode.c,v
retrieving revision 1.14
diff -u -r1.14 xvidmode.c
--- dlls/x11drv/xvidmode.c 28 Mar 2002 22:22:06 -0000 1.14
+++ dlls/x11drv/xvidmode.c 13 Jul 2002 18:22:42 -0000
@@ -93,9 +93,15 @@
info->dwAlphaBitMask = 0;
}
+static int XVidModeErrorHandler(Display *dpy, XErrorEvent *event, void *arg)
+{
+ return 1;
+}
+
void X11DRV_XF86VM_Init(void)
{
int nmodes, i;
+ Bool ok;
if (xf86vm_major) return; /* already initialized? */
@@ -106,7 +112,10 @@
/* see if XVidMode is available */
if (!TSXF86VidModeQueryExtension(gdi_display, &xf86vm_event, &xf86vm_error)) return;
- if (!TSXF86VidModeQueryVersion(gdi_display, &xf86vm_major, &xf86vm_minor)) return;
+ X11DRV_expect_error(gdi_display, XVidModeErrorHandler, NULL);
+ ok = TSXF86VidModeQueryVersion(gdi_display, &xf86vm_major, &xf86vm_minor);
+ if (X11DRV_check_error()) ok = FALSE;
+ if (!ok) return;
#ifdef X_XF86VidModeSetGammaRamp
if (xf86vm_major > 2 || (xf86vm_major == 2 && xf86vm_minor >= 1))
More information about the wine-patches
mailing list