[Commit] Xrender ChangeLog,1.1,1.2 Composite.c,1.3,1.4 Cursor.c,1.4,1.5 FillRect.c,1.3,1.4 FillRects.c,1.3,1.4 Filter.c,1.2,1.3 Glyph.c,1.13,1.14 Makefile.am,1.5,1.6 Picture.c,1.10,1.11 Trap.c,1.4,1.5 Tri.c,1.4,1.5 Xrender.c,1.15,1.16 Xrenderint.h,1.8,1.9 configure.ac,1.5,1.6 xrender.pc.in,1.5,1.6 extutil.h,1.2,NONE

Noah Levitt commit@keithp.com
Wed, 23 Apr 2003 20:29:17 -0700


Committed by: nlevitt

Update of /local/src/CVS/Xrender
In directory home.keithp.com:/tmp/cvs-serv28728

Modified Files:
	ChangeLog Composite.c Cursor.c FillRect.c FillRects.c Filter.c 
	Glyph.c Makefile.am Picture.c Trap.c Tri.c Xrender.c 
	Xrenderint.h configure.ac xrender.pc.in 
Removed Files:
	extutil.h 
Log Message:
Get rid of libXext dependency.


Index: ChangeLog
===================================================================
RCS file: /local/src/CVS/Xrender/ChangeLog,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- ChangeLog	21 Apr 2003 17:36:39 -0000	1.1
+++ ChangeLog	24 Apr 2003 03:29:14 -0000	1.2
@@ -1,3 +1,7 @@
+2003-04-21	Noah Levitt <nlevitt@columbia.edu>
+
+	+ Get rid of libXext dependency.
+
 2003-04-21	Keith Packard <keithp@keithp.com>
 
 	+ Add ChangeLog and INSTALL

Index: Composite.c
===================================================================
RCS file: /local/src/CVS/Xrender/Composite.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- Composite.c	21 Apr 2003 17:22:42 -0000	1.3
+++ Composite.c	24 Apr 2003 03:29:15 -0000	1.4
@@ -40,7 +40,7 @@
 		  unsigned int	width,
 		  unsigned int	height)
 {
-    XExtDisplayInfo         *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo         *info = XRenderFindDisplay (dpy);
     xRenderCompositeReq	    *req;
 
     RenderSimpleCheckExtension (dpy, info);

Index: Cursor.c
===================================================================
RCS file: /local/src/CVS/Xrender/Cursor.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- Cursor.c	21 Apr 2003 17:22:42 -0000	1.4
+++ Cursor.c	24 Apr 2003 03:29:15 -0000	1.5
@@ -30,7 +30,7 @@
 		     unsigned int   x,
 		     unsigned int   y)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     Cursor			cid;
     xRenderCreateCursorReq	*req;
 
@@ -54,7 +54,7 @@
 			 int		ncursor,
 			 XAnimCursor	*cursors)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     Cursor			cid;
     xRenderCreateAnimCursorReq	*req;
     long			len;

Index: FillRect.c
===================================================================
RCS file: /local/src/CVS/Xrender/FillRect.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- FillRect.c	21 Apr 2003 06:49:00 -0000	1.3
+++ FillRect.c	24 Apr 2003 03:29:15 -0000	1.4
@@ -39,7 +39,7 @@
 		      unsigned int  width,
 		      unsigned int  height)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     xRectangle			*rect;
     xRenderFillRectanglesReq	*req;
 #ifdef MUSTCOPY

Index: FillRects.c
===================================================================
RCS file: /local/src/CVS/Xrender/FillRects.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- FillRects.c	21 Apr 2003 17:22:42 -0000	1.3
+++ FillRects.c	24 Apr 2003 03:29:15 -0000	1.4
@@ -37,7 +37,7 @@
 		       _Xconst XRectangle   *rectangles,
 		       int		    n_rects)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     xRenderFillRectanglesReq	*req;
     long			len;
     int				n;

Index: Filter.c
===================================================================
RCS file: /local/src/CVS/Xrender/Filter.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- Filter.c	21 Apr 2003 17:22:42 -0000	1.2
+++ Filter.c	24 Apr 2003 03:29:15 -0000	1.3
@@ -27,7 +27,7 @@
 XFilters *
 XRenderQueryFilters (Display *dpy, Drawable drawable)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     XRenderInfo			*xri;
     xRenderQueryFiltersReq	*req;
     xRenderQueryFiltersReply	rep;
@@ -37,7 +37,7 @@
     int				i;
     long			nbytes, nbytesAlias, nbytesName;
     
-    if (!XextHasExtension (info))
+    if (!RenderHasExtension (info))
 	return 0;
 
     if (!XRenderQueryFormats (dpy))
@@ -131,7 +131,7 @@
 			  XFixed    *params,
 			  int	    nparams)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     xRenderSetPictureFilterReq	*req;
     int				nbytes = strlen (filter);
 

Index: Glyph.c
===================================================================
RCS file: /local/src/CVS/Xrender/Glyph.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- Glyph.c	21 Apr 2003 17:22:42 -0000	1.13
+++ Glyph.c	24 Apr 2003 03:29:15 -0000	1.14
@@ -28,7 +28,7 @@
 GlyphSet
 XRenderCreateGlyphSet (Display *dpy, _Xconst XRenderPictFormat *format)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     GlyphSet			gsid;
     xRenderCreateGlyphSetReq	*req;
 
@@ -47,7 +47,7 @@
 GlyphSet
 XRenderReferenceGlyphSet (Display *dpy, GlyphSet existing)
 {
-    XExtDisplayInfo             *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo             *info = XRenderFindDisplay (dpy);
     GlyphSet                    gsid;
     xRenderReferenceGlyphSetReq	*req;
 
@@ -66,7 +66,7 @@
 void
 XRenderFreeGlyphSet (Display *dpy, GlyphSet glyphset)
 {
-    XExtDisplayInfo         *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo         *info = XRenderFindDisplay (dpy);
     xRenderFreeGlyphSetReq  *req;
 
     RenderSimpleCheckExtension (dpy, info);
@@ -88,7 +88,7 @@
 		  _Xconst char		*images,
 		  int		nbyte_images)
 {
-    XExtDisplayInfo         *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo         *info = XRenderFindDisplay (dpy);
     xRenderAddGlyphsReq	    *req;
     long		    len;
 
@@ -116,7 +116,7 @@
 		   _Xconst Glyph     *gids,
 		   int       nglyphs)
 {
-    XExtDisplayInfo         *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo         *info = XRenderFindDisplay (dpy);
     xRenderFreeGlyphsReq    *req;
     long                    len;
 
@@ -148,7 +148,7 @@
 			 _Xconst char	    *string,
 			 int		    nchar)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     xRenderCompositeGlyphs8Req	*req;
     long			len;
     xGlyphElt			*elt;
@@ -233,7 +233,7 @@
 			  _Xconst unsigned short    *string,
 			  int		    nchar)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     xRenderCompositeGlyphs8Req	*req;
     long			len;
     xGlyphElt			*elt;
@@ -313,7 +313,7 @@
 			  _Xconst unsigned int	    *string,
 			  int		    nchar)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     xRenderCompositeGlyphs8Req	*req;
     long			len;
     xGlyphElt			*elt;
@@ -392,7 +392,7 @@
 		       _Xconst XGlyphElt8	    *elts,
 		       int			    nelt)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     xRenderCompositeGlyphs8Req	*req;
     GlyphSet			glyphset;
     long			len;
@@ -505,7 +505,7 @@
 			_Xconst XGlyphElt16	    *elts,
 			int			    nelt)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     xRenderCompositeGlyphs16Req	*req;
     GlyphSet			glyphset;
     long			len;
@@ -616,7 +616,7 @@
 			_Xconst XGlyphElt32	    *elts,
 			int			    nelt)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     xRenderCompositeGlyphs32Req	*req;
     GlyphSet			glyphset;
     long			len;

Index: Makefile.am
===================================================================
RCS file: /local/src/CVS/Xrender/Makefile.am,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- Makefile.am	22 Apr 2003 04:46:24 -0000	1.5
+++ Makefile.am	24 Apr 2003 03:29:15 -0000	1.6
@@ -42,7 +42,7 @@
                         extutil.h \
                         region.h
 
-libXrender_la_LIBADD = @X_LIBS@ -lXext -lX11
+libXrender_la_LIBADD = @X_LIBS@ -lX11
 
 # -version-number requires libtool >= 1.5
 libXrender_la_LDFLAGS = -version-number 1:2:1

Index: Picture.c
===================================================================
RCS file: /local/src/CVS/Xrender/Picture.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- Picture.c	21 Apr 2003 17:22:42 -0000	1.10
+++ Picture.c	24 Apr 2003 03:29:15 -0000	1.11
@@ -76,7 +76,7 @@
 		      unsigned long		valuemask,
 		      _Xconst XRenderPictureAttributes	*attributes)
 {
-    XExtDisplayInfo	    *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo	    *info = XRenderFindDisplay (dpy);
     Picture		    pid;
     xRenderCreatePictureReq *req;
 
@@ -104,7 +104,7 @@
 		      unsigned long             valuemask,
 		      _Xconst XRenderPictureAttributes  *attributes)
 {
-    XExtDisplayInfo	    *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo	    *info = XRenderFindDisplay (dpy);
     xRenderChangePictureReq *req;
     
     RenderSimpleCheckExtension (dpy, info);
@@ -124,7 +124,7 @@
 
 static void
 _XRenderSetPictureClipRectangles (Display	    *dpy,
-				  XExtDisplayInfo   *info,
+				  XRenderExtDisplayInfo   *info,
 				  Picture	    picture,
 				  int		    xOrigin,
 				  int		    yOrigin,
@@ -154,7 +154,7 @@
 				 _Xconst XRectangle	*rects,
 				 int		n)
 {
-    XExtDisplayInfo	    *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo	    *info = XRenderFindDisplay (dpy);
     
     RenderSimpleCheckExtension (dpy, info);
     LockDisplay(dpy);
@@ -169,7 +169,7 @@
 			     Picture	    picture,
 			     Region	    r)
 {
-    XExtDisplayInfo *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo *info = XRenderFindDisplay (dpy);
     int		    i;
     XRectangle	    *xr, *pr;
     BOX		    *pb;
@@ -200,7 +200,7 @@
 			    Picture	picture,
 			    XTransform	*transform)
 {
-    XExtDisplayInfo		    *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		    *info = XRenderFindDisplay (dpy);
     xRenderSetPictureTransformReq   *req;
     
     RenderSimpleCheckExtension (dpy, info);
@@ -227,7 +227,7 @@
 XRenderFreePicture (Display                   *dpy,
 		    Picture                   picture)
 {
-    XExtDisplayInfo         *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo         *info = XRenderFindDisplay (dpy);
     xRenderFreePictureReq   *req;
 
     RenderSimpleCheckExtension (dpy, info);

Index: Trap.c
===================================================================
RCS file: /local/src/CVS/Xrender/Trap.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- Trap.c	21 Apr 2003 17:22:42 -0000	1.4
+++ Trap.c	24 Apr 2003 03:29:15 -0000	1.5
@@ -35,7 +35,7 @@
 			    _Xconst XTrapezoid	*traps,
 			    int			ntrap)
 {
-    XExtDisplayInfo         *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo         *info = XRenderFindDisplay (dpy);
     xRenderTrapezoidsReq    *req;
     int			    n;
     long    		    len;

Index: Tri.c
===================================================================
RCS file: /local/src/CVS/Xrender/Tri.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- Tri.c	21 Apr 2003 17:22:42 -0000	1.4
+++ Tri.c	24 Apr 2003 03:29:15 -0000	1.5
@@ -35,7 +35,7 @@
 			   _Xconst XTriangle	*triangles,
 			   int			ntriangle)
 {
-    XExtDisplayInfo         *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo         *info = XRenderFindDisplay (dpy);
     xRenderTrianglesReq	    *req;
     int			    n;
     long    		    len;
@@ -80,7 +80,7 @@
 			  _Xconst XPointFixed	*points,
 			  int			npoint)
 {
-    XExtDisplayInfo         *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo         *info = XRenderFindDisplay (dpy);
     xRenderTriStripReq	    *req;
     int			    n;
     long    		    len;
@@ -125,7 +125,7 @@
 			_Xconst XPointFixed	*points,
 			int			npoint)
 {
-    XExtDisplayInfo         *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo         *info = XRenderFindDisplay (dpy);
     _Xconst XPointFixed	    *first = points;
     xPointFixed		    *p;
     xRenderTriFanReq	    *req;

Index: Xrender.c
===================================================================
RCS file: /local/src/CVS/Xrender/Xrender.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- Xrender.c	21 Apr 2003 06:44:47 -0000	1.15
+++ Xrender.c	24 Apr 2003 03:29:15 -0000	1.16
@@ -25,59 +25,168 @@
 
 #include "Xrenderint.h"
 
-XExtensionInfo XRenderExtensionInfo;
+XRenderExtInfo XRenderExtensionInfo;
 char XRenderExtensionName[] = RENDER_NAME;
 
-static int XRenderCloseDisplay(Display *dpy, XExtCodes *codes);
+static int XRenderCloseDisplay (Display *dpy, XExtCodes *codes);
 
-static /* const */ XExtensionHooks render_extension_hooks = {
-    NULL,				/* create_gc */
-    NULL,				/* copy_gc */
-    NULL,				/* flush_gc */
-    NULL,				/* free_gc */
-    NULL,				/* create_font */
-    NULL,				/* free_font */
-    XRenderCloseDisplay,		/* close_display */
-    NULL,				/* wire_to_event */
-    NULL,				/* event_to_wire */
-    NULL,				/* error */
-    NULL,				/* error_string */
-};
+/*
+ * XRenderExtFindDisplay - look for a display in this extension; keeps a
+ * cache of the most-recently used for efficiency. (Replaces
+ * XextFindDisplay.)
+ */
+static XRenderExtDisplayInfo *
+XRenderExtFindDisplay (XRenderExtInfo *extinfo, 
+                       Display        *dpy)
+{
+    XRenderExtDisplayInfo *dpyinfo;
 
-XExtDisplayInfo *
+    /*
+     * see if this was the most recently accessed display
+     */
+    if ((dpyinfo = extinfo->cur) && dpyinfo->display == dpy) 
+        return dpyinfo;
+
+    /*
+     * look for display in list
+     */
+    _XLockMutex(_Xglobal_lock);
+    for (dpyinfo = extinfo->head; dpyinfo; dpyinfo = dpyinfo->next) {
+        if (dpyinfo->display == dpy) {
+            extinfo->cur = dpyinfo;     /* cache most recently used */
+            _XUnlockMutex(_Xglobal_lock);
+            return dpyinfo;
+        }
+    }
+    _XUnlockMutex(_Xglobal_lock);
+
+    return NULL;
+}
+
+/*
+ * XRenderExtAddDisplay - add a display to this extension. (Replaces
+ * XextAddDisplay)
+ */
+static XRenderExtDisplayInfo *
+XRenderExtAddDisplay (XRenderExtInfo *extinfo,
+                      Display        *dpy,
+                      char           *ext_name)
+{
+    XRenderExtDisplayInfo *dpyinfo;
+
+    dpyinfo = (XRenderExtDisplayInfo *) Xmalloc (sizeof (XRenderExtDisplayInfo));
+    if (!dpyinfo) return NULL;
+    dpyinfo->display = dpy;
+    dpyinfo->data = NULL;
+    dpyinfo->codes = XInitExtension (dpy, ext_name);
+
+    /*
+     * if the server has the extension, then we can initialize the 
+     * appropriate function vectors
+     */
+    if (dpyinfo->codes) {
+        XESetCloseDisplay (dpy, dpyinfo->codes->extension, 
+                           XRenderCloseDisplay);
+    } else {
+	/* The server doesn't have this extension.
+	 * Use a private Xlib-internal extension to hang the close_display
+	 * hook on so that the "cache" (extinfo->cur) is properly cleaned.
+	 * (XBUG 7955)
+	 */
+	XExtCodes *codes = XAddExtension(dpy);
+	if (!codes) {
+	    XFree(dpyinfo);
+	    return NULL;
+	}
+        XESetCloseDisplay (dpy, codes->extension, XRenderCloseDisplay);
+    }
+
+    /*
+     * now, chain it onto the list
+     */
+    _XLockMutex(_Xglobal_lock);
+    dpyinfo->next = extinfo->head;
+    extinfo->head = dpyinfo;
+    extinfo->cur = dpyinfo;
+    extinfo->ndisplays++;
+    _XUnlockMutex(_Xglobal_lock);
+    return dpyinfo;
+}
+
+
+/*
+ * XRenderExtRemoveDisplay - remove the indicated display from the
+ * extension object. (Replaces XextRemoveDisplay.)
+ */
+static int 
+XRenderExtRemoveDisplay (XRenderExtInfo *extinfo, Display *dpy)
+{
+    XRenderExtDisplayInfo *dpyinfo, *prev;
+
+    /*
+     * locate this display and its back link so that it can be removed
+     */
+    _XLockMutex(_Xglobal_lock);
+    prev = NULL;
+    for (dpyinfo = extinfo->head; dpyinfo; dpyinfo = dpyinfo->next) {
+	if (dpyinfo->display == dpy) break;
+	prev = dpyinfo;
+    }
+    if (!dpyinfo) {
+	_XUnlockMutex(_Xglobal_lock);
+	return 0;		/* hmm, actually an error */
+    }
+
+    /*
+     * remove the display from the list; handles going to zero
+     */
+    if (prev)
+	prev->next = dpyinfo->next;
+    else
+	extinfo->head = dpyinfo->next;
+
+    extinfo->ndisplays--;
+    if (dpyinfo == extinfo->cur) extinfo->cur = NULL;  /* flush cache */
+    _XUnlockMutex(_Xglobal_lock);
+
+    Xfree ((char *) dpyinfo);
+    return 1;
+}
+
+
+
+XRenderExtDisplayInfo *
 XRenderFindDisplay (Display *dpy)
 {
-    XExtDisplayInfo *dpyinfo;
+    XRenderExtDisplayInfo *dpyinfo;
 
-    dpyinfo = XextFindDisplay (&XRenderExtensionInfo, dpy);
+    dpyinfo = XRenderExtFindDisplay (&XRenderExtensionInfo, dpy);
     if (!dpyinfo)
-	dpyinfo = XextAddDisplay (&XRenderExtensionInfo, dpy, 
-				  XRenderExtensionName,
-				  &render_extension_hooks,
-				  0, 0);
+	dpyinfo = XRenderExtAddDisplay (&XRenderExtensionInfo, dpy, 
+                                        XRenderExtensionName);
     return dpyinfo;
 }
 
 static int
 XRenderCloseDisplay (Display *dpy, XExtCodes *codes)
 {
-    XExtDisplayInfo *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo *info = XRenderFindDisplay (dpy);
     if (info->data) XFree (info->data);
     
-    return XextRemoveDisplay (&XRenderExtensionInfo, dpy);
+    return XRenderExtRemoveDisplay (&XRenderExtensionInfo, dpy);
 }
     
 /****************************************************************************
  *                                                                          *
- *			    Render public interfaces                         *
+ *			    Render public interfaces                        *
  *                                                                          *
  ****************************************************************************/
 
 Bool XRenderQueryExtension (Display *dpy, int *event_basep, int *error_basep)
 {
-    XExtDisplayInfo *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo *info = XRenderFindDisplay (dpy);
 
-    if (XextHasExtension(info)) {
+    if (RenderHasExtension(info)) {
 	*event_basep = info->codes->first_event;
 	*error_basep = info->codes->first_error;
 	return True;
@@ -91,10 +200,10 @@
 			    int	    *major_versionp,
 			    int	    *minor_versionp)
 {
-    XExtDisplayInfo *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo *info = XRenderFindDisplay (dpy);
     XRenderInfo	    *xri;
 
-    if (!XextHasExtension (info))
+    if (!RenderHasExtension (info))
 	return 0;
 
     if (!XRenderQueryFormats (dpy))
@@ -161,7 +270,7 @@
 Status
 XRenderQueryFormats (Display *dpy)
 {
-    XExtDisplayInfo		*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo		*info = XRenderFindDisplay (dpy);
     _XAsyncHandler		async;
     _XrenderVersionState	async_state;
     xRenderQueryVersionReq	*vreq;
@@ -332,10 +441,10 @@
 int
 XRenderQuerySubpixelOrder (Display *dpy, int screen)
 {
-    XExtDisplayInfo *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo *info = XRenderFindDisplay (dpy);
     XRenderInfo	    *xri;
 
-    if (!XextHasExtension (info))
+    if (!RenderHasExtension (info))
 	return SubPixelUnknown;
 
     if (!XRenderQueryFormats (dpy))
@@ -348,10 +457,10 @@
 Bool
 XRenderSetSubpixelOrder (Display *dpy, int screen, int subpixel)
 {
-    XExtDisplayInfo *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo *info = XRenderFindDisplay (dpy);
     XRenderInfo	    *xri;
 
-    if (!XextHasExtension (info))
+    if (!RenderHasExtension (info))
 	return False;
 
     if (!XRenderQueryFormats (dpy))
@@ -365,7 +474,7 @@
 XRenderPictFormat *
 XRenderFindVisualFormat (Display *dpy, _Xconst Visual *visual)
 {
-    XExtDisplayInfo *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo *info = XRenderFindDisplay (dpy);
     int		    nv;
     XRenderInfo	    *xri;
     XRenderVisual   *xrv;
@@ -386,7 +495,7 @@
 		   _Xconst XRenderPictFormat	*template,
 		   int			count)
 {
-    XExtDisplayInfo *info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo *info = XRenderFindDisplay (dpy);
     int		    nf;
     XRenderInfo     *xri;
     
@@ -596,7 +705,7 @@
 			    _Xconst XRenderPictFormat	*format,
 			    int				*num)
 {
-    XExtDisplayInfo			*info = XRenderFindDisplay (dpy);
+    XRenderExtDisplayInfo			*info = XRenderFindDisplay (dpy);
     xRenderQueryPictIndexValuesReq	*req;
     xRenderQueryPictIndexValuesReply	rep;
     XIndexValue				*values;

Index: Xrenderint.h
===================================================================
RCS file: /local/src/CVS/Xrender/Xrenderint.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- Xrenderint.h	22 Apr 2003 04:46:24 -0000	1.8
+++ Xrenderint.h	24 Apr 2003 03:29:15 -0000	1.9
@@ -32,11 +32,6 @@
 #include <X11/Xutil.h>
 #include <X11/extensions/Xext.h>
 #include <X11/extensions/renderproto.h>
-#if HAVE_X11_EXTENSIONS_EXTUTIL_H
-# include <X11/extensions/extutil.h>
-#else
-# include "extutil.h"  /* use local copy if not installed */
-#endif
 #include "Xrender.h"
 
 typedef struct {
@@ -76,17 +71,34 @@
     int			nfilter_alias;
 } XRenderInfo;
 
-extern XExtensionInfo XRenderExtensionInfo;
+/* replaces XRenderExtDisplayInfo */
+typedef struct _XRenderExtDisplayInfo {
+    struct _XRenderExtDisplayInfo *next;    /* keep a linked list */
+    Display                       *display; /* which display this is */
+    XExtCodes                     *codes;   /* the extension protocol codes */
+    XPointer                       data;    /* extra data for the extension to use */
+} XRenderExtDisplayInfo;
+
+/* replaces XExtensionInfo */
+typedef struct _XRenderExtInfo {
+    XRenderExtDisplayInfo  *head;           /* start of the list */
+    XRenderExtDisplayInfo  *cur;            /* most recently used */
+    int                     ndisplays;      /* number of displays */
+} XRenderExtInfo;
+
+extern XRenderExtInfo XRenderExtensionInfo;
 extern char XRenderExtensionName[];
 
+XRenderExtDisplayInfo *
+XRenderFindDisplay (Display *dpy);
+
+#define RenderHasExtension(i) ((i) && ((i)->codes))
+
 #define RenderCheckExtension(dpy,i,val) \
-  XextCheckExtension (dpy, i, XRenderExtensionName, val)
+  if (!RenderHasExtension(i)) { XMissingExtension (dpy, XRenderExtensionName); return val; }
 
 #define RenderSimpleCheckExtension(dpy,i) \
-  XextSimpleCheckExtension (dpy, i, XRenderExtensionName)
-
-XExtDisplayInfo *
-XRenderFindDisplay (Display *dpy);
+  if (!RenderHasExtension(i)) { XMissingExtension (dpy, XRenderExtensionName); return; }
 
 /*
  * Xlib uses long for 32-bit values.  Xrender uses int.  This

Index: configure.ac
===================================================================
RCS file: /local/src/CVS/Xrender/configure.ac,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- configure.ac	22 Apr 2003 04:46:25 -0000	1.5
+++ configure.ac	24 Apr 2003 03:29:15 -0000	1.6
@@ -46,11 +46,6 @@
         AC_MSG_ERROR([X is required, but it was either disabled or not found.])
 fi
 
-saved_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="-I$x_includes"
-AC_CHECK_HEADERS([X11/extensions/extutil.h], [], [], [#include <X11/Xutil.h>])
-CPPFLAGS="$saved_CPPFLAGS"
-
 # Check render configuration
 PKG_CHECK_MODULES(RENDER, render >= $VERSION, [render_found_with_pkgconfig=yes], 
                   [render_found_with_pkgconfig=no])

Index: xrender.pc.in
===================================================================
RCS file: /local/src/CVS/Xrender/xrender.pc.in,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- xrender.pc.in	22 Apr 2003 06:41:41 -0000	1.5
+++ xrender.pc.in	24 Apr 2003 03:29:15 -0000	1.6
@@ -7,4 +7,4 @@
 Description: X Render Library
 Version: @VERSION@
 Cflags: -I${includedir} @RENDER_CFLAGS@
-Libs: -L${libdir} -lXrender @X_LIBS@ -lX11 -lXext
+Libs: -L${libdir} -lXrender @X_LIBS@ -lX11

--- extutil.h DELETED ---