xserver: Branch 'master' - 3 commits

Keith Packard keithp at kemper.freedesktop.org
Fri Dec 18 18:01:06 PST 2009


 Xext/mbuf.c                           |   13 +++++++++----
 Xext/panoramiX.c                      |   26 +++++++++++++++++---------
 Xext/saver.c                          |    8 +++++---
 Xext/security.c                       |   10 +++++-----
 Xext/shape.c                          |    4 ++--
 Xext/shm.c                            |    2 +-
 Xext/sleepuntil.c                     |    3 ++-
 Xext/sync.c                           |   14 +++++++++-----
 Xext/xvdisp.c                         |    6 +++---
 Xext/xvmain.c                         |   24 ++++++++++++++----------
 Xext/xvmc.c                           |    9 ++++++---
 Xi/extinit.c                          |    7 ++++---
 composite/compext.c                   |    9 ++++++---
 damageext/damageext.c                 |    4 ++--
 dbe/dbe.c                             |   11 +++++++++--
 dix/resource.c                        |    8 ++++++--
 glx/glxext.c                          |   15 ++++++++-------
 hw/dmx/glxProxy/glxext.c              |   19 ++++++++++++++-----
 hw/kdrive/ephyr/ephyrdriext.c         |    6 +++++-
 hw/xfree86/common/xf86Module.h        |    6 +++---
 hw/xfree86/dixmods/extmod/xf86vmode.c |    2 +-
 hw/xfree86/dri/dri.c                  |    9 +++++++--
 hw/xfree86/dri/xf86dri.c              |    2 +-
 hw/xfree86/dri2/dri2ext.c             |    6 +++++-
 hw/xquartz/applewm.c                  |    4 ++--
 hw/xquartz/xpr/dri.c                  |    5 +++--
 hw/xwin/winwindowswm.c                |    4 ++--
 include/resource.h                    |    2 +-
 mi/miarc.c                            |    2 +-
 randr/randr.c                         |    4 ++--
 randr/rrcrtc.c                        |    4 +---
 randr/rrmode.c                        |    4 +---
 randr/rroutput.c                      |    4 +---
 record/record.c                       |    2 +-
 render/picture.c                      |   10 +++-------
 render/render.c                       |    3 ++-
 xfixes/cursor.c                       |   11 +++++++----
 xfixes/region.c                       |    5 +++--
 xfixes/select.c                       |    6 ++++--
 xkb/xkb.c                             |    5 ++++-
 40 files changed, 182 insertions(+), 116 deletions(-)

New commits:
commit 895f40792a14d8b88923bf3b428d31ae3bb31e46
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date:   Wed Dec 2 17:43:01 2009 -0800

    Add type name argument to CreateNewResourceType
    
    Convert all calls of CreateNewResourceType to pass name argument
    
    Breaks DIX ABI.
    
    ABI versions bumped:
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at sun.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/Xext/mbuf.c b/Xext/mbuf.c
index 02354b0..aacb9cf 100644
--- a/Xext/mbuf.c
+++ b/Xext/mbuf.c
@@ -42,8 +42,6 @@ in this Software without prior written authorization from The Open Group.
 #include "opaque.h"
 #include "sleepuntil.h"
 #include "inputstr.h"
-#include "registry.h"
-
 #include <X11/extensions/multibufconst.h>
 #include <X11/extensions/multibufproto.h>
 
@@ -469,12 +467,15 @@ MultibufferExtensionInit()
      * create the resource types
      */
     MultibufferDrawableResType =
-	CreateNewResourceType(MultibufferDrawableDelete);
+	CreateNewResourceType(MultibufferDrawableDelete, "MultibufferDrawable");
     if (MultiBufferDrawableResType)
 	MultibufferDrawableResType |= RC_DRAWABLE;
-    MultibufferResType = CreateNewResourceType(MultibufferDelete);
-    MultibuffersResType = CreateNewResourceType(MultibuffersDelete);
-    OtherClientResType = CreateNewResourceType(OtherClientDelete);
+    MultibufferResType = CreateNewResourceType(MultibufferDelete,
+					       "MultibufferBuffer");
+    MultibuffersResType = CreateNewResourceType(MultibuffersDelete,
+						"MultibufferWindow");
+    OtherClientResType = CreateNewResourceType(OtherClientDelete,
+					       "MultibufferOtherClient");
     if (MultibufferDrawableResType && MultibufferResType &&
 	MultibuffersResType && 	OtherClientResType &&
 	(extEntry = AddExtension(MULTIBUFFER_PROTOCOL_NAME,
@@ -483,11 +484,6 @@ MultibufferExtensionInit()
 				 ProcMultibufferDispatch, SProcMultibufferDispatch,
 				 MultibufferResetProc, StandardMinorOpcode)))
     {
-	RegisterResourceName(MultibufferDrawableResType,
-			     "MultibufferDrawable");
-	RegisterResourceName(MultibufferResType, "MultibufferBuffer");
-	RegisterResourceName(MultibuffersResType, "MultibufferWindow");
-	RegisterResourceName(OtherClientResType, "MultibufferOtherClient");
 	MultibufferEventBase = extEntry->eventBase;
 	MultibufferErrorBase = extEntry->errorBase;
 	EventSwapVector[MultibufferEventBase + MultibufferClobberNotify] = (EventSwapPtr) SClobberNotifyEvent;
diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c
index 2a950ee..cfeba01 100644
--- a/Xext/panoramiX.c
+++ b/Xext/panoramiX.c
@@ -52,7 +52,6 @@ Equipment Corporation.
 #include "globals.h"
 #include "servermd.h"
 #include "resource.h"
-#include "registry.h"
 #ifdef RENDER
 #include "picturestr.h"
 #endif
@@ -504,21 +503,20 @@ void PanoramiXExtensionInit(int argc, char *argv[])
 	}
 
 	XRC_DRAWABLE = CreateNewResourceClass();
-	XRT_WINDOW = CreateNewResourceType(XineramaDeleteResource);
+	XRT_WINDOW = CreateNewResourceType(XineramaDeleteResource,
+					   "XineramaWindow");
 	if (XRT_WINDOW)
 	    XRT_WINDOW |= XRC_DRAWABLE;
-	XRT_PIXMAP = CreateNewResourceType(XineramaDeleteResource);
+	XRT_PIXMAP = CreateNewResourceType(XineramaDeleteResource,
+					   "XineramaPixmap");
 	if (XRT_PIXMAP)
 	    XRT_PIXMAP |= XRC_DRAWABLE;
-	XRT_GC = CreateNewResourceType(XineramaDeleteResource);
-	XRT_COLORMAP = CreateNewResourceType(XineramaDeleteResource);
+	XRT_GC = CreateNewResourceType(XineramaDeleteResource,
+				       "XineramaGC");
+	XRT_COLORMAP = CreateNewResourceType(XineramaDeleteResource,
+					     "XineramaColormap");
 
 	if (XRT_WINDOW && XRT_PIXMAP && XRT_GC && XRT_COLORMAP) {
-	    RegisterResourceName(XRT_WINDOW, "XineramaWindow");
-	    RegisterResourceName(XRT_PIXMAP, "XineramaPixmap");
-	    RegisterResourceName(XRT_GC, "XineramaGC");
-	    RegisterResourceName(XRT_COLORMAP, "XineramaColormap");
-
 	    panoramiXGeneration = serverGeneration;
 	    success = TRUE;
 	}
diff --git a/Xext/saver.c b/Xext/saver.c
index 5757f85..2549e8a 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -47,7 +47,6 @@ in this Software without prior written authorization from the X Consortium.
 #include "cursorstr.h"
 #include "colormapst.h"
 #include "xace.h"
-#include "registry.h"
 #ifdef PANORAMIX
 #include "panoramiX.h"
 #include "panoramiXsrv.h"
@@ -253,9 +252,11 @@ ScreenSaverExtensionInit(INITARGS)
     int		    i;
     ScreenPtr	    pScreen;
 
-    AttrType = CreateNewResourceType(ScreenSaverFreeAttr);
-    SaverEventType = CreateNewResourceType(ScreenSaverFreeEvents);
-    SuspendType = CreateNewResourceType(ScreenSaverFreeSuspend);
+    AttrType = CreateNewResourceType(ScreenSaverFreeAttr, "SaverAttr");
+    SaverEventType = CreateNewResourceType(ScreenSaverFreeEvents,
+					   "SaverEvent");
+    SuspendType = CreateNewResourceType(ScreenSaverFreeSuspend,
+					"SaverSuspend");
 
     for (i = 0; i < screenInfo.numScreens; i++)
     {
@@ -267,9 +268,6 @@ ScreenSaverExtensionInit(INITARGS)
 				 ProcScreenSaverDispatch, SProcScreenSaverDispatch,
 				 NULL, StandardMinorOpcode)))
     {
-	RegisterResourceName(AttrType, "SaverAttr");
-	RegisterResourceName(SaverEventType, "SaverEvent");
-	RegisterResourceName(SuspendType, "SaverSuspend");
 	ScreenSaverEventBase = extEntry->eventBase;
 	EventSwapVector[ScreenSaverEventBase] = (EventSwapPtr) SScreenSaverNotifyEvent;
     }
diff --git a/Xext/security.c b/Xext/security.c
index 2cd0e17..af8d205 100644
--- a/Xext/security.c
+++ b/Xext/security.c
@@ -1105,17 +1105,17 @@ SecurityExtensionInit(INITARGS)
     int ret = TRUE;
 
     SecurityAuthorizationResType =
-	CreateNewResourceType(SecurityDeleteAuthorization);
+	CreateNewResourceType(SecurityDeleteAuthorization,
+			      "SecurityAuthorization");
 
-    RTEventClient = CreateNewResourceType(
-				SecurityDeleteAuthorizationEventClient);
+    RTEventClient =
+	CreateNewResourceType(SecurityDeleteAuthorizationEventClient,
+			      "SecurityEventClient");
 
     if (!SecurityAuthorizationResType || !RTEventClient)
 	return;
 
     RTEventClient |= RC_NEVERRETAIN;
-    RegisterResourceName(SecurityAuthorizationResType, "SecurityAuthorization");
-    RegisterResourceName(RTEventClient, "SecurityEventClient");
 
     /* Allocate the private storage */
     if (!dixRequestPrivate(stateKey, sizeof(SecurityStateRec)))
diff --git a/Xext/shape.c b/Xext/shape.c
index 247f21b..cb4126b 100644
--- a/Xext/shape.c
+++ b/Xext/shape.c
@@ -40,7 +40,6 @@ in this Software without prior written authorization from The Open Group.
 #include "extnsionst.h"
 #include "dixstruct.h"
 #include "resource.h"
-#include "registry.h"
 #include "opaque.h"
 #include <X11/extensions/shapeproto.h>
 #include "regionstr.h"
@@ -128,15 +127,13 @@ ShapeExtensionInit(void)
 {
     ExtensionEntry *extEntry;
 
-    ClientType = CreateNewResourceType(ShapeFreeClient);
-    ShapeEventType = CreateNewResourceType(ShapeFreeEvents);
+    ClientType = CreateNewResourceType(ShapeFreeClient, "ShapeClient");
+    ShapeEventType = CreateNewResourceType(ShapeFreeEvents, "ShapeEvent");
     if (ClientType && ShapeEventType &&
 	(extEntry = AddExtension(SHAPENAME, ShapeNumberEvents, 0,
 				 ProcShapeDispatch, SProcShapeDispatch,
 				 NULL, StandardMinorOpcode)))
     {
-	RegisterResourceName(ClientType, "ShapeClient");
-	RegisterResourceName(ShapeEventType, "ShapeEvent");
 	ShapeEventBase = extEntry->eventBase;
 	EventSwapVector[ShapeEventBase] = (EventSwapPtr) SShapeNotifyEvent;
     }
diff --git a/Xext/shm.c b/Xext/shm.c
index 589155d..ab58c27 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -52,7 +52,6 @@ in this Software without prior written authorization from The Open Group.
 #include "servermd.h"
 #include "shmint.h"
 #include "xace.h"
-#include "registry.h"
 #include <X11/extensions/shmproto.h>
 #include <X11/Xfuncproto.h>
 #include "protocol-versions.h"
@@ -278,13 +277,12 @@ ShmExtensionInit(INITARGS)
 	    screenInfo.screens[i]->DestroyPixmap = ShmDestroyPixmap;
 	}
     }
-    ShmSegType = CreateNewResourceType(ShmDetachSegment);
+    ShmSegType = CreateNewResourceType(ShmDetachSegment, "ShmSeg");
     if (ShmSegType &&
 	(extEntry = AddExtension(SHMNAME, ShmNumberEvents, ShmNumberErrors,
 				 ProcShmDispatch, SProcShmDispatch,
 				 ShmResetProc, StandardMinorOpcode)))
     {
-	RegisterResourceName(ShmSegType, "ShmSeg");
 	ShmReqCode = (unsigned char)extEntry->base;
 	ShmCompletionCode = extEntry->eventBase;
 	BadShmSegCode = extEntry->errorBase;
diff --git a/Xext/sleepuntil.c b/Xext/sleepuntil.c
index 6b5964e..075f428 100644
--- a/Xext/sleepuntil.c
+++ b/Xext/sleepuntil.c
@@ -39,7 +39,6 @@ in this Software without prior written authorization from The Open Group.
 #include "dixstruct.h"
 #include "pixmapstr.h"
 #include "scrnintstr.h"
-#include "registry.h"
 
 typedef struct _Sertafied {
     struct _Sertafied	*next;
@@ -88,10 +87,10 @@ ClientSleepUntil (ClientPtr client,
 
     if (SertafiedGeneration != serverGeneration)
     {
-	SertafiedResType = CreateNewResourceType (SertafiedDelete);
+	SertafiedResType = CreateNewResourceType (SertafiedDelete,
+						  "ClientSleep");
 	if (!SertafiedResType)
 	    return FALSE;
-	RegisterResourceName(SertafiedResType, "ClientSleep");
 	SertafiedGeneration = serverGeneration;
 	BlockHandlerRegistered = FALSE;
     }
diff --git a/Xext/sync.c b/Xext/sync.c
index b3bba17..ce65314 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -64,7 +64,6 @@ PERFORMANCE OF THIS SOFTWARE.
 #include "extnsionst.h"
 #include "dixstruct.h"
 #include "resource.h"
-#include "registry.h"
 #include "opaque.h"
 #include <X11/extensions/syncproto.h>
 #include "syncsrv.h"
@@ -874,12 +873,11 @@ SyncCreateSystemCounter(
      */
     if (RTCounter == 0)
     {
-	RTCounter = CreateNewResourceType(FreeCounter);
+	RTCounter = CreateNewResourceType(FreeCounter, "SyncCounter");
 	if (RTCounter == 0)
 	{
 	    return NULL;
 	}
-	RegisterResourceName(RTCounter, "SyncCounter");
     }
 
     pCounter = SyncCreateCounter(NULL, FakeClientID(0), initial);
@@ -2112,13 +2110,13 @@ SyncExtensionInit(void)
 
     if (RTCounter == 0)
     {
-	RTCounter = CreateNewResourceType(FreeCounter);
+	RTCounter = CreateNewResourceType(FreeCounter, "SyncCounter");
     }
-    RTAlarm = CreateNewResourceType(FreeAlarm);
-    RTAwait = CreateNewResourceType(FreeAwait);
+    RTAlarm = CreateNewResourceType(FreeAlarm, "SyncAlarm");
+    RTAwait = CreateNewResourceType(FreeAwait, "SyncAwait");
     if (RTAwait)
 	RTAwait |= RC_NEVERRETAIN;
-    RTAlarmClient = CreateNewResourceType(FreeAlarmClient);
+    RTAlarmClient = CreateNewResourceType(FreeAlarmClient, "SyncAlarmClient");
     if (RTAlarmClient)
 	RTAlarmClient |= RC_NEVERRETAIN;
 
@@ -2135,10 +2133,6 @@ SyncExtensionInit(void)
 	return;
     }
 
-    RegisterResourceName(RTCounter, "SyncCounter");
-    RegisterResourceName(RTAlarm, "SyncAlarm");
-    RegisterResourceName(RTAwait, "SyncAwait");
-    RegisterResourceName(RTAlarmClient, "SyncAlarmClient");
     SyncEventBase = extEntry->eventBase;
     SyncErrorBase = extEntry->errorBase;
     EventSwapVector[SyncEventBase + XSyncCounterNotify] = (EventSwapPtr) SCounterNotifyEvent;
diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c
index e674dfd..b6fc34f 100644
--- a/Xext/xvdisp.c
+++ b/Xext/xvdisp.c
@@ -36,7 +36,6 @@ SOFTWARE.
 #include "gcstruct.h"
 #include "dixstruct.h"
 #include "resource.h"
-#include "registry.h"
 #include "opaque.h"
 
 #include <X11/extensions/Xv.h>
@@ -1864,12 +1863,10 @@ void XineramifyXv(void)
    XvAdaptorPtr MatchingAdaptors[MAXSCREENS];
    int i, j, k, l;
 
-   XvXRTPort = CreateNewResourceType(XineramaDeleteResource);
+   XvXRTPort = CreateNewResourceType(XineramaDeleteResource, "XvXRTPort");
 
    if (!xvsp0 || !XvXRTPort) return;
 
-   RegisterResourceName(XvXRTPort, "XvXRTPort");
-
    for(i = 0; i < xvsp0->nAdaptors; i++) {
       refAdapt = xvsp0->pAdaptors + i;
 
diff --git a/Xext/xvmain.c b/Xext/xvmain.c
index c33c209..05a6890 100644
--- a/Xext/xvmain.c
+++ b/Xext/xvmain.c
@@ -90,7 +90,6 @@ SOFTWARE.
 #include "extnsionst.h"
 #include "dixstruct.h"
 #include "resource.h"
-#include "registry.h"
 #include "opaque.h"
 #include "input.h"
 
@@ -209,47 +208,45 @@ CreateResourceTypes(void)
 
   XvResourceGeneration = serverGeneration;
 
-  if (!(XvRTPort = CreateNewResourceType(XvdiDestroyPort)))
+  if (!(XvRTPort = CreateNewResourceType(XvdiDestroyPort, "XvRTPort")))
     {
       ErrorF("CreateResourceTypes: failed to allocate port resource.\n");
       return FALSE;
     }
-  RegisterResourceName(XvRTPort, "XvRTPort");
 
-  if (!(XvRTGrab = CreateNewResourceType(XvdiDestroyGrab)))
+  if (!(XvRTGrab = CreateNewResourceType(XvdiDestroyGrab, "XvRTGrab")))
     {
       ErrorF("CreateResourceTypes: failed to allocate grab resource.\n");
       return FALSE;
     }
-  RegisterResourceName(XvRTGrab, "XvRTGrab");
 
-  if (!(XvRTEncoding = CreateNewResourceType(XvdiDestroyEncoding)))
+  if (!(XvRTEncoding = CreateNewResourceType(XvdiDestroyEncoding,
+					     "XvRTEncoding")))
     {
       ErrorF("CreateResourceTypes: failed to allocate encoding resource.\n");
       return FALSE;
     }
-  RegisterResourceName(XvRTEncoding, "XvRTEncoding");
 
-  if (!(XvRTVideoNotify = CreateNewResourceType(XvdiDestroyVideoNotify)))
+  if (!(XvRTVideoNotify = CreateNewResourceType(XvdiDestroyVideoNotify,
+						"XvRTVideoNotify")))
     {
       ErrorF("CreateResourceTypes: failed to allocate video notify resource.\n");
       return FALSE;
     }
-  RegisterResourceName(XvRTVideoNotify, "XvRTVideoNotify");
 
-  if (!(XvRTVideoNotifyList = CreateNewResourceType(XvdiDestroyVideoNotifyList)))
+  if (!(XvRTVideoNotifyList = CreateNewResourceType(XvdiDestroyVideoNotifyList,
+						    "XvRTVideoNotifyList")))
     {
       ErrorF("CreateResourceTypes: failed to allocate video notify list resource.\n");
       return FALSE;
     }
-  RegisterResourceName(XvRTVideoNotifyList, "XvRTVideoNotifyList");
 
-  if (!(XvRTPortNotify = CreateNewResourceType(XvdiDestroyPortNotify)))
+  if (!(XvRTPortNotify = CreateNewResourceType(XvdiDestroyPortNotify,
+					       "XvRTPortNotify")))
     {
       ErrorF("CreateResourceTypes: failed to allocate port notify resource.\n");
       return FALSE;
     }
-  RegisterResourceName(XvRTPortNotify, "XvRTPortNotify");
 
   return TRUE;
 
diff --git a/Xext/xvmc.c b/Xext/xvmc.c
index 0a233b1..c85f85e 100644
--- a/Xext/xvmc.c
+++ b/Xext/xvmc.c
@@ -11,7 +11,6 @@
 #include "os.h"
 #include "dixstruct.h"
 #include "resource.h"
-#include "registry.h"
 #include "scrnintstr.h"
 #include "extnsionst.h"
 #include "servermd.h"
@@ -675,17 +674,17 @@ XvMCExtensionInit(void)
    if(XvMCScreenKey == NULL) /* nobody supports it */
 	return; 
 
-   if(!(XvMCRTContext = CreateNewResourceType(XvMCDestroyContextRes)))
+   if(!(XvMCRTContext = CreateNewResourceType(XvMCDestroyContextRes,
+					      "XvMCRTContext")))
 	return;
-   RegisterResourceName(XvMCRTContext, "XvMCRTContext");
 
-   if(!(XvMCRTSurface = CreateNewResourceType(XvMCDestroySurfaceRes)))
+   if(!(XvMCRTSurface = CreateNewResourceType(XvMCDestroySurfaceRes,
+					      "XvMCRTSurface")))
 	return;
-   RegisterResourceName(XvMCRTSurface, "XvMCRTSurface");
 
-   if(!(XvMCRTSubpicture = CreateNewResourceType(XvMCDestroySubpictureRes)))
+   if(!(XvMCRTSubpicture = CreateNewResourceType(XvMCDestroySubpictureRes,
+						 "XvMCRTSubpicture")))
 	return;
-   RegisterResourceName(XvMCRTSubpicture, "XvMCRTSubpicture");
 
    extEntry = AddExtension(XvMCName, XvMCNumEvents, XvMCNumErrors, 
                               ProcXvMCDispatch, SProcXvMCDispatch,
diff --git a/Xi/extinit.c b/Xi/extinit.c
index 372f77f..b7910cd 100644
--- a/Xi/extinit.c
+++ b/Xi/extinit.c
@@ -70,7 +70,6 @@ SOFTWARE.
 #include "extinit.h"
 #include "exglobals.h"
 #include "swaprep.h"
-#include "registry.h"
 #include "privates.h"
 #include "protocol-versions.h"
 
@@ -1269,10 +1268,10 @@ XInputExtensionInit(void)
 	IEventBase = extEntry->eventBase;
 	XIVersion = thisversion;
 	MakeDeviceTypeAtoms();
-	RT_INPUTCLIENT = CreateNewResourceType((DeleteType) InputClientGone);
+	RT_INPUTCLIENT = CreateNewResourceType((DeleteType) InputClientGone,
+					       "INPUTCLIENT");
 	if (!RT_INPUTCLIENT)
 	    FatalError("Failed to add resource type for XI.\n");
-	RegisterResourceName(RT_INPUTCLIENT, "INPUTCLIENT");
 	FixExtensionEvents(extEntry);
 	ReplySwapVector[IReqCode] = (ReplySwapPtr) SReplyIDispatch;
 	EventSwapVector[DeviceValuator] = SEventIDispatch;
diff --git a/composite/compext.c b/composite/compext.c
index 74f0309..17c4bae 100644
--- a/composite/compext.c
+++ b/composite/compext.c
@@ -47,7 +47,6 @@
 
 #include "compint.h"
 #include "xace.h"
-#include "registry.h"
 #include "protocol-versions.h"
 
 static CARD8	CompositeReqCode;
@@ -547,22 +546,20 @@ CompositeExtensionInit (void)
 	return;
 #endif
 
-    CompositeClientWindowType = CreateNewResourceType (FreeCompositeClientWindow);
+    CompositeClientWindowType = CreateNewResourceType
+	(FreeCompositeClientWindow, "CompositeClientWindow");
     if (!CompositeClientWindowType)
 	return;
-    RegisterResourceName(CompositeClientWindowType, "CompositeClientWindow");
 
-    CompositeClientSubwindowsType = CreateNewResourceType (FreeCompositeClientSubwindows);
+    CompositeClientSubwindowsType = CreateNewResourceType
+	(FreeCompositeClientSubwindows, "CompositeClientSubwindows");
     if (!CompositeClientSubwindowsType)
 	return;
-    RegisterResourceName(CompositeClientSubwindowsType,
-			 "CompositeClientSubwindows");
 
-    CompositeClientOverlayType = CreateNewResourceType (FreeCompositeClientOverlay);
+    CompositeClientOverlayType = CreateNewResourceType
+	(FreeCompositeClientOverlay, "CompositeClientOverlay");
     if (!CompositeClientOverlayType)
 	return;
-    RegisterResourceName(CompositeClientOverlayType,
-			 "CompositeClientOverlay");
 
     if (!dixRequestPrivate(CompositeClientPrivateKey,
 			   sizeof(CompositeClientRec)))
diff --git a/damageext/damageext.c b/damageext/damageext.c
index 044e8ef..462796e 100644
--- a/damageext/damageext.c
+++ b/damageext/damageext.c
@@ -24,7 +24,6 @@
 #include <dix-config.h>
 #endif
 
-#include "registry.h"
 #include "damageextint.h"
 #include "protocol-versions.h"
 
@@ -498,15 +497,13 @@ DamageExtensionInit(void)
     for (s = 0; s < screenInfo.numScreens; s++)
 	DamageSetup (screenInfo.screens[s]);
 
-    DamageExtType = CreateNewResourceType (FreeDamageExt);
+    DamageExtType = CreateNewResourceType (FreeDamageExt, "DamageExt");
     if (!DamageExtType)
 	return;
-    RegisterResourceName(DamageExtType, "DamageExt");
 
-    DamageExtWinType = CreateNewResourceType (FreeDamageExtWin);
+    DamageExtWinType = CreateNewResourceType (FreeDamageExtWin, "DamageExtWin");
     if (!DamageExtWinType)
 	return;
-    RegisterResourceName(DamageExtWinType, "DamageExtWin");
 
     if (!dixRequestPrivate(DamageClientPrivateKey, sizeof (DamageClientRec)))
 	return;
diff --git a/dbe/dbe.c b/dbe/dbe.c
index 7af8736..825d2e0 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -54,7 +54,6 @@
 #include "dbestruct.h"
 #include "midbe.h"
 #include "xace.h"
-#include "registry.h"
 
 /* GLOBALS */
 
@@ -1574,17 +1573,15 @@ DbeExtensionInit(void)
 
     /* Create the resource types. */
     dbeDrawableResType =
-        CreateNewResourceType(DbeDrawableDelete);
+        CreateNewResourceType(DbeDrawableDelete, "dbeDrawable");
     if (!dbeDrawableResType)
 	return;
     dbeDrawableResType |= RC_DRAWABLE;
-    RegisterResourceName(dbeDrawableResType, "dbeDrawable");
 
     dbeWindowPrivResType =
-        CreateNewResourceType(DbeWindowPrivDelete);
+        CreateNewResourceType(DbeWindowPrivDelete, "dbeWindow");
     if (!dbeWindowPrivResType)
 	return;
-    RegisterResourceName(dbeWindowPrivResType, "dbeWindow");
 
     if (!dixRegisterPrivateOffset(dbeDrawableResType,
 				  offsetof(PixmapRec, devPrivates)))
diff --git a/dix/resource.c b/dix/resource.c
index e1fdad4..91d0cfb 100644
--- a/dix/resource.c
+++ b/dix/resource.c
@@ -141,10 +141,10 @@ Equipment Corporation.
 #endif
 #include "xace.h"
 #include <assert.h>
+#include "registry.h"
 
 #ifdef XSERVER_DTRACE
 #include <sys/types.h>
-#include "registry.h"
 typedef const char *string;
 #include "Xserver-dtrace.h"
 
@@ -197,7 +197,7 @@ CallResourceStateCallback(ResourceState state, ResourceRec *res)
 }
 
 RESTYPE
-CreateNewResourceType(DeleteType deleteFunc)
+CreateNewResourceType(DeleteType deleteFunc, char *name)
 {
     RESTYPE next = lastResourceType + 1;
     DeleteType *funcs;
@@ -214,6 +214,10 @@ CreateNewResourceType(DeleteType deleteFunc)
     lastResourceType = next;
     DeleteFuncs = funcs;
     DeleteFuncs[next] = deleteFunc;
+
+    /* Called even if name is NULL, to remove any previous entry */
+    RegisterResourceName(next, name);
+
     return next;
 }
 
diff --git a/glx/glxext.c b/glx/glxext.c
index 546d968..751ea72 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -343,17 +343,15 @@ void GlxExtensionInit(void)
     __GLXprovider *p;
     Bool glx_provided = False;
 
-    __glXContextRes = CreateNewResourceType((DeleteType)ContextGone);
-    __glXDrawableRes = CreateNewResourceType((DeleteType)DrawableGone);
-    __glXSwapBarrierRes = CreateNewResourceType((DeleteType)SwapBarrierGone);
-
+    __glXContextRes = CreateNewResourceType((DeleteType)ContextGone,
+					    "GLXContext");
+    __glXDrawableRes = CreateNewResourceType((DeleteType)DrawableGone,
+					     "GLXDrawable");
+    __glXSwapBarrierRes = CreateNewResourceType((DeleteType)SwapBarrierGone,
+						"GLXSwapBarrier");
     if (!__glXContextRes || !__glXDrawableRes || !__glXSwapBarrierRes)
 	return;
 
-    RegisterResourceName(__glXContextRes, "GLXContext");
-    RegisterResourceName(__glXDrawableRes, "GLXDrawable");
-    RegisterResourceName(__glXSwapBarrierRes, "GLXSwapBarrier");
-
     if (!dixRequestPrivate(glxClientPrivateKey, sizeof (__GLXclientState)))
 	return;
     if (!AddCallback (&ClientStateCallback, glxClientCallback, 0))
diff --git a/hw/dmx/glxProxy/glxext.c b/hw/dmx/glxProxy/glxext.c
index c00ae6e..6cd8bb4 100644
--- a/hw/dmx/glxProxy/glxext.c
+++ b/hw/dmx/glxProxy/glxext.c
@@ -44,7 +44,6 @@
 #include "glxvisuals.h"
 #include "micmap.h"
 #include "glxswap.h"
-#include "registry.h"
 
 /*
 ** Stubs to satisfy miinitext.c references.
@@ -294,22 +293,21 @@ void GlxExtensionInit(void)
        return;
     }
     
-    __glXContextRes = CreateNewResourceType((DeleteType)ContextGone);
-    __glXClientRes = CreateNewResourceType((DeleteType)ClientGone);
-    __glXPixmapRes = CreateNewResourceType((DeleteType)PixmapGone);
-    __glXWindowRes = CreateNewResourceType((DeleteType)WindowGone);
-    __glXPbufferRes = CreateNewResourceType((DeleteType)PbufferGone);
+    __glXContextRes = CreateNewResourceType((DeleteType)ContextGone,
+					    "GLXContext");
+    __glXClientRes = CreateNewResourceType((DeleteType)ClientGone,
+					   "GLXClient");
+    __glXPixmapRes = CreateNewResourceType((DeleteType)PixmapGone,
+					   "GLXPixmap");
+    __glXWindowRes = CreateNewResourceType((DeleteType)WindowGone,
+					   "GLXWindow");
+    __glXPbufferRes = CreateNewResourceType((DeleteType)PbufferGone,
+					    "GLXPbuffer");
 
     if (!__glXContextRes || !__glXClientRes || !__glXPixmapRes ||
 	!__glXWindowRes || !__glXPbufferRes)
 	return;
 
-    RegisterResourceName(__glXContextRes, "GLXContext");
-    RegisterResourceName(__glXClientRes, "GLXClient");
-    RegisterResourceName(__glXPixmapRes, "GLXPixmap");
-    RegisterResourceName(__glXWindowRes, "GLXWindow");
-    RegisterResourceName(__glXPbufferRes, "GLXPbuffer");
-
     /*
     ** Add extension to server extensions.
     */
diff --git a/hw/kdrive/ephyr/ephyrdriext.c b/hw/kdrive/ephyr/ephyrdriext.c
index a2839ea..f741d74 100644
--- a/hw/kdrive/ephyr/ephyrdriext.c
+++ b/hw/kdrive/ephyr/ephyrdriext.c
@@ -43,7 +43,6 @@
 #include "privates.h"
 #include "dixstruct.h"
 #include "extnsionst.h"
-#include "registry.h"
 #include "colormapst.h"
 #include "cursorstr.h"
 #include "scrnintstr.h"
@@ -141,12 +140,11 @@ ephyrDRIExtensionInit (ScreenPtr a_screen)
     EPHYR_LOG ("host X does have XShape extension\n") ;
 
 #ifdef XF86DRI_EVENTS
-    EventType = CreateNewResourceType (XF86DRIFreeEvents);
+    EventType = CreateNewResourceType (XF86DRIFreeEvents, "DRIEvents");
     if (!EventType) {
         EPHYR_LOG_ERROR ("failed to register DRI event resource type\n") ;
         goto out ;
     }
-    RegisterResourceName(EventType, "DRIEvents");
 #endif
 
     if ((extEntry = AddExtension(XF86DRINAME,
diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
index 28da22b..8e5d5cf 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -82,9 +82,9 @@ typedef enum {
  * mask is 0xFFFF0000.
  */
 #define ABI_ANSIC_VERSION	SET_ABI_VERSION(0, 4)
-#define ABI_VIDEODRV_VERSION	SET_ABI_VERSION(6, 0)
-#define ABI_XINPUT_VERSION	SET_ABI_VERSION(7, 0)
-#define ABI_EXTENSION_VERSION	SET_ABI_VERSION(2, 0)
+#define ABI_VIDEODRV_VERSION	SET_ABI_VERSION(7, 0)
+#define ABI_XINPUT_VERSION	SET_ABI_VERSION(8, 0)
+#define ABI_EXTENSION_VERSION	SET_ABI_VERSION(3, 0)
 #define ABI_FONT_VERSION	SET_ABI_VERSION(0, 6)
 
 #define MODINFOSTRING1	0xef23fdc5
diff --git a/hw/xfree86/dixmods/extmod/xf86vmode.c b/hw/xfree86/dixmods/extmod/xf86vmode.c
index c35a83f..a304a42 100644
--- a/hw/xfree86/dixmods/extmod/xf86vmode.c
+++ b/hw/xfree86/dixmods/extmod/xf86vmode.c
@@ -39,7 +39,6 @@ from Kaleb S. KEITHLEY
 #include "misc.h"
 #include "dixstruct.h"
 #include "extnsionst.h"
-#include "registry.h"
 #include "scrnintstr.h"
 #include "servermd.h"
 #include <X11/extensions/xf86vmproto.h>
@@ -171,7 +170,7 @@ XFree86VidModeExtensionInit(void)
     DEBUG_P("XFree86VidModeExtensionInit");
 
 #ifdef XF86VIDMODE_EVENTS
-    EventType = CreateNewResourceType(XF86VidModeFreeEvents);
+    EventType = CreateNewResourceType(XF86VidModeFreeEvents, "VidModeEvent");
 #endif
 
     for(i = 0; i < screenInfo.numScreens; i++) {
@@ -202,7 +201,6 @@ XFree86VidModeExtensionInit(void)
 #endif
 	VidModeErrorBase = extEntry->errorBase;
 #ifdef XF86VIDMODE_EVENTS
-	RegisterResourceName(EventType, "VidModeEvent");
 	XF86VidModeEventBase = extEntry->eventBase;
 	EventSwapVector[XF86VidModeEventBase] = (EventSwapPtr)SXF86VidModeNotifyEvent;
 #endif
diff --git a/hw/xfree86/dri/dri.c b/hw/xfree86/dri/dri.c
index be0604e..836967c 100644
--- a/hw/xfree86/dri/dri.c
+++ b/hw/xfree86/dri/dri.c
@@ -51,7 +51,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "misc.h"
 #include "dixstruct.h"
 #include "extnsionst.h"
-#include "registry.h"
 #include "colormapst.h"
 #include "cursorstr.h"
 #include "scrnintstr.h"
@@ -790,13 +789,13 @@ DRIExtensionInit(void)
 	return FALSE;
     }
 
-    DRIDrawablePrivResType = CreateNewResourceType(DRIDrawablePrivDelete);
-    DRIContextPrivResType = CreateNewResourceType(DRIContextPrivDelete);
+    DRIDrawablePrivResType = CreateNewResourceType(DRIDrawablePrivDelete,
+						   "DRIDrawable");
+    DRIContextPrivResType = CreateNewResourceType(DRIContextPrivDelete,
+						  "DRIContext");
 
     if (!DRIDrawablePrivResType || !DRIContextPrivResType)
 	return FALSE;
-    RegisterResourceName(DRIDrawablePrivResType, "DRIDrawable");
-    RegisterResourceName(DRIContextPrivResType, "DRIContext");
 
     RegisterBlockAndWakeupHandlers(DRIBlockHandler, DRIWakeupHandler, NULL);
 
diff --git a/hw/xfree86/dri/xf86dri.c b/hw/xfree86/dri/xf86dri.c
index 2da9767..7800399 100644
--- a/hw/xfree86/dri/xf86dri.c
+++ b/hw/xfree86/dri/xf86dri.c
@@ -47,7 +47,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "misc.h"
 #include "dixstruct.h"
 #include "extnsionst.h"
-#include "registry.h"
 #include "colormapst.h"
 #include "cursorstr.h"
 #include "scrnintstr.h"
@@ -95,7 +94,7 @@ XFree86DRIExtensionInit(void)
     ExtensionEntry* extEntry;
 
 #ifdef XF86DRI_EVENTS
-    EventType = CreateNewResourceType(XF86DRIFreeEvents);
+    EventType = CreateNewResourceType(XF86DRIFreeEvents, "DRIEvent");
 #endif
 
     if (
@@ -112,9 +111,6 @@ XFree86DRIExtensionInit(void)
 				 StandardMinorOpcode))) {
 	DRIReqCode = (unsigned char)extEntry->base;
 	DRIErrorBase = extEntry->errorBase;
-#ifdef XF86DRI_EVENTS
-	RegisterResourceName(EventType, "DRIEvent");
-#endif
     }
 }
 
diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c
index 112e76c..7d6064a 100644
--- a/hw/xfree86/dri2/dri2ext.c
+++ b/hw/xfree86/dri2/dri2ext.c
@@ -42,7 +42,6 @@
 #include "scrnintstr.h"
 #include "pixmapstr.h"
 #include "extnsionst.h"
-#include "registry.h"
 #include "xf86drm.h"
 #include "xfixes.h"
 #include "dri2.h"
@@ -417,13 +416,11 @@ static int DRI2DrawableGone(pointer p, XID id)
 static void
 DRI2ExtensionInit(void)
 {
-    dri2DrawableRes = CreateNewResourceType(DRI2DrawableGone);
+    dri2DrawableRes = CreateNewResourceType(DRI2DrawableGone, "DRI2Drawable");
 
     if (!dri2DrawableRes)
 	return;
 
-    RegisterResourceName(dri2DrawableRes, "DRI2Drawable");
-
     dri2Extension = AddExtension(DRI2_NAME,
 				 DRI2NumberEvents,
 				 DRI2NumberErrors,
diff --git a/hw/xquartz/applewm.c b/hw/xquartz/applewm.c
index 26cf5d2..15c86de 100644
--- a/hw/xquartz/applewm.c
+++ b/hw/xquartz/applewm.c
@@ -37,7 +37,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "dixstruct.h"
 #include "globals.h"
 #include "extnsionst.h"
-#include "registry.h"
 #include "colormapst.h"
 #include "cursorstr.h"
 #include "scrnintstr.h"
@@ -112,8 +111,8 @@ AppleWMExtensionInit(
 {
     ExtensionEntry* extEntry;
 
-    ClientType = CreateNewResourceType(WMFreeClient);
-    EventType = CreateNewResourceType(WMFreeEvents);
+    ClientType = CreateNewResourceType(WMFreeClient, "WMClient");
+    EventType = CreateNewResourceType(WMFreeEvents, "WMEvent");
     eventResource = FakeClientID(0);
 
     if (ClientType && EventType &&
@@ -130,8 +129,6 @@ AppleWMExtensionInit(
         WMEventBase = extEntry->eventBase;
         EventSwapVector[WMEventBase] = (EventSwapPtr) SNotifyEvent;
         appleWMProcs = procsPtr;
-	RegisterResourceName(ClientType, "WMClient");
-	RegisterResourceName(EventType, "WMEvent");
     }
 }
 
diff --git a/hw/xquartz/xpr/dri.c b/hw/xquartz/xpr/dri.c
index b59f5d3..0a58b29 100644
--- a/hw/xquartz/xpr/dri.c
+++ b/hw/xquartz/xpr/dri.c
@@ -55,7 +55,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "misc.h"
 #include "dixstruct.h"
 #include "extnsionst.h"
-#include "registry.h"
 #include "colormapst.h"
 #include "cursorstr.h"
 #include "scrnintstr.h"
@@ -278,10 +277,8 @@ DRICloseScreen(ScreenPtr pScreen)
 Bool
 DRIExtensionInit(void)
 {
-    DRIDrawablePrivResType = CreateNewResourceType(DRIDrawablePrivDelete);
-
-    if (DRIDrawablePrivResType != 0)
-	RegisterResourceName(DRIDrawablePrivResType, "DRIDrawable");
+    DRIDrawablePrivResType = CreateNewResourceType(DRIDrawablePrivDelete,
+						   "DRIDrawable");
 
     return (DRIDrawablePrivResType != 0);
 }
diff --git a/hw/xwin/winwindowswm.c b/hw/xwin/winwindowswm.c
index 2383c59..3436824 100755
--- a/hw/xwin/winwindowswm.c
+++ b/hw/xwin/winwindowswm.c
@@ -34,7 +34,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "misc.h"
 #include "dixstruct.h"
 #include "extnsionst.h"
-#include "registry.h"
 #include "colormapst.h"
 #include "cursorstr.h"
 #include "scrnintstr.h"
@@ -86,8 +85,8 @@ winWindowsWMExtensionInit ()
 {
   ExtensionEntry* extEntry;
 
-  ClientType = CreateNewResourceType(WMFreeClient);
-  eventResourceType = CreateNewResourceType(WMFreeEvents);
+  ClientType = CreateNewResourceType(WMFreeClient, "WMClient");
+  eventResourceType = CreateNewResourceType(WMFreeEvents, "WMEvent");
   eventResource = FakeClientID(0);
 
   if (ClientType && eventResourceType &&
@@ -103,8 +102,6 @@ winWindowsWMExtensionInit ()
       WMErrorBase = extEntry->errorBase;
       WMEventBase = extEntry->eventBase;
       EventSwapVector[WMEventBase] = (EventSwapPtr) SNotifyEvent;
-      RegisterResourceName(ClientType, "WMClient");
-      RegisterResourceName(eventResourceType, "WMEvent");
     }
 }
 
diff --git a/include/resource.h b/include/resource.h
index 8ed4e56..7948af5 100644
--- a/include/resource.h
+++ b/include/resource.h
@@ -155,7 +155,7 @@ typedef Bool (*FindComplexResType)(
     pointer /*cdata*/);
 
 extern _X_EXPORT RESTYPE CreateNewResourceType(
-    DeleteType /*deleteFunc*/);
+    DeleteType /*deleteFunc*/, char * /*name*/);
 
 extern _X_EXPORT RESTYPE CreateNewResourceClass(void);
 
diff --git a/mi/miarc.c b/mi/miarc.c
index b4b684b..5fd1a67 100644
--- a/mi/miarc.c
+++ b/mi/miarc.c
@@ -62,7 +62,6 @@ SOFTWARE.
 #include "mifpoly.h"
 #include "mi.h"
 #include "mifillarc.h"
-#include "registry.h"
 #include <X11/Xfuncproto.h>
 
 static double miDsin(double a);
@@ -867,8 +866,7 @@ miComputeWideEllipse(
 	}
 	if (!cacheType)
 	{
-	    cacheType = CreateNewResourceType(miFreeArcCache);
-	    RegisterResourceName(cacheType, "miArcCache");
+	    cacheType = CreateNewResourceType(miFreeArcCache, "miArcCache");
 	    (void) AddResource(FakeClientID(0), cacheType, NULL);
 	}
     } else {
diff --git a/randr/randr.c b/randr/randr.c
index 7d59a68..b63a7f2 100644
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -29,8 +29,6 @@
 #include <dix-config.h>
 #endif
 
-#include "registry.h"
-
 #include "randrstr.h"
 
 /* From render.h */
@@ -338,14 +336,12 @@ RRExtensionInit (void)
     if (!AddCallback (&ClientStateCallback, RRClientCallback, 0))
 	return;
 
-    RRClientType = CreateNewResourceType(RRFreeClient);
+    RRClientType = CreateNewResourceType(RRFreeClient, "RandRClient");
     if (!RRClientType)
 	return;
-    RegisterResourceName(RRClientType, "RandRClient");
-    RREventType = CreateNewResourceType(RRFreeEvents);
+    RREventType = CreateNewResourceType(RRFreeEvents, "RandREvent");
     if (!RREventType)
 	return;
-    RegisterResourceName(RREventType, "RandREvent");
     extEntry = AddExtension (RANDR_NAME, RRNumberEvents, RRNumberErrors,
 			     ProcRRDispatch, SProcRRDispatch,
 			     NULL, StandardMinorOpcode);
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
index 0e14b36..a9eb2d2 100644
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
@@ -22,7 +22,6 @@
 
 #include "randrstr.h"
 #include "swaprep.h"
-#include "registry.h"
 
 RESTYPE	RRCrtcType;
 
@@ -633,10 +632,9 @@ RRCrtcTransformSet (RRCrtcPtr		crtc,
 Bool
 RRCrtcInit (void)
 {
-    RRCrtcType = CreateNewResourceType (RRCrtcDestroyResource);
+    RRCrtcType = CreateNewResourceType (RRCrtcDestroyResource, "CRTC");
     if (!RRCrtcType)
 	return FALSE;
-    RegisterResourceName (RRCrtcType, "CRTC");
     return TRUE;
 }
 
diff --git a/randr/rrmode.c b/randr/rrmode.c
index 9642dda..1396193 100644
--- a/randr/rrmode.c
+++ b/randr/rrmode.c
@@ -21,7 +21,6 @@
  */
 
 #include "randrstr.h"
-#include "registry.h"
 
 RESTYPE	RRModeType;
 
@@ -266,10 +265,9 @@ RRModeInit (void)
 {
     assert (num_modes == 0);
     assert (modes == NULL);
-    RRModeType = CreateNewResourceType (RRModeDestroyResource);
+    RRModeType = CreateNewResourceType (RRModeDestroyResource, "MODE");
     if (!RRModeType)
 	return FALSE;
-    RegisterResourceName (RRModeType, "MODE");
     return TRUE;
 }
 
diff --git a/randr/rroutput.c b/randr/rroutput.c
index 2eff8c1..3a1b8bb 100644
--- a/randr/rroutput.c
+++ b/randr/rroutput.c
@@ -22,7 +22,6 @@
  */
 
 #include "randrstr.h"
-#include "registry.h"
 
 RESTYPE	RROutputType;
 
@@ -422,10 +421,9 @@ RROutputDestroyResource (pointer value, XID pid)
 Bool
 RROutputInit (void)
 {
-    RROutputType = CreateNewResourceType (RROutputDestroyResource);
+    RROutputType = CreateNewResourceType (RROutputDestroyResource, "OUTPUT");
     if (!RROutputType)
 	return FALSE;
-    RegisterResourceName (RROutputType, "OUTPUT");
     return TRUE;
 }
 
diff --git a/record/record.c b/record/record.c
index 649f4b2..242544f 100644
--- a/record/record.c
+++ b/record/record.c
@@ -42,7 +42,6 @@ and Jim Haggerty of Metheus.
 #include "set.h"
 #include "swaprep.h"
 #include "inputstr.h"
-#include "registry.h"
 
 #include <stdio.h>
 #include <assert.h>
@@ -2876,10 +2875,9 @@ RecordExtensionInit(void)
 #if 0
     ExtensionEntry *extentry;
 
-    RTContext = CreateNewResourceType(RecordDeleteContext);
+    RTContext = CreateNewResourceType(RecordDeleteContext, "RecordContext");
     if (!RTContext)
 	return;
-    RegisterResourceName(RTContext, "RecordContext");
 
     ppAllContexts = NULL;
     numContexts = numEnabledContexts = numEnabledRCAPs = 0;
diff --git a/render/picture.c b/render/picture.c
index e1a2972..18bfea2 100644
--- a/render/picture.c
+++ b/render/picture.c
@@ -41,7 +41,6 @@
 #include "servermd.h"
 #include "picturestr.h"
 #include "xace.h"
-#include "registry.h"
 
 static int PictureScreenPrivateKeyIndex;
 DevPrivateKey PictureScreenPrivateKey = &PictureScreenPrivateKeyIndex;
@@ -618,19 +617,16 @@ PictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats)
     
     if (PictureGeneration != serverGeneration)
     {
-	PictureType = CreateNewResourceType (FreePicture);
+	PictureType = CreateNewResourceType (FreePicture, "PICTURE");
 	if (!PictureType)
 	    return FALSE;
-	PictFormatType = CreateNewResourceType (FreePictFormat);
+	PictFormatType = CreateNewResourceType (FreePictFormat, "PICTFORMAT");
 	if (!PictFormatType)
 	    return FALSE;
-	GlyphSetType = CreateNewResourceType (FreeGlyphSet);
+	GlyphSetType = CreateNewResourceType (FreeGlyphSet, "GLYPHSET");
 	if (!GlyphSetType)
 	    return FALSE;
 	PictureGeneration = serverGeneration;
-	RegisterResourceName (PictureType, "PICTURE");
-	RegisterResourceName (PictFormatType, "PICTFORMAT");
-	RegisterResourceName (GlyphSetType, "GLYPHSET");
     }
     if (!formats)
     {
diff --git a/render/render.c b/render/render.c
index 53bb555..77e5e03 100644
--- a/render/render.c
+++ b/render/render.c
@@ -46,7 +46,6 @@
 #include "cursorstr.h"
 #include "xace.h"
 #include "protocol-versions.h"
-#include "registry.h"
 
 #if HAVE_STDINT_H
 #include <stdint.h>
@@ -3241,10 +3240,8 @@ PanoramiXRenderInit (void)
 {
     int	    i;
     
-    XRT_PICTURE = CreateNewResourceType (XineramaDeleteResource);
-    if (XRT_PICTURE)
-	RegisterResourceName(XRT_PICTURE, "XineramaPicture");
-
+    XRT_PICTURE = CreateNewResourceType (XineramaDeleteResource,
+					 "XineramaPicture");
     for (i = 0; i < RenderNumberRequests; i++)
 	PanoramiXSaveRenderVector[i] = ProcRenderVector[i];
     /*
diff --git a/xfixes/cursor.c b/xfixes/cursor.c
index 0ef3e3a..1471a58 100644
--- a/xfixes/cursor.c
+++ b/xfixes/cursor.c
@@ -53,7 +53,6 @@
 #include "inputstr.h"
 #include "windowstr.h"
 #include "xace.h"
-#include "registry.h"
 
 static RESTYPE		CursorClientType;
 static RESTYPE		CursorHideCountType;
@@ -1085,15 +1084,12 @@ XFixesCursorInit (void)
 	cs->pCursorHideCounts = NULL;
 	SetCursorScreen (pScreen, cs);
     }
-    CursorClientType = CreateNewResourceType(CursorFreeClient);
-    if (CursorClientType)
-	RegisterResourceName(CursorClientType, "XFixesCursorClient");
-    CursorHideCountType = CreateNewResourceType(CursorFreeHideCount);
-    if (CursorHideCountType)
-	RegisterResourceName(CursorClientType, "XFixesCursorClient");
-    CursorWindowType = CreateNewResourceType(CursorFreeWindow);
-    if (CursorWindowType)
-	RegisterResourceName(CursorWindowType, "XFixesCursorWindow");
+    CursorClientType = CreateNewResourceType(CursorFreeClient,
+					     "XFixesCursorClient");
+    CursorHideCountType = CreateNewResourceType(CursorFreeHideCount,
+						"XFixesCursorHideCount");
+    CursorWindowType = CreateNewResourceType(CursorFreeWindow,
+					     "XFixesCursorWindow");
 
     if (pInvisibleCursor == NULL) {
 	pInvisibleCursor = createInvisibleCursor();
diff --git a/xfixes/region.c b/xfixes/region.c
index 3942c9d..1b4accb 100644
--- a/xfixes/region.c
+++ b/xfixes/region.c
@@ -33,7 +33,6 @@ extern int RenderErrBase;
 #include <regionstr.h>
 #include <gcstruct.h>
 #include <window.h>
-#include "registry.h"
 
 RESTYPE RegionResType;
 
@@ -64,10 +63,7 @@ XFixesRegionCopy (RegionPtr pRegion)
 Bool
 XFixesRegionInit (void)
 {
-    RegionResType = CreateNewResourceType(RegionResFree);
-
-    if (RegionResType)
-	RegisterResourceName(RegionResType, "XFixesRegion");
+    RegionResType = CreateNewResourceType(RegionResFree, "XFixesRegion");
 
     return (RegionResType != 0);
 }
diff --git a/xfixes/select.c b/xfixes/select.c
index 5a00ea8..5ba7896 100644
--- a/xfixes/select.c
+++ b/xfixes/select.c
@@ -26,7 +26,6 @@
 
 #include "xfixesint.h"
 #include "xace.h"
-#include "registry.h"
 
 static RESTYPE		SelectionClientType, SelectionWindowType;
 static Bool		SelectionCallbackRegistered = FALSE;
@@ -285,12 +284,9 @@ SelectionFreeWindow (pointer data, XID id)
 Bool
 XFixesSelectionInit (void)
 {
-    SelectionClientType = CreateNewResourceType(SelectionFreeClient);
-    if (SelectionClientType)
-	RegisterResourceName(SelectionClientType, "XFixesSelectionClient");
-    SelectionWindowType = CreateNewResourceType(SelectionFreeWindow);
-    if (SelectionWindowType)
-	RegisterResourceName(SelectionWindowType, "XFixesSelectionWindow");
-
+    SelectionClientType = CreateNewResourceType(SelectionFreeClient,
+						"XFixesSelectionClient");
+    SelectionWindowType = CreateNewResourceType(SelectionFreeWindow,
+						"XFixesSelectionWindow");
     return SelectionClientType && SelectionWindowType;
 }
diff --git a/xkb/xkb.c b/xkb/xkb.c
index f5ccd16..bfed114 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -39,7 +39,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include "xace.h"
 #include "xkb.h"
 #include "protocol-versions.h"
-#include "registry.h"
 
 #include <X11/extensions/XI.h>
 #include <X11/extensions/XKMformat.h>
@@ -6705,10 +6704,9 @@ XkbExtensionInit(void)
 {
     ExtensionEntry *extEntry;
 
-    RT_XKBCLIENT = CreateNewResourceType(XkbClientGone);
+    RT_XKBCLIENT = CreateNewResourceType(XkbClientGone, "XkbClient");
     if (!RT_XKBCLIENT)
 	return;
-    RegisterResourceName(RT_XKBCLIENT, "XkbClient");
 
     if ((extEntry = AddExtension(XkbName, XkbNumberEvents, XkbNumberErrors,
 				 ProcXkbDispatch, SProcXkbDispatch,
commit a11c58fa0c5809f918b36b84be53385cb2d8ea59
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date:   Fri Dec 11 00:58:25 2009 -0800

    Ensure all resource types created have names registered
    
    Calls RegisterResourceName to record the type name for
    use by X-Resource, XACE/SELinux/XTsol, and DTrace.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at sun.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/Xext/mbuf.c b/Xext/mbuf.c
index af31221..02354b0 100644
--- a/Xext/mbuf.c
+++ b/Xext/mbuf.c
@@ -42,6 +42,8 @@ in this Software without prior written authorization from The Open Group.
 #include "opaque.h"
 #include "sleepuntil.h"
 #include "inputstr.h"
+#include "registry.h"
+
 #include <X11/extensions/multibufconst.h>
 #include <X11/extensions/multibufproto.h>
 
@@ -481,6 +483,11 @@ MultibufferExtensionInit()
 				 ProcMultibufferDispatch, SProcMultibufferDispatch,
 				 MultibufferResetProc, StandardMinorOpcode)))
     {
+	RegisterResourceName(MultibufferDrawableResType,
+			     "MultibufferDrawable");
+	RegisterResourceName(MultibufferResType, "MultibufferBuffer");
+	RegisterResourceName(MultibuffersResType, "MultibufferWindow");
+	RegisterResourceName(OtherClientResType, "MultibufferOtherClient");
 	MultibufferEventBase = extEntry->eventBase;
 	MultibufferErrorBase = extEntry->errorBase;
 	EventSwapVector[MultibufferEventBase + MultibufferClobberNotify] = (EventSwapPtr) SClobberNotifyEvent;
diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c
index f48bd36..2a950ee 100644
--- a/Xext/panoramiX.c
+++ b/Xext/panoramiX.c
@@ -52,6 +52,7 @@ Equipment Corporation.
 #include "globals.h"
 #include "servermd.h"
 #include "resource.h"
+#include "registry.h"
 #ifdef RENDER
 #include "picturestr.h"
 #endif
@@ -513,6 +514,11 @@ void PanoramiXExtensionInit(int argc, char *argv[])
 	XRT_COLORMAP = CreateNewResourceType(XineramaDeleteResource);
 
 	if (XRT_WINDOW && XRT_PIXMAP && XRT_GC && XRT_COLORMAP) {
+	    RegisterResourceName(XRT_WINDOW, "XineramaWindow");
+	    RegisterResourceName(XRT_PIXMAP, "XineramaPixmap");
+	    RegisterResourceName(XRT_GC, "XineramaGC");
+	    RegisterResourceName(XRT_COLORMAP, "XineramaColormap");
+
 	    panoramiXGeneration = serverGeneration;
 	    success = TRUE;
 	}
diff --git a/Xext/saver.c b/Xext/saver.c
index 04e6497..5757f85 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -47,6 +47,7 @@ in this Software without prior written authorization from the X Consortium.
 #include "cursorstr.h"
 #include "colormapst.h"
 #include "xace.h"
+#include "registry.h"
 #ifdef PANORAMIX
 #include "panoramiX.h"
 #include "panoramiXsrv.h"
@@ -266,6 +267,9 @@ ScreenSaverExtensionInit(INITARGS)
 				 ProcScreenSaverDispatch, SProcScreenSaverDispatch,
 				 NULL, StandardMinorOpcode)))
     {
+	RegisterResourceName(AttrType, "SaverAttr");
+	RegisterResourceName(SaverEventType, "SaverEvent");
+	RegisterResourceName(SuspendType, "SaverSuspend");
 	ScreenSaverEventBase = extEntry->eventBase;
 	EventSwapVector[ScreenSaverEventBase] = (EventSwapPtr) SScreenSaverNotifyEvent;
     }
diff --git a/Xext/shape.c b/Xext/shape.c
index 700fe76..247f21b 100644
--- a/Xext/shape.c
+++ b/Xext/shape.c
@@ -40,6 +40,7 @@ in this Software without prior written authorization from The Open Group.
 #include "extnsionst.h"
 #include "dixstruct.h"
 #include "resource.h"
+#include "registry.h"
 #include "opaque.h"
 #include <X11/extensions/shapeproto.h>
 #include "regionstr.h"
@@ -134,6 +135,8 @@ ShapeExtensionInit(void)
 				 ProcShapeDispatch, SProcShapeDispatch,
 				 NULL, StandardMinorOpcode)))
     {
+	RegisterResourceName(ClientType, "ShapeClient");
+	RegisterResourceName(ShapeEventType, "ShapeEvent");
 	ShapeEventBase = extEntry->eventBase;
 	EventSwapVector[ShapeEventBase] = (EventSwapPtr) SShapeNotifyEvent;
     }
diff --git a/Xext/shm.c b/Xext/shm.c
index 9e462f2..589155d 100644
--- a/Xext/shm.c
+++ b/Xext/shm.c
@@ -52,6 +52,7 @@ in this Software without prior written authorization from The Open Group.
 #include "servermd.h"
 #include "shmint.h"
 #include "xace.h"
+#include "registry.h"
 #include <X11/extensions/shmproto.h>
 #include <X11/Xfuncproto.h>
 #include "protocol-versions.h"
@@ -283,6 +284,7 @@ ShmExtensionInit(INITARGS)
 				 ProcShmDispatch, SProcShmDispatch,
 				 ShmResetProc, StandardMinorOpcode)))
     {
+	RegisterResourceName(ShmSegType, "ShmSeg");
 	ShmReqCode = (unsigned char)extEntry->base;
 	ShmCompletionCode = extEntry->eventBase;
 	BadShmSegCode = extEntry->errorBase;
diff --git a/Xext/sleepuntil.c b/Xext/sleepuntil.c
index 2616a5e..6b5964e 100644
--- a/Xext/sleepuntil.c
+++ b/Xext/sleepuntil.c
@@ -39,6 +39,7 @@ in this Software without prior written authorization from The Open Group.
 #include "dixstruct.h"
 #include "pixmapstr.h"
 #include "scrnintstr.h"
+#include "registry.h"
 
 typedef struct _Sertafied {
     struct _Sertafied	*next;
@@ -90,6 +91,7 @@ ClientSleepUntil (ClientPtr client,
 	SertafiedResType = CreateNewResourceType (SertafiedDelete);
 	if (!SertafiedResType)
 	    return FALSE;
+	RegisterResourceName(SertafiedResType, "ClientSleep");
 	SertafiedGeneration = serverGeneration;
 	BlockHandlerRegistered = FALSE;
     }
diff --git a/Xext/sync.c b/Xext/sync.c
index d8a2b15..b3bba17 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -64,6 +64,7 @@ PERFORMANCE OF THIS SOFTWARE.
 #include "extnsionst.h"
 #include "dixstruct.h"
 #include "resource.h"
+#include "registry.h"
 #include "opaque.h"
 #include <X11/extensions/syncproto.h>
 #include "syncsrv.h"
@@ -878,6 +879,7 @@ SyncCreateSystemCounter(
 	{
 	    return NULL;
 	}
+	RegisterResourceName(RTCounter, "SyncCounter");
     }
 
     pCounter = SyncCreateCounter(NULL, FakeClientID(0), initial);
@@ -2133,6 +2135,10 @@ SyncExtensionInit(void)
 	return;
     }
 
+    RegisterResourceName(RTCounter, "SyncCounter");
+    RegisterResourceName(RTAlarm, "SyncAlarm");
+    RegisterResourceName(RTAwait, "SyncAwait");
+    RegisterResourceName(RTAlarmClient, "SyncAlarmClient");
     SyncEventBase = extEntry->eventBase;
     SyncErrorBase = extEntry->errorBase;
     EventSwapVector[SyncEventBase + XSyncCounterNotify] = (EventSwapPtr) SCounterNotifyEvent;
diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c
index 1f3fc0f..e674dfd 100644
--- a/Xext/xvdisp.c
+++ b/Xext/xvdisp.c
@@ -36,6 +36,7 @@ SOFTWARE.
 #include "gcstruct.h"
 #include "dixstruct.h"
 #include "resource.h"
+#include "registry.h"
 #include "opaque.h"
 
 #include <X11/extensions/Xv.h>
@@ -1867,6 +1868,8 @@ void XineramifyXv(void)
 
    if (!xvsp0 || !XvXRTPort) return;
 
+   RegisterResourceName(XvXRTPort, "XvXRTPort");
+
    for(i = 0; i < xvsp0->nAdaptors; i++) {
       refAdapt = xvsp0->pAdaptors + i;
 
diff --git a/Xext/xvmain.c b/Xext/xvmain.c
index 7c8a3c3..c33c209 100644
--- a/Xext/xvmain.c
+++ b/Xext/xvmain.c
@@ -90,6 +90,7 @@ SOFTWARE.
 #include "extnsionst.h"
 #include "dixstruct.h"
 #include "resource.h"
+#include "registry.h"
 #include "opaque.h"
 #include "input.h"
 
@@ -213,36 +214,42 @@ CreateResourceTypes(void)
       ErrorF("CreateResourceTypes: failed to allocate port resource.\n");
       return FALSE;
     }
-  
+  RegisterResourceName(XvRTPort, "XvRTPort");
+
   if (!(XvRTGrab = CreateNewResourceType(XvdiDestroyGrab)))
     {
       ErrorF("CreateResourceTypes: failed to allocate grab resource.\n");
       return FALSE;
     }
-  
+  RegisterResourceName(XvRTGrab, "XvRTGrab");
+
   if (!(XvRTEncoding = CreateNewResourceType(XvdiDestroyEncoding)))
     {
       ErrorF("CreateResourceTypes: failed to allocate encoding resource.\n");
       return FALSE;
     }
-  
+  RegisterResourceName(XvRTEncoding, "XvRTEncoding");
+
   if (!(XvRTVideoNotify = CreateNewResourceType(XvdiDestroyVideoNotify)))
     {
       ErrorF("CreateResourceTypes: failed to allocate video notify resource.\n");
       return FALSE;
     }
-  
+  RegisterResourceName(XvRTVideoNotify, "XvRTVideoNotify");
+
   if (!(XvRTVideoNotifyList = CreateNewResourceType(XvdiDestroyVideoNotifyList)))
     {
       ErrorF("CreateResourceTypes: failed to allocate video notify list resource.\n");
       return FALSE;
     }
+  RegisterResourceName(XvRTVideoNotifyList, "XvRTVideoNotifyList");
 
   if (!(XvRTPortNotify = CreateNewResourceType(XvdiDestroyPortNotify)))
     {
       ErrorF("CreateResourceTypes: failed to allocate port notify resource.\n");
       return FALSE;
     }
+  RegisterResourceName(XvRTPortNotify, "XvRTPortNotify");
 
   return TRUE;
 
diff --git a/Xext/xvmc.c b/Xext/xvmc.c
index c17a4b1..0a233b1 100644
--- a/Xext/xvmc.c
+++ b/Xext/xvmc.c
@@ -11,6 +11,7 @@
 #include "os.h"
 #include "dixstruct.h"
 #include "resource.h"
+#include "registry.h"
 #include "scrnintstr.h"
 #include "extnsionst.h"
 #include "servermd.h"
@@ -676,12 +677,15 @@ XvMCExtensionInit(void)
 
    if(!(XvMCRTContext = CreateNewResourceType(XvMCDestroyContextRes)))
 	return;
+   RegisterResourceName(XvMCRTContext, "XvMCRTContext");
 
    if(!(XvMCRTSurface = CreateNewResourceType(XvMCDestroySurfaceRes)))
 	return;
+   RegisterResourceName(XvMCRTSurface, "XvMCRTSurface");
 
    if(!(XvMCRTSubpicture = CreateNewResourceType(XvMCDestroySubpictureRes)))
 	return;
+   RegisterResourceName(XvMCRTSubpicture, "XvMCRTSubpicture");
 
    extEntry = AddExtension(XvMCName, XvMCNumEvents, XvMCNumErrors, 
                               ProcXvMCDispatch, SProcXvMCDispatch,
diff --git a/composite/compext.c b/composite/compext.c
index b5afdd3..74f0309 100644
--- a/composite/compext.c
+++ b/composite/compext.c
@@ -47,6 +47,7 @@
 
 #include "compint.h"
 #include "xace.h"
+#include "registry.h"
 #include "protocol-versions.h"
 
 static CARD8	CompositeReqCode;
@@ -549,14 +550,19 @@ CompositeExtensionInit (void)
     CompositeClientWindowType = CreateNewResourceType (FreeCompositeClientWindow);
     if (!CompositeClientWindowType)
 	return;
+    RegisterResourceName(CompositeClientWindowType, "CompositeClientWindow");
 
     CompositeClientSubwindowsType = CreateNewResourceType (FreeCompositeClientSubwindows);
     if (!CompositeClientSubwindowsType)
 	return;
+    RegisterResourceName(CompositeClientSubwindowsType,
+			 "CompositeClientSubwindows");
 
     CompositeClientOverlayType = CreateNewResourceType (FreeCompositeClientOverlay);
     if (!CompositeClientOverlayType)
 	return;
+    RegisterResourceName(CompositeClientOverlayType,
+			 "CompositeClientOverlay");
 
     if (!dixRequestPrivate(CompositeClientPrivateKey,
 			   sizeof(CompositeClientRec)))
diff --git a/damageext/damageext.c b/damageext/damageext.c
index 449c2fd..044e8ef 100644
--- a/damageext/damageext.c
+++ b/damageext/damageext.c
@@ -24,6 +24,7 @@
 #include <dix-config.h>
 #endif
 
+#include "registry.h"
 #include "damageextint.h"
 #include "protocol-versions.h"
 
@@ -500,10 +501,12 @@ DamageExtensionInit(void)
     DamageExtType = CreateNewResourceType (FreeDamageExt);
     if (!DamageExtType)
 	return;
+    RegisterResourceName(DamageExtType, "DamageExt");
 
     DamageExtWinType = CreateNewResourceType (FreeDamageExtWin);
     if (!DamageExtWinType)
 	return;
+    RegisterResourceName(DamageExtWinType, "DamageExtWin");
 
     if (!dixRequestPrivate(DamageClientPrivateKey, sizeof (DamageClientRec)))
 	return;
diff --git a/dbe/dbe.c b/dbe/dbe.c
index 8d2a343..7af8736 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -54,6 +54,7 @@
 #include "dbestruct.h"
 #include "midbe.h"
 #include "xace.h"
+#include "registry.h"
 
 /* GLOBALS */
 
@@ -1577,11 +1578,13 @@ DbeExtensionInit(void)
     if (!dbeDrawableResType)
 	return;
     dbeDrawableResType |= RC_DRAWABLE;
+    RegisterResourceName(dbeDrawableResType, "dbeDrawable");
 
     dbeWindowPrivResType =
         CreateNewResourceType(DbeWindowPrivDelete);
     if (!dbeWindowPrivResType)
 	return;
+    RegisterResourceName(dbeWindowPrivResType, "dbeWindow");
 
     if (!dixRegisterPrivateOffset(dbeDrawableResType,
 				  offsetof(PixmapRec, devPrivates)))
diff --git a/hw/dmx/glxProxy/glxext.c b/hw/dmx/glxProxy/glxext.c
index 0c39068..c00ae6e 100644
--- a/hw/dmx/glxProxy/glxext.c
+++ b/hw/dmx/glxProxy/glxext.c
@@ -44,6 +44,7 @@
 #include "glxvisuals.h"
 #include "micmap.h"
 #include "glxswap.h"
+#include "registry.h"
 
 /*
 ** Stubs to satisfy miinitext.c references.
@@ -303,6 +304,12 @@ void GlxExtensionInit(void)
 	!__glXWindowRes || !__glXPbufferRes)
 	return;
 
+    RegisterResourceName(__glXContextRes, "GLXContext");
+    RegisterResourceName(__glXClientRes, "GLXClient");
+    RegisterResourceName(__glXPixmapRes, "GLXPixmap");
+    RegisterResourceName(__glXWindowRes, "GLXWindow");
+    RegisterResourceName(__glXPbufferRes, "GLXPbuffer");
+
     /*
     ** Add extension to server extensions.
     */
diff --git a/hw/kdrive/ephyr/ephyrdriext.c b/hw/kdrive/ephyr/ephyrdriext.c
index ba1733b..a2839ea 100644
--- a/hw/kdrive/ephyr/ephyrdriext.c
+++ b/hw/kdrive/ephyr/ephyrdriext.c
@@ -43,6 +43,7 @@
 #include "privates.h"
 #include "dixstruct.h"
 #include "extnsionst.h"
+#include "registry.h"
 #include "colormapst.h"
 #include "cursorstr.h"
 #include "scrnintstr.h"
@@ -145,6 +146,7 @@ ephyrDRIExtensionInit (ScreenPtr a_screen)
         EPHYR_LOG_ERROR ("failed to register DRI event resource type\n") ;
         goto out ;
     }
+    RegisterResourceName(EventType, "DRIEvents");
 #endif
 
     if ((extEntry = AddExtension(XF86DRINAME,
diff --git a/hw/xfree86/dixmods/extmod/xf86vmode.c b/hw/xfree86/dixmods/extmod/xf86vmode.c
index 4920115..c35a83f 100644
--- a/hw/xfree86/dixmods/extmod/xf86vmode.c
+++ b/hw/xfree86/dixmods/extmod/xf86vmode.c
@@ -39,6 +39,7 @@ from Kaleb S. KEITHLEY
 #include "misc.h"
 #include "dixstruct.h"
 #include "extnsionst.h"
+#include "registry.h"
 #include "scrnintstr.h"
 #include "servermd.h"
 #include <X11/extensions/xf86vmproto.h>
@@ -201,6 +202,7 @@ XFree86VidModeExtensionInit(void)
 #endif
 	VidModeErrorBase = extEntry->errorBase;
 #ifdef XF86VIDMODE_EVENTS
+	RegisterResourceName(EventType, "VidModeEvent");
 	XF86VidModeEventBase = extEntry->eventBase;
 	EventSwapVector[XF86VidModeEventBase] = (EventSwapPtr)SXF86VidModeNotifyEvent;
 #endif
diff --git a/hw/xfree86/dri/dri.c b/hw/xfree86/dri/dri.c
index 1a6cb4d..be0604e 100644
--- a/hw/xfree86/dri/dri.c
+++ b/hw/xfree86/dri/dri.c
@@ -51,6 +51,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "misc.h"
 #include "dixstruct.h"
 #include "extnsionst.h"
+#include "registry.h"
 #include "colormapst.h"
 #include "cursorstr.h"
 #include "scrnintstr.h"
@@ -794,6 +795,8 @@ DRIExtensionInit(void)
 
     if (!DRIDrawablePrivResType || !DRIContextPrivResType)
 	return FALSE;
+    RegisterResourceName(DRIDrawablePrivResType, "DRIDrawable");
+    RegisterResourceName(DRIContextPrivResType, "DRIContext");
 
     RegisterBlockAndWakeupHandlers(DRIBlockHandler, DRIWakeupHandler, NULL);
 
diff --git a/hw/xfree86/dri/xf86dri.c b/hw/xfree86/dri/xf86dri.c
index 035057b..2da9767 100644
--- a/hw/xfree86/dri/xf86dri.c
+++ b/hw/xfree86/dri/xf86dri.c
@@ -47,6 +47,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "misc.h"
 #include "dixstruct.h"
 #include "extnsionst.h"
+#include "registry.h"
 #include "colormapst.h"
 #include "cursorstr.h"
 #include "scrnintstr.h"
@@ -111,6 +112,9 @@ XFree86DRIExtensionInit(void)
 				 StandardMinorOpcode))) {
 	DRIReqCode = (unsigned char)extEntry->base;
 	DRIErrorBase = extEntry->errorBase;
+#ifdef XF86DRI_EVENTS
+	RegisterResourceName(EventType, "DRIEvent");
+#endif
     }
 }
 
diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c
index 8acf267..112e76c 100644
--- a/hw/xfree86/dri2/dri2ext.c
+++ b/hw/xfree86/dri2/dri2ext.c
@@ -42,6 +42,7 @@
 #include "scrnintstr.h"
 #include "pixmapstr.h"
 #include "extnsionst.h"
+#include "registry.h"
 #include "xf86drm.h"
 #include "xfixes.h"
 #include "dri2.h"
@@ -421,6 +422,8 @@ DRI2ExtensionInit(void)
     if (!dri2DrawableRes)
 	return;
 
+    RegisterResourceName(dri2DrawableRes, "DRI2Drawable");
+
     dri2Extension = AddExtension(DRI2_NAME,
 				 DRI2NumberEvents,
 				 DRI2NumberErrors,
diff --git a/hw/xquartz/applewm.c b/hw/xquartz/applewm.c
index d1a6175..26cf5d2 100644
--- a/hw/xquartz/applewm.c
+++ b/hw/xquartz/applewm.c
@@ -37,6 +37,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "dixstruct.h"
 #include "globals.h"
 #include "extnsionst.h"
+#include "registry.h"
 #include "colormapst.h"
 #include "cursorstr.h"
 #include "scrnintstr.h"
@@ -129,6 +130,8 @@ AppleWMExtensionInit(
         WMEventBase = extEntry->eventBase;
         EventSwapVector[WMEventBase] = (EventSwapPtr) SNotifyEvent;
         appleWMProcs = procsPtr;
+	RegisterResourceName(ClientType, "WMClient");
+	RegisterResourceName(EventType, "WMEvent");
     }
 }
 
diff --git a/hw/xquartz/xpr/dri.c b/hw/xquartz/xpr/dri.c
index a9c0f22..b59f5d3 100644
--- a/hw/xquartz/xpr/dri.c
+++ b/hw/xquartz/xpr/dri.c
@@ -55,6 +55,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "misc.h"
 #include "dixstruct.h"
 #include "extnsionst.h"
+#include "registry.h"
 #include "colormapst.h"
 #include "cursorstr.h"
 #include "scrnintstr.h"
@@ -279,6 +280,9 @@ DRIExtensionInit(void)
 {
     DRIDrawablePrivResType = CreateNewResourceType(DRIDrawablePrivDelete);
 
+    if (DRIDrawablePrivResType != 0)
+	RegisterResourceName(DRIDrawablePrivResType, "DRIDrawable");
+
     return (DRIDrawablePrivResType != 0);
 }
 
diff --git a/hw/xwin/winwindowswm.c b/hw/xwin/winwindowswm.c
index 3d4d8c2..2383c59 100755
--- a/hw/xwin/winwindowswm.c
+++ b/hw/xwin/winwindowswm.c
@@ -34,6 +34,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "misc.h"
 #include "dixstruct.h"
 #include "extnsionst.h"
+#include "registry.h"
 #include "colormapst.h"
 #include "cursorstr.h"
 #include "scrnintstr.h"
@@ -102,6 +103,8 @@ winWindowsWMExtensionInit ()
       WMErrorBase = extEntry->errorBase;
       WMEventBase = extEntry->eventBase;
       EventSwapVector[WMEventBase] = (EventSwapPtr) SNotifyEvent;
+      RegisterResourceName(ClientType, "WMClient");
+      RegisterResourceName(eventResourceType, "WMEvent");
     }
 }
 
diff --git a/mi/miarc.c b/mi/miarc.c
index a3e2580..b4b684b 100644
--- a/mi/miarc.c
+++ b/mi/miarc.c
@@ -62,6 +62,7 @@ SOFTWARE.
 #include "mifpoly.h"
 #include "mi.h"
 #include "mifillarc.h"
+#include "registry.h"
 #include <X11/Xfuncproto.h>
 
 static double miDsin(double a);
@@ -867,6 +868,7 @@ miComputeWideEllipse(
 	if (!cacheType)
 	{
 	    cacheType = CreateNewResourceType(miFreeArcCache);
+	    RegisterResourceName(cacheType, "miArcCache");
 	    (void) AddResource(FakeClientID(0), cacheType, NULL);
 	}
     } else {
diff --git a/randr/randr.c b/randr/randr.c
index 5944564..7d59a68 100644
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -29,6 +29,8 @@
 #include <dix-config.h>
 #endif
 
+#include "registry.h"
+
 #include "randrstr.h"
 
 /* From render.h */
@@ -339,9 +341,11 @@ RRExtensionInit (void)
     RRClientType = CreateNewResourceType(RRFreeClient);
     if (!RRClientType)
 	return;
+    RegisterResourceName(RRClientType, "RandRClient");
     RREventType = CreateNewResourceType(RRFreeEvents);
     if (!RREventType)
 	return;
+    RegisterResourceName(RREventType, "RandREvent");
     extEntry = AddExtension (RANDR_NAME, RRNumberEvents, RRNumberErrors,
 			     ProcRRDispatch, SProcRRDispatch,
 			     NULL, StandardMinorOpcode);
diff --git a/record/record.c b/record/record.c
index b94b4ae..649f4b2 100644
--- a/record/record.c
+++ b/record/record.c
@@ -42,6 +42,7 @@ and Jim Haggerty of Metheus.
 #include "set.h"
 #include "swaprep.h"
 #include "inputstr.h"
+#include "registry.h"
 
 #include <stdio.h>
 #include <assert.h>
@@ -2878,6 +2879,7 @@ RecordExtensionInit(void)
     RTContext = CreateNewResourceType(RecordDeleteContext);
     if (!RTContext)
 	return;
+    RegisterResourceName(RTContext, "RecordContext");
 
     ppAllContexts = NULL;
     numContexts = numEnabledContexts = numEnabledRCAPs = 0;
diff --git a/render/render.c b/render/render.c
index a32d797..53bb555 100644
--- a/render/render.c
+++ b/render/render.c
@@ -46,6 +46,7 @@
 #include "cursorstr.h"
 #include "xace.h"
 #include "protocol-versions.h"
+#include "registry.h"
 
 #if HAVE_STDINT_H
 #include <stdint.h>
@@ -3241,6 +3242,9 @@ PanoramiXRenderInit (void)
     int	    i;
     
     XRT_PICTURE = CreateNewResourceType (XineramaDeleteResource);
+    if (XRT_PICTURE)
+	RegisterResourceName(XRT_PICTURE, "XineramaPicture");
+
     for (i = 0; i < RenderNumberRequests; i++)
 	PanoramiXSaveRenderVector[i] = ProcRenderVector[i];
     /*
diff --git a/xfixes/cursor.c b/xfixes/cursor.c
index c3e1e35..0ef3e3a 100644
--- a/xfixes/cursor.c
+++ b/xfixes/cursor.c
@@ -53,6 +53,7 @@
 #include "inputstr.h"
 #include "windowstr.h"
 #include "xace.h"
+#include "registry.h"
 
 static RESTYPE		CursorClientType;
 static RESTYPE		CursorHideCountType;
@@ -1085,8 +1086,14 @@ XFixesCursorInit (void)
 	SetCursorScreen (pScreen, cs);
     }
     CursorClientType = CreateNewResourceType(CursorFreeClient);
+    if (CursorClientType)
+	RegisterResourceName(CursorClientType, "XFixesCursorClient");
     CursorHideCountType = CreateNewResourceType(CursorFreeHideCount);
+    if (CursorHideCountType)
+	RegisterResourceName(CursorClientType, "XFixesCursorClient");
     CursorWindowType = CreateNewResourceType(CursorFreeWindow);
+    if (CursorWindowType)
+	RegisterResourceName(CursorWindowType, "XFixesCursorWindow");
 
     if (pInvisibleCursor == NULL) {
 	pInvisibleCursor = createInvisibleCursor();
diff --git a/xfixes/region.c b/xfixes/region.c
index 59d8cee..3942c9d 100644
--- a/xfixes/region.c
+++ b/xfixes/region.c
@@ -33,6 +33,7 @@ extern int RenderErrBase;
 #include <regionstr.h>
 #include <gcstruct.h>
 #include <window.h>
+#include "registry.h"
 
 RESTYPE RegionResType;
 
@@ -65,6 +66,9 @@ XFixesRegionInit (void)
 {
     RegionResType = CreateNewResourceType(RegionResFree);
 
+    if (RegionResType)
+	RegisterResourceName(RegionResType, "XFixesRegion");
+
     return (RegionResType != 0);
 }
 
diff --git a/xfixes/select.c b/xfixes/select.c
index a5811bd..5a00ea8 100644
--- a/xfixes/select.c
+++ b/xfixes/select.c
@@ -26,6 +26,7 @@
 
 #include "xfixesint.h"
 #include "xace.h"
+#include "registry.h"
 
 static RESTYPE		SelectionClientType, SelectionWindowType;
 static Bool		SelectionCallbackRegistered = FALSE;
@@ -285,6 +286,11 @@ Bool
 XFixesSelectionInit (void)
 {
     SelectionClientType = CreateNewResourceType(SelectionFreeClient);
+    if (SelectionClientType)
+	RegisterResourceName(SelectionClientType, "XFixesSelectionClient");
     SelectionWindowType = CreateNewResourceType(SelectionFreeWindow);
+    if (SelectionWindowType)
+	RegisterResourceName(SelectionWindowType, "XFixesSelectionWindow");
+
     return SelectionClientType && SelectionWindowType;
 }
diff --git a/xkb/xkb.c b/xkb/xkb.c
index c490f8b..f5ccd16 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -39,6 +39,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include "xace.h"
 #include "xkb.h"
 #include "protocol-versions.h"
+#include "registry.h"
 
 #include <X11/extensions/XI.h>
 #include <X11/extensions/XKMformat.h>
@@ -6707,6 +6708,7 @@ XkbExtensionInit(void)
     RT_XKBCLIENT = CreateNewResourceType(XkbClientGone);
     if (!RT_XKBCLIENT)
 	return;
+    RegisterResourceName(RT_XKBCLIENT, "XkbClient");
 
     if ((extEntry = AddExtension(XkbName, XkbNumberEvents, XkbNumberErrors,
 				 ProcXkbDispatch, SProcXkbDispatch,
commit eb750f8b5e14751d4c40b50499baec5d2ba79db9
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date:   Fri Dec 11 00:46:22 2009 -0800

    Check for failures from CreateNewResourceType
    
    Make sure to check return value before setting bitmask flags.
    For most calls, just fails to init the extension.   Since Xinput
    already calls FatalError() on initialization failure, so does
    failure to allocate Xinput's resource type.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith at sun.com>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/Xext/mbuf.c b/Xext/mbuf.c
index 1f24974..af31221 100644
--- a/Xext/mbuf.c
+++ b/Xext/mbuf.c
@@ -467,7 +467,9 @@ MultibufferExtensionInit()
      * create the resource types
      */
     MultibufferDrawableResType =
-	CreateNewResourceType(MultibufferDrawableDelete)|RC_DRAWABLE;
+	CreateNewResourceType(MultibufferDrawableDelete);
+    if (MultiBufferDrawableResType)
+	MultibufferDrawableResType |= RC_DRAWABLE;
     MultibufferResType = CreateNewResourceType(MultibufferDelete);
     MultibuffersResType = CreateNewResourceType(MultibuffersDelete);
     OtherClientResType = CreateNewResourceType(OtherClientDelete);
diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c
index 4b7b07e..f48bd36 100644
--- a/Xext/panoramiX.c
+++ b/Xext/panoramiX.c
@@ -503,15 +503,19 @@ void PanoramiXExtensionInit(int argc, char *argv[])
 	}
 
 	XRC_DRAWABLE = CreateNewResourceClass();
-	XRT_WINDOW = CreateNewResourceType(XineramaDeleteResource) | 
-						XRC_DRAWABLE;
-	XRT_PIXMAP = CreateNewResourceType(XineramaDeleteResource) | 
-						XRC_DRAWABLE;
+	XRT_WINDOW = CreateNewResourceType(XineramaDeleteResource);
+	if (XRT_WINDOW)
+	    XRT_WINDOW |= XRC_DRAWABLE;
+	XRT_PIXMAP = CreateNewResourceType(XineramaDeleteResource);
+	if (XRT_PIXMAP)
+	    XRT_PIXMAP |= XRC_DRAWABLE;
 	XRT_GC = CreateNewResourceType(XineramaDeleteResource);
 	XRT_COLORMAP = CreateNewResourceType(XineramaDeleteResource);
 
-	panoramiXGeneration = serverGeneration;
-	success = TRUE;
+	if (XRT_WINDOW && XRT_PIXMAP && XRT_GC && XRT_COLORMAP) {
+	    panoramiXGeneration = serverGeneration;
+	    success = TRUE;
+	}
     }
 
     if (!success) {
diff --git a/Xext/sync.c b/Xext/sync.c
index 667f8ab..d8a2b15 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -2113,8 +2113,12 @@ SyncExtensionInit(void)
 	RTCounter = CreateNewResourceType(FreeCounter);
     }
     RTAlarm = CreateNewResourceType(FreeAlarm);
-    RTAwait = CreateNewResourceType(FreeAwait)|RC_NEVERRETAIN;
-    RTAlarmClient = CreateNewResourceType(FreeAlarmClient)|RC_NEVERRETAIN;
+    RTAwait = CreateNewResourceType(FreeAwait);
+    if (RTAwait)
+	RTAwait |= RC_NEVERRETAIN;
+    RTAlarmClient = CreateNewResourceType(FreeAlarmClient);
+    if (RTAlarmClient)
+	RTAlarmClient |= RC_NEVERRETAIN;
 
     if (RTCounter == 0 || RTAwait == 0 || RTAlarm == 0 ||
 	RTAlarmClient == 0 ||
diff --git a/Xext/xvdisp.c b/Xext/xvdisp.c
index 5229916..1f3fc0f 100644
--- a/Xext/xvdisp.c
+++ b/Xext/xvdisp.c
@@ -1865,8 +1865,8 @@ void XineramifyXv(void)
 
    XvXRTPort = CreateNewResourceType(XineramaDeleteResource);
 
-   if(!xvsp0) return;
-   
+   if (!xvsp0 || !XvXRTPort) return;
+
    for(i = 0; i < xvsp0->nAdaptors; i++) {
       refAdapt = xvsp0->pAdaptors + i;
 
diff --git a/Xi/extinit.c b/Xi/extinit.c
index 0c12919..372f77f 100644
--- a/Xi/extinit.c
+++ b/Xi/extinit.c
@@ -1270,6 +1270,8 @@ XInputExtensionInit(void)
 	XIVersion = thisversion;
 	MakeDeviceTypeAtoms();
 	RT_INPUTCLIENT = CreateNewResourceType((DeleteType) InputClientGone);
+	if (!RT_INPUTCLIENT)
+	    FatalError("Failed to add resource type for XI.\n");
 	RegisterResourceName(RT_INPUTCLIENT, "INPUTCLIENT");
 	FixExtensionEvents(extEntry);
 	ReplySwapVector[IReqCode] = (ReplySwapPtr) SReplyIDispatch;
diff --git a/dbe/dbe.c b/dbe/dbe.c
index a4f853d..8d2a343 100644
--- a/dbe/dbe.c
+++ b/dbe/dbe.c
@@ -1573,9 +1573,16 @@ DbeExtensionInit(void)
 
     /* Create the resource types. */
     dbeDrawableResType =
-        CreateNewResourceType(DbeDrawableDelete) | RC_DRAWABLE;
+        CreateNewResourceType(DbeDrawableDelete);
+    if (!dbeDrawableResType)
+	return;
+    dbeDrawableResType |= RC_DRAWABLE;
+
     dbeWindowPrivResType =
         CreateNewResourceType(DbeWindowPrivDelete);
+    if (!dbeWindowPrivResType)
+	return;
+
     if (!dixRegisterPrivateOffset(dbeDrawableResType,
 				  offsetof(PixmapRec, devPrivates)))
 	return;
diff --git a/glx/glxext.c b/glx/glxext.c
index 9f9c0ed..546d968 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -347,6 +347,9 @@ void GlxExtensionInit(void)
     __glXDrawableRes = CreateNewResourceType((DeleteType)DrawableGone);
     __glXSwapBarrierRes = CreateNewResourceType((DeleteType)SwapBarrierGone);
 
+    if (!__glXContextRes || !__glXDrawableRes || !__glXSwapBarrierRes)
+	return;
+
     RegisterResourceName(__glXContextRes, "GLXContext");
     RegisterResourceName(__glXDrawableRes, "GLXDrawable");
     RegisterResourceName(__glXSwapBarrierRes, "GLXSwapBarrier");
diff --git a/hw/dmx/glxProxy/glxext.c b/hw/dmx/glxProxy/glxext.c
index b30d144..0c39068 100644
--- a/hw/dmx/glxProxy/glxext.c
+++ b/hw/dmx/glxProxy/glxext.c
@@ -299,6 +299,10 @@ void GlxExtensionInit(void)
     __glXWindowRes = CreateNewResourceType((DeleteType)WindowGone);
     __glXPbufferRes = CreateNewResourceType((DeleteType)PbufferGone);
 
+    if (!__glXContextRes || !__glXClientRes || !__glXPixmapRes ||
+	!__glXWindowRes || !__glXPbufferRes)
+	return;
+
     /*
     ** Add extension to server extensions.
     */
diff --git a/hw/kdrive/ephyr/ephyrdriext.c b/hw/kdrive/ephyr/ephyrdriext.c
index 231b098..ba1733b 100644
--- a/hw/kdrive/ephyr/ephyrdriext.c
+++ b/hw/kdrive/ephyr/ephyrdriext.c
@@ -141,6 +141,10 @@ ephyrDRIExtensionInit (ScreenPtr a_screen)
 
 #ifdef XF86DRI_EVENTS
     EventType = CreateNewResourceType (XF86DRIFreeEvents);
+    if (!EventType) {
+        EPHYR_LOG_ERROR ("failed to register DRI event resource type\n") ;
+        goto out ;
+    }
 #endif
 
     if ((extEntry = AddExtension(XF86DRINAME,
diff --git a/hw/xfree86/dri/dri.c b/hw/xfree86/dri/dri.c
index 0de9be6..1a6cb4d 100644
--- a/hw/xfree86/dri/dri.c
+++ b/hw/xfree86/dri/dri.c
@@ -792,6 +792,9 @@ DRIExtensionInit(void)
     DRIDrawablePrivResType = CreateNewResourceType(DRIDrawablePrivDelete);
     DRIContextPrivResType = CreateNewResourceType(DRIContextPrivDelete);
 
+    if (!DRIDrawablePrivResType || !DRIContextPrivResType)
+	return FALSE;
+
     RegisterBlockAndWakeupHandlers(DRIBlockHandler, DRIWakeupHandler, NULL);
 
     return TRUE;
diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c
index dc07b47..8acf267 100644
--- a/hw/xfree86/dri2/dri2ext.c
+++ b/hw/xfree86/dri2/dri2ext.c
@@ -416,6 +416,11 @@ static int DRI2DrawableGone(pointer p, XID id)
 static void
 DRI2ExtensionInit(void)
 {
+    dri2DrawableRes = CreateNewResourceType(DRI2DrawableGone);
+
+    if (!dri2DrawableRes)
+	return;
+
     dri2Extension = AddExtension(DRI2_NAME,
 				 DRI2NumberEvents,
 				 DRI2NumberErrors,
@@ -424,7 +429,6 @@ DRI2ExtensionInit(void)
 				 NULL,
 				 StandardMinorOpcode);
 
-    dri2DrawableRes = CreateNewResourceType(DRI2DrawableGone);
 }
 
 extern Bool noDRI2Extension;
diff --git a/hw/xquartz/xpr/dri.c b/hw/xquartz/xpr/dri.c
index f570bee..a9c0f22 100644
--- a/hw/xquartz/xpr/dri.c
+++ b/hw/xquartz/xpr/dri.c
@@ -279,7 +279,7 @@ DRIExtensionInit(void)
 {
     DRIDrawablePrivResType = CreateNewResourceType(DRIDrawablePrivDelete);
 
-    return TRUE;
+    return (DRIDrawablePrivResType != 0);
 }
 
 void
diff --git a/xfixes/cursor.c b/xfixes/cursor.c
index 60d4222..c3e1e35 100644
--- a/xfixes/cursor.c
+++ b/xfixes/cursor.c
@@ -1095,6 +1095,6 @@ XFixesCursorInit (void)
 	}
     }
 
-    return CursorClientType && CursorWindowType;
+    return CursorClientType && CursorHideCountType && CursorWindowType;
 }
 
diff --git a/xfixes/region.c b/xfixes/region.c
index 966eda0..59d8cee 100644
--- a/xfixes/region.c
+++ b/xfixes/region.c
@@ -64,7 +64,8 @@ Bool
 XFixesRegionInit (void)
 {
     RegionResType = CreateNewResourceType(RegionResFree);
-    return TRUE;
+
+    return (RegionResType != 0);
 }
 
 int
diff --git a/xkb/xkb.c b/xkb/xkb.c
index 35f8d1c..c490f8b 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -6704,6 +6704,10 @@ XkbExtensionInit(void)
 {
     ExtensionEntry *extEntry;
 
+    RT_XKBCLIENT = CreateNewResourceType(XkbClientGone);
+    if (!RT_XKBCLIENT)
+	return;
+
     if ((extEntry = AddExtension(XkbName, XkbNumberEvents, XkbNumberErrors,
 				 ProcXkbDispatch, SProcXkbDispatch,
 				 NULL, StandardMinorOpcode))) {
@@ -6711,7 +6715,6 @@ XkbExtensionInit(void)
 	XkbEventBase = (unsigned char)extEntry->eventBase;
 	XkbErrorBase = (unsigned char)extEntry->errorBase;
 	XkbKeyboardErrorCode = XkbErrorBase+XkbKeyboard;
-	RT_XKBCLIENT = CreateNewResourceType(XkbClientGone);
     }
     return;
 }


More information about the xorg-commit mailing list