Load libXrender at run-time with dlopen (based on a patch by Huw
Davies).

diff --git a/configure b/configure
index 3b4402a..e5d6224 100755
--- a/configure
+++ b/configure
@@ -6887,83 +6887,13 @@
   cat >>confdefs.h <<_ACEOF
 #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-                  echo "$as_me:$LINENO: checking for XRenderQueryExtension in -lXrender" >&5
-echo $ECHO_N "checking for XRenderQueryExtension in -lXrender... $ECHO_C" >&6
-if test "${ac_cv_lib_Xrender_XRenderQueryExtension+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lXrender $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
-                 $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char XRenderQueryExtension ();
-#ifdef F77_DUMMY_MAIN
-#  ifdef __cplusplus
-     extern "C"
-#  endif
-   int F77_DUMMY_MAIN() { return 1; }
-#endif
-int
-main ()
-{
-XRenderQueryExtension ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-         { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_Xrender_XRenderQueryExtension=yes
-else
-  echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_lib_Xrender_XRenderQueryExtension=no
-fi
-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_Xrender_XRenderQueryExtension" >&5
-echo "${ECHO_T}$ac_cv_lib_Xrender_XRenderQueryExtension" >&6
-if test $ac_cv_lib_Xrender_XRenderQueryExtension = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBXRENDER 1
-_ACEOF
-
-                     X_PRE_LIBS="$X_PRE_LIBS -lXrender"
-
-fi
-
-
-else
-  { echo "$as_me:$LINENO: WARNING: XRender extension not found, Wine will be built without it" >&5
-echo "$as_me: WARNING: XRender extension not found, Wine will be built without it" >&2;}
 fi
 
 done
 
 
 
-
 fi
 
 done
diff --git a/configure.ac b/configure.ac
index 0f6002e..e565d68 100644
--- a/configure.ac
+++ b/configure.ac
@@ -225,19 +225,8 @@
             AC_MSG_WARN([[XVideo extension not found, Wine will be built without it]]),
             [#include <X11/Xlib.h>])
 
-        dnl *** Check for XRender extension
-        AC_CHECK_HEADERS(X11/extensions/Xrender.h,
-            [ dnl *** If X11/extensions/Xrender.h exists...
-                AC_CHECK_LIB(Xrender, XRenderQueryExtension,
-                  [ AC_DEFINE(HAVE_LIBXRENDER, 1, [Define if you have the XRender extension library])
-                     X_PRE_LIBS="$X_PRE_LIBS -lXrender"
-                  ],,
-                  $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
-                )
-            ],
-            AC_MSG_WARN([[XRender extension not found, Wine will be built without it]]),
-            [#include <X11/Xlib.h>])
-
+        dnl *** Check for XRender include file
+        AC_CHECK_HEADERS(X11/extensions/Xrender.h,,,[#include <X11/Xlib.h>])
       ]
     ) dnl *** End of X11/Xlib.h check
 
diff --git a/dlls/x11drv/xrender.c b/dlls/x11drv/xrender.c
index 327ad89..73efd73 100644
--- a/dlls/x11drv/xrender.c
+++ b/dlls/x11drv/xrender.c
@@ -18,24 +18,26 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 #include "config.h"
+#include "wine/port.h"
+
+#include <assert.h>
+#include <string.h>
+#include <stdlib.h>
 
 #include "winnt.h"
 #include "x11drv.h"
 #include "bitmap.h"
-#include "wine/debug.h"
 #include "region.h"
-#include <string.h>
-#include <stdlib.h>
 #include "wine/unicode.h"
-#include <assert.h>
+#include "wine/debug.h"
 
 BOOL X11DRV_XRender_Installed = FALSE;
 WINE_DEFAULT_DEBUG_CHANNEL(xrender);
 
-#ifdef HAVE_LIBXRENDER
+#ifdef HAVE_X11_EXTENSIONS_XRENDER_H
 
 #include "ts_xlib.h"
-#include "ts_xrender.h"
+#include <X11/extensions/Xrender.h>
 
 static XRenderPictFormat *screen_format; /* format of screen */
 static XRenderPictFormat *mono_format; /* format of mono bitmap */
@@ -80,6 +82,24 @@
 
 static int antialias = 1;
 
+static void *xrender_handle;
+
+#define MAKE_FUNCPTR(f) static typeof(f) * p##f;
+MAKE_FUNCPTR(XRenderAddGlyphs)
+MAKE_FUNCPTR(XRenderCompositeString8)
+MAKE_FUNCPTR(XRenderCompositeString16)
+MAKE_FUNCPTR(XRenderCompositeString32)
+MAKE_FUNCPTR(XRenderCreateGlyphSet)
+MAKE_FUNCPTR(XRenderCreatePicture)
+MAKE_FUNCPTR(XRenderFillRectangle)
+MAKE_FUNCPTR(XRenderFindFormat)
+MAKE_FUNCPTR(XRenderFindVisualFormat)
+MAKE_FUNCPTR(XRenderFreeGlyphSet)
+MAKE_FUNCPTR(XRenderFreePicture)
+MAKE_FUNCPTR(XRenderSetPictureClipRectangles)
+MAKE_FUNCPTR(XRenderQueryExtension)
+#undef MAKE_FUNCPTR
+
 /***********************************************************************
  *   X11DRV_XRender_Init
  *
@@ -91,15 +111,38 @@
     int error_base, event_base, i;
     XRenderPictFormat pf;
 
-    if(TSXRenderQueryExtension(gdi_display, &event_base, &error_base)) {
+    /* FIXME: should find correct soname at compile time */
+    if (!wine_dlopen("libX11.so", RTLD_NOW|RTLD_GLOBAL, NULL, 0)) return;
+    if (!wine_dlopen("libXext.so", RTLD_NOW|RTLD_GLOBAL, NULL, 0)) return;
+    xrender_handle = wine_dlopen("libXrender.so", RTLD_NOW, NULL, 0);
+    if(!xrender_handle) return;
+
+#define LOAD_FUNCPTR(f) if((p##f = wine_dlsym(xrender_handle, #f, NULL, 0)) == NULL) goto sym_not_found;
+LOAD_FUNCPTR(XRenderAddGlyphs)
+LOAD_FUNCPTR(XRenderCompositeString8)
+LOAD_FUNCPTR(XRenderCompositeString16)
+LOAD_FUNCPTR(XRenderCompositeString32)
+LOAD_FUNCPTR(XRenderCreateGlyphSet)
+LOAD_FUNCPTR(XRenderCreatePicture)
+LOAD_FUNCPTR(XRenderFillRectangle)
+LOAD_FUNCPTR(XRenderFindFormat)
+LOAD_FUNCPTR(XRenderFindVisualFormat)
+LOAD_FUNCPTR(XRenderFreeGlyphSet)
+LOAD_FUNCPTR(XRenderFreePicture)
+LOAD_FUNCPTR(XRenderSetPictureClipRectangles)
+LOAD_FUNCPTR(XRenderQueryExtension)
+#undef LOAD_FUNCPTR
+
+    wine_tsx11_lock();
+    if(pXRenderQueryExtension(gdi_display, &event_base, &error_base)) {
         X11DRV_XRender_Installed = TRUE;
 	TRACE("Xrender is up and running error_base = %d\n", error_base);
-	screen_format = TSXRenderFindVisualFormat(gdi_display, visual);
+	screen_format = pXRenderFindVisualFormat(gdi_display, visual);
 	pf.type = PictTypeDirect;
 	pf.depth = 1;
 	pf.direct.alpha = 0;
 	pf.direct.alphaMask = 1;
-	mono_format = TSXRenderFindFormat(gdi_display, PictFormatType |
+	mono_format = pXRenderFindFormat(gdi_display, PictFormatType |
 					  PictFormatDepth | PictFormatAlpha |
 					  PictFormatAlphaMask, &pf, 0);
 
@@ -116,7 +159,12 @@
     } else {
         TRACE("Xrender is not available on this server\n");
     }
+    wine_tsx11_unlock();
     return;
+
+sym_not_found:
+    wine_dlclose(xrender_handle, NULL, 0);
+    xrender_handle = NULL;
 }
 
 static BOOL fontcmp(LFANDSIZE *p1, LFANDSIZE *p2)
@@ -191,7 +239,9 @@
 
   if(best >= 0) {
     TRACE("freeing unused glyphset at cache %d\n", best);
-    TSXRenderFreeGlyphSet(gdi_display, glyphsetCache[best].glyphset);
+    wine_tsx11_lock();
+    pXRenderFreeGlyphSet(gdi_display, glyphsetCache[best].glyphset);
+    wine_tsx11_unlock();
     glyphsetCache[best].glyphset = 0;
     if(glyphsetCache[best].nrealized) { /* do we really want to do this? */
       HeapFree(GetProcessHeap(), 0, glyphsetCache[best].realized);
@@ -252,14 +302,16 @@
   pf.type = PictTypeDirect;
   pf.direct.alpha = 0;
 
-  ret->font_format = TSXRenderFindFormat(gdi_display,
+  wine_tsx11_lock();
+  ret->font_format = pXRenderFindFormat(gdi_display,
 					 PictFormatType |
 					 PictFormatDepth |
 					 PictFormatAlpha |
 					 PictFormatAlphaMask,
 					 &pf, 0);
 
-  ret->glyphset = TSXRenderCreateGlyphSet(gdi_display, ret->font_format);
+  ret->glyphset = pXRenderCreateGlyphSet(gdi_display, ret->font_format);
+  wine_tsx11_unlock();
   return ret;
 }
 
@@ -296,7 +348,8 @@
 void X11DRV_XRender_Finalize(void)
 {
     FIXME("Free cached glyphsets\n");
-    return;
+    if (xrender_handle) wine_dlclose(xrender_handle, NULL, 0);
+    xrender_handle = NULL;
 }
 
 
@@ -329,16 +382,18 @@
  */
 void X11DRV_XRender_DeleteDC(X11DRV_PDEVICE *physDev)
 {
+    wine_tsx11_lock();
     if(physDev->xrender->tile_pict)
-        TSXRenderFreePicture(gdi_display, physDev->xrender->tile_pict);
+        pXRenderFreePicture(gdi_display, physDev->xrender->tile_pict);
 
     if(physDev->xrender->tile_xpm)
-        TSXFreePixmap(gdi_display, physDev->xrender->tile_xpm);
+        XFreePixmap(gdi_display, physDev->xrender->tile_xpm);
 
     if(physDev->xrender->pict) {
 	TRACE("freeing pict = %lx dc = %p\n", physDev->xrender->pict, physDev->dc);
-        TSXRenderFreePicture(gdi_display, physDev->xrender->pict);
+        pXRenderFreePicture(gdi_display, physDev->xrender->pict);
     }
+    wine_tsx11_unlock();
 
     if(physDev->xrender->cacheEntry)
         dec_ref_cache(physDev->xrender->cacheEntry);
@@ -359,7 +414,9 @@
 {
     if(physDev->xrender->pict) {
         TRACE("freeing pict %08lx from dc %p\n", physDev->xrender->pict, physDev->dc);
-        TSXRenderFreePicture(gdi_display, physDev->xrender->pict);
+        wine_tsx11_lock();
+        pXRenderFreePicture(gdi_display, physDev->xrender->pict);
+        wine_tsx11_unlock();
     }
     physDev->xrender->pict = 0;
     return;
@@ -464,8 +521,10 @@
 	}
     }
     gid = glyph;
-    TSXRenderAddGlyphs(gdi_display, entry->glyphset, &gid, &gi, 1,
+    wine_tsx11_lock();
+    pXRenderAddGlyphs(gdi_display, entry->glyphset, &gid, &gi, 1,
 		       buf, buflen);
+    wine_tsx11_unlock();
     HeapFree(GetProcessHeap(), 0, buf);
     return TRUE;
 }
@@ -640,12 +699,13 @@
         XRenderPictureAttributes pa;
 	pa.subwindow_mode = IncludeInferiors;
 
-        physDev->xrender->pict =
-	  TSXRenderCreatePicture(gdi_display,
-				 physDev->drawable,
-				 (dc->bitsPerPixel == 1) ?
-				   mono_format : screen_format,
-				 CPSubwindowMode, &pa);
+        wine_tsx11_lock();
+        physDev->xrender->pict = pXRenderCreatePicture(gdi_display,
+                                                       physDev->drawable,
+                                                       (dc->bitsPerPixel == 1) ?
+                                                       mono_format : screen_format,
+                                                       CPSubwindowMode, &pa);
+        wine_tsx11_unlock();
 
 	TRACE("allocing pict = %lx dc = %p drawable = %08lx\n", physDev->xrender->pict, dc, physDev->drawable);
     } else {
@@ -689,8 +749,10 @@
         pXrect = NULL;
     }
 
-    TSXRenderSetPictureClipRectangles( gdi_display, physDev->xrender->pict,
-				       0, 0, pXrect, obj->rgn->numRects );
+    wine_tsx11_lock();
+    pXRenderSetPictureClipRectangles( gdi_display, physDev->xrender->pict,
+                                      0, 0, pXrect, obj->rgn->numRects );
+    wine_tsx11_unlock();
 
     if(pXrect)
         HeapFree( GetProcessHeap(), 0, pXrect );
@@ -714,15 +776,17 @@
         XRenderPictureAttributes pa;
 
       	XRenderPictFormat *format = (dc->bitsPerPixel == 1) ? mono_format : screen_format;
-	physDev->xrender->tile_xpm = TSXCreatePixmap(gdi_display,
+        wine_tsx11_lock();
+	physDev->xrender->tile_xpm = XCreatePixmap(gdi_display,
 						     physDev->drawable,
 						     1, 1,
 						     format->depth);
 	pa.repeat = True;
-	physDev->xrender->tile_pict = TSXRenderCreatePicture(gdi_display,
+	physDev->xrender->tile_pict = pXRenderCreatePicture(gdi_display,
 							     physDev->xrender->tile_xpm,
 							     format,
 							     CPRepeat, &pa);
+        wine_tsx11_unlock();
 	TRACE("Created pixmap of depth %d\n", format->depth);
 	/* init lastTextColor to something different from dc->textColor */
 	physDev->xrender->lastTextColor = ~dc->textColor;
@@ -743,9 +807,11 @@
 	    col.red = col.green = col.blue = 0;
 	    col.alpha = 0xffff;
 	}
-	TSXRenderFillRectangle(gdi_display, PictOpSrc,
+        wine_tsx11_lock();
+	pXRenderFillRectangle(gdi_display, PictOpSrc,
 			       physDev->xrender->tile_pict,
 			       &col, 0, 0, 1, 1);
+        wine_tsx11_unlock();
 	physDev->xrender->lastTextColor = dc->textColor;
     }
 
@@ -764,8 +830,10 @@
 
     TRACE("Writing %s at %d,%d\n", debugstr_wn(wstr,count), dc->DCOrgX + x,
 	  dc->DCOrgY + y);
+
+    wine_tsx11_lock();
     if(!lpDx)
-        TSXRenderCompositeString16(gdi_display, render_op, 
+        pXRenderCompositeString16(gdi_display, render_op, 
 				   physDev->xrender->tile_pict,
 				   physDev->xrender->pict,
 				   physDev->xrender->cacheEntry->font_format,
@@ -776,7 +844,7 @@
     else {
         INT offset = 0, xoff = 0, yoff = 0;
 	for(idx = 0; idx < count; idx++) {
-	    TSXRenderCompositeString16(gdi_display, render_op, 
+	    pXRenderCompositeString16(gdi_display, render_op, 
 				       physDev->xrender->tile_pict,
 				       physDev->xrender->pict,
 				       physDev->xrender->cacheEntry->font_format,
@@ -791,10 +859,10 @@
     }
 
     if(physDev->xrender->pict) {
-        TSXRenderFreePicture(gdi_display, physDev->xrender->pict);
+        pXRenderFreePicture(gdi_display, physDev->xrender->pict);
     }
     physDev->xrender->pict = 0;
-
+    wine_tsx11_unlock();
 
     if (flags & ETO_CLIPPED) 
         RestoreVisRgn16( hdc );
@@ -804,7 +872,7 @@
     return TRUE;
 }
 
-#else /* #ifdef HAVE_LIBXRENDER */
+#else /* HAVE_X11_EXTENSIONS_XRENDER_H */
 
 void X11DRV_XRender_Init(void)
 {
@@ -814,8 +882,6 @@
 
 void X11DRV_XRender_Finalize(void)
 {
-  assert(0);
-  return;
 }
 
 BOOL X11DRV_XRender_SelectFont(X11DRV_PDEVICE *physDev, HFONT hfont)
@@ -844,4 +910,4 @@
   return;
 }
 
-#endif
+#endif /* HAVE_X11_EXTENSIONS_XRENDER_H */
diff --git a/include/config.h.in b/include/config.h.in
index f67630d..a77688e 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -218,9 +218,6 @@
 /* Define to 1 if you have the `xpg4' library (-lxpg4). */
 #undef HAVE_LIBXPG4
 
-/* Define if you have the XRender extension library */
-#undef HAVE_LIBXRENDER
-
 /* Define if you have the X Shape extension */
 #undef HAVE_LIBXSHAPE
 
diff --git a/include/ts_xrender.h b/include/ts_xrender.h
deleted file mode 100644
index 9e9126b..0000000
--- a/include/ts_xrender.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Thread safe wrappers around Xrender calls.
- * Always include this file instead of <X11/Xrender.h>.
- * This file was generated automatically by tools/make_X11wrappers
- * DO NOT EDIT!
- */
-
-#ifndef __WINE_TS_XRENDER_H
-#define __WINE_TS_XRENDER_H
-
-#ifndef __WINE_CONFIG_H
-# error You must include config.h to use this header
-#endif
-
-#ifdef HAVE_LIBXRENDER
-
-#include <X11/Xlib.h>
-#include <X11/extensions/Xrender.h>
-
-extern void (*wine_tsx11_lock)(void);
-extern void (*wine_tsx11_unlock)(void);
-
-extern void TSXRenderAddGlyphs(Display*,GlyphSet,Glyph*,XGlyphInfo*,int,char*,int);
-extern void TSXRenderCompositeString8(Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,char*,int);
-extern void TSXRenderCompositeString16(Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,unsigned short*,int);
-extern void TSXRenderCompositeString32(Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,unsigned int*,int);
-extern GlyphSet TSXRenderCreateGlyphSet(Display*,XRenderPictFormat*);
-extern Picture TSXRenderCreatePicture(Display*,Drawable,XRenderPictFormat*,unsigned long,XRenderPictureAttributes*);
-extern void TSXRenderFillRectangle(Display*,int,Picture,XRenderColor*,int,int,unsigned int, unsigned int);
-extern XRenderPictFormat* TSXRenderFindFormat(Display*,unsigned long,XRenderPictFormat*,int);
-extern XRenderPictFormat* TSXRenderFindVisualFormat(Display*,Visual*);
-extern void TSXRenderFreeGlyphSet(Display*,GlyphSet);
-extern void TSXRenderFreePicture(Display*,Picture);
-extern void TSXRenderSetPictureClipRectangles(Display*,Picture,int,int,XRectangle*,int);
-extern Bool TSXRenderQueryExtension(Display*,int*,int*);
-
-#endif /* defined(HAVE_LIBXRENDER) */
-
-#endif /* __WINE_TS_XRENDER_H */
diff --git a/tools/make_X11wrappers b/tools/make_X11wrappers
index 87ae460..78d0ada 100755
--- a/tools/make_X11wrappers
+++ b/tools/make_X11wrappers
@@ -30,7 +30,7 @@
 $X11_include_dir = "/usr/X11/include";
 $outdir = "tsx11";
 $wantfile = "$outdir/X11_calls";
-@dolist = ("Xlib", "Xresource", "Xutil", "XShm", "xf86dga", "xf86dga2", "xf86vmode", "shape", "xvideo", "Xrender");
+@dolist = ("Xlib", "Xresource", "Xutil", "XShm", "xf86dga", "xf86dga2", "xf86vmode", "shape", "xvideo");
 
 # First read list of wanted function names.
 
@@ -102,12 +102,6 @@
 	$post_file = "#endif /* defined(HAVE_XVIDEO) */\n";
 	$inc_name = "Xvlib";
     }
-    if($name eq "Xrender")  {
-    	$x11_incl = "#include <X11/Xlib.h>\n";
-	$extensions_dir = "extensions/";
-	$pre_file = "#ifdef HAVE_LIBXRENDER\n";
-	$post_file = "#endif /* defined(HAVE_LIBXRENDER) */\n";
-    }
 
 
     print OUTH <<END;
@@ -338,72 +332,6 @@
 		"Display*a0,int a1,int a2,int a3",
 		"a0,a1,a2,a3"
 	);	
-    } elsif($name eq "Xrender") {
-    	output_fn("XRenderAddGlyphs","void",
-		"Display*,GlyphSet,Glyph*,XGlyphInfo*,int,char*,int",
-		"Display*a0,GlyphSet a1,Glyph*a2,XGlyphInfo*a3,int a4,char*a5,int a6",
-		"a0,a1,a2,a3,a4,a5,a6"
-	);
-    	output_fn("XRenderCompositeString8","void",
-		"Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,char*,int",
-		"Display*a0,int a1,Picture a2,Picture a3,XRenderPictFormat*a4,GlyphSet a5,int a6,int a7,int a8,int a9,char*a10,int a11",
-		"a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11"
-        );
-    	output_fn("XRenderCompositeString16","void",
-		"Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,unsigned short*,int",
-		"Display*a0,int a1,Picture a2,Picture a3,XRenderPictFormat*a4,GlyphSet a5,int a6,int a7,int a8,int a9,unsigned short*a10,int a11",
-		"a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11"
-        );
-    	output_fn("XRenderCompositeString32","void",
-		"Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,unsigned int*,int",
-		"Display*a0,int a1,Picture a2,Picture a3,XRenderPictFormat*a4,GlyphSet a5,int a6,int a7,int a8,int a9,unsigned int*a10,int a11",
-		"a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11"
-        );
-    	output_fn("XRenderCreateGlyphSet",GlyphSet,
-		"Display*,XRenderPictFormat*",
-		"Display*a0,XRenderPictFormat*a1",
-		"a0,a1"
-        );
-    	output_fn("XRenderCreatePicture",Picture,
-		"Display*,Drawable,XRenderPictFormat*,unsigned long,XRenderPictureAttributes*",
-		"Display*a0,Drawable a1,XRenderPictFormat*a2,unsigned long a3,XRenderPictureAttributes*a4",
-		"a0,a1,a2,a3,a4"
-        );
-    	output_fn("XRenderFillRectangle","void",
-		"Display*,int,Picture,XRenderColor*,int,int,unsigned int, unsigned int",
-		"Display*a0,int a1,Picture a2,XRenderColor*a3,int a4,int a5,unsigned int a6,unsigned int a7",
-		"a0,a1,a2,a3,a4,a5,a6,a7"
-        );
-    	output_fn("XRenderFindFormat","XRenderPictFormat*",
-		"Display*,unsigned long,XRenderPictFormat*,int",
-		"Display*a0,unsigned long a1,XRenderPictFormat*a2,int a3",
-		"a0,a1,a2,a3"
-        );
-    	output_fn("XRenderFindVisualFormat","XRenderPictFormat*",
-		"Display*,Visual*",
-		"Display*a0,Visual*a1",
-		"a0,a1"
-        );
-    	output_fn("XRenderFreeGlyphSet","void",
-		"Display*,GlyphSet",
-		"Display*a0,GlyphSet a1",
-		"a0,a1"
-        );
-    	output_fn("XRenderFreePicture","void",
-		"Display*,Picture",
-		"Display*a0,Picture a1",
-		"a0,a1"
-        );
-    	output_fn("XRenderSetPictureClipRectangles","void",
-		"Display*,Picture,int,int,XRectangle*,int",
-		"Display*a0,Picture a1,int a2,int a3,XRectangle* a4,int a5",
-		"a0,a1,a2,a3,a4,a5"
-        );
-    	output_fn("XRenderQueryExtension",Bool,
-		"Display*,int*,int*",
-		"Display*a0,int*a1,int*a2",
-		"a0,a1,a2"
-        );
 	
     } else {
 	open(IN, 
diff --git a/tsx11/Makefile.in b/tsx11/Makefile.in
index 44299e2..ba23db2 100644
--- a/tsx11/Makefile.in
+++ b/tsx11/Makefile.in
@@ -16,7 +16,6 @@
 	ts_xf86vmode.c \
 	ts_xshm.c \
 	ts_xlib.c \
-	ts_xrender.c \
 	ts_xresource.c \
 	ts_xvideo.c \
 	ts_xutil.c \
diff --git a/tsx11/X11_calls b/tsx11/X11_calls
index 4df6dfd..00aaeb7 100644
--- a/tsx11/X11_calls
+++ b/tsx11/X11_calls
@@ -250,16 +250,3 @@
 XvPutImage
 XvShmPutImage
 XvShmCreateImage
-XRenderAddGlyphs
-XRenderCompositeString16
-XRenderCompositeString32
-XRenderCompositeString8
-XRenderCreateGlyphSet
-XRenderCreatePicture
-XRenderFillRectangle
-XRenderFindFormat
-XRenderFindVisualFormat
-XRenderFreeGlyphSet
-XRenderFreePicture
-XRenderQueryExtension
-XRenderSetPictureClipRectangles
diff --git a/tsx11/ts_xrender.c b/tsx11/ts_xrender.c
deleted file mode 100644
index 765ee7f..0000000
--- a/tsx11/ts_xrender.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Thread safe wrappers around Xrender calls.
- * This file was generated automatically by tools/make_X11wrappers
- * DO NOT EDIT!
- */
-
-#include "config.h"
-
-#ifdef HAVE_LIBXRENDER
-
-#include <X11/Xlib.h>
-#include <X11/extensions/Xrender.h>
-
-#include "ts_xrender.h"
-
-
-void TSXRenderAddGlyphs(Display*a0,GlyphSet a1,Glyph*a2,XGlyphInfo*a3,int a4,char*a5,int a6)
-{
-  wine_tsx11_lock();
-  XRenderAddGlyphs(a0,a1,a2,a3,a4,a5,a6);
-  wine_tsx11_unlock();
-}
-
-void TSXRenderCompositeString8(Display*a0,int a1,Picture a2,Picture a3,XRenderPictFormat*a4,GlyphSet a5,int a6,int a7,int a8,int a9,char*a10,int a11)
-{
-  wine_tsx11_lock();
-  XRenderCompositeString8(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11);
-  wine_tsx11_unlock();
-}
-
-void TSXRenderCompositeString16(Display*a0,int a1,Picture a2,Picture a3,XRenderPictFormat*a4,GlyphSet a5,int a6,int a7,int a8,int a9,unsigned short*a10,int a11)
-{
-  wine_tsx11_lock();
-  XRenderCompositeString16(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11);
-  wine_tsx11_unlock();
-}
-
-void TSXRenderCompositeString32(Display*a0,int a1,Picture a2,Picture a3,XRenderPictFormat*a4,GlyphSet a5,int a6,int a7,int a8,int a9,unsigned int*a10,int a11)
-{
-  wine_tsx11_lock();
-  XRenderCompositeString32(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11);
-  wine_tsx11_unlock();
-}
-
-GlyphSet TSXRenderCreateGlyphSet(Display*a0,XRenderPictFormat*a1)
-{
-  GlyphSet r;
-  wine_tsx11_lock();
-  r = XRenderCreateGlyphSet(a0,a1);
-  wine_tsx11_unlock();
-  return r;
-}
-
-Picture TSXRenderCreatePicture(Display*a0,Drawable a1,XRenderPictFormat*a2,unsigned long a3,XRenderPictureAttributes*a4)
-{
-  Picture r;
-  wine_tsx11_lock();
-  r = XRenderCreatePicture(a0,a1,a2,a3,a4);
-  wine_tsx11_unlock();
-  return r;
-}
-
-void TSXRenderFillRectangle(Display*a0,int a1,Picture a2,XRenderColor*a3,int a4,int a5,unsigned int a6,unsigned int a7)
-{
-  wine_tsx11_lock();
-  XRenderFillRectangle(a0,a1,a2,a3,a4,a5,a6,a7);
-  wine_tsx11_unlock();
-}
-
-XRenderPictFormat* TSXRenderFindFormat(Display*a0,unsigned long a1,XRenderPictFormat*a2,int a3)
-{
-  XRenderPictFormat* r;
-  wine_tsx11_lock();
-  r = XRenderFindFormat(a0,a1,a2,a3);
-  wine_tsx11_unlock();
-  return r;
-}
-
-XRenderPictFormat* TSXRenderFindVisualFormat(Display*a0,Visual*a1)
-{
-  XRenderPictFormat* r;
-  wine_tsx11_lock();
-  r = XRenderFindVisualFormat(a0,a1);
-  wine_tsx11_unlock();
-  return r;
-}
-
-void TSXRenderFreeGlyphSet(Display*a0,GlyphSet a1)
-{
-  wine_tsx11_lock();
-  XRenderFreeGlyphSet(a0,a1);
-  wine_tsx11_unlock();
-}
-
-void TSXRenderFreePicture(Display*a0,Picture a1)
-{
-  wine_tsx11_lock();
-  XRenderFreePicture(a0,a1);
-  wine_tsx11_unlock();
-}
-
-void TSXRenderSetPictureClipRectangles(Display*a0,Picture a1,int a2,int a3,XRectangle* a4,int a5)
-{
-  wine_tsx11_lock();
-  XRenderSetPictureClipRectangles(a0,a1,a2,a3,a4,a5);
-  wine_tsx11_unlock();
-}
-
-Bool TSXRenderQueryExtension(Display*a0,int*a1,int*a2)
-{
-  Bool r;
-  wine_tsx11_lock();
-  r = XRenderQueryExtension(a0,a1,a2);
-  wine_tsx11_unlock();
-  return r;
-}
-
-#endif /* defined(HAVE_LIBXRENDER) */
-