Buggy Xrender avoidance
Huw D M Davies
h.davies1 at physics.ox.ac.uk
Thu May 2 18:53:30 CDT 2002
CodeWeavers
Detect and warn about buggy versions of libXrender
--
Huw Davies
huw at codeweavers.com
-------------- next part --------------
Index: dlls/x11drv/xrender.c
===================================================================
RCS file: /home/wine/wine/dlls/x11drv/xrender.c,v
retrieving revision 1.6
diff -u -r1.6 xrender.c
--- dlls/x11drv/xrender.c 3 Apr 2002 22:08:27 -0000 1.6
+++ dlls/x11drv/xrender.c 2 May 2002 08:27:58 -0000
@@ -95,6 +95,14 @@
X11DRV_XRender_Installed = TRUE;
TRACE("Xrender is up and running error_base = %d\n", error_base);
screen_format = TSXRenderFindVisualFormat(gdi_display, visual);
+ if(!screen_format) { /* This fails in buggy versions of libXrender.so */
+ WINE_MESSAGE(
+ "Wine has detected that you probably have a buggy version\n"
+ "of libXrender.so . Because of this client side font rendering\n"
+ "will be disabled. Please upgrade this library.\n");
+ X11DRV_XRender_Installed = FALSE;
+ return;
+ };
pf.type = PictTypeDirect;
pf.depth = 1;
pf.direct.alpha = 0;
@@ -102,7 +110,11 @@
mono_format = TSXRenderFindFormat(gdi_display, PictFormatType |
PictFormatDepth | PictFormatAlpha |
PictFormatAlphaMask, &pf, 0);
-
+ if(!mono_format) {
+ ERR("mono_format == NULL?\n");
+ X11DRV_XRender_Installed = FALSE;
+ return;
+ }
glyphsetCache = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
sizeof(*glyphsetCache) * INIT_CACHE_SIZE);
More information about the wine-patches
mailing list