Module Name:    xsrc
Committed By:   riz
Date:           Thu Jul 12 19:42:40 UTC 2012

Modified Files:
        xsrc/external/mit/xorg-server/dist/hw/xfree86/common [netbsd-6]:
            xf86sbusBus.c

Log Message:
Pull up following revision(s) (requested by macallan in ticket #415):
        external/mit/xorg-server/dist/hw/xfree86/common/xf86sbusBus.c: revision 
1.4
when using dixSetPrivate() and friends it helps to initialize the key before
using it. Now colours on suncg6 look right again and we don't spin or crash
on exit anymore.
probably needs to be pulled into -6


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.3.2.1 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86sbusBus.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86sbusBus.c
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86sbusBus.c:1.3 xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86sbusBus.c:1.3.2.1
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86sbusBus.c:1.3	Tue Aug  2 07:15:03 2011
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86sbusBus.c	Thu Jul 12 19:42:40 2012
@@ -585,7 +585,7 @@ xf86SbusUseBuiltinMode(ScrnInfoPtr pScrn
     pScrn->virtualY = psdp->height;
 }
 
-static DevPrivateKeyRec sbusPaletteKeyIndex;
+static DevPrivateKeyRec sbusPaletteKeyIndex = { .initialized = 0 };
 static DevPrivateKey sbusPaletteKey = &sbusPaletteKeyIndex;
 typedef struct _sbusCmap {
     sbusDevicePtr psdp;
@@ -603,7 +603,7 @@ static void
 xf86SbusCmapLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices,
 			LOCO *colors, VisualPtr pVisual)
 {
-    int i, index;
+    int i, index, ret;
     sbusCmapPtr cmap;
     struct fbcmap fbcmap;
     unsigned char *data = malloc(numColors*3);
@@ -618,7 +618,10 @@ xf86SbusCmapLoadPalette(ScrnInfoPtr pScr
     for (i = 0; i < numColors; i++) {
 	index = indices[i];
 	if (fbcmap.count && index != fbcmap.index + fbcmap.count) {
-	    ioctl (cmap->psdp->fd, FBIOPUTCMAP, &fbcmap);
+	    ret = ioctl (cmap->psdp->fd, FBIOPUTCMAP, &fbcmap);
+    	    if (ret != 0)
+	        xf86Msg(X_ERROR, "%s: ioctl(%d, FBIOPUTCMAP): %d %d\n",
+		  __func__, cmap->psdp->fd, ret, errno);
 	    fbcmap.count = 0;
 	    fbcmap.index = index;
 	}
@@ -626,7 +629,10 @@ xf86SbusCmapLoadPalette(ScrnInfoPtr pScr
 	fbcmap.green[fbcmap.count] = colors[index].green;
 	fbcmap.blue[fbcmap.count++] = colors[index].blue;
     }
-    ioctl (cmap->psdp->fd, FBIOPUTCMAP, &fbcmap);
+    ret = ioctl (cmap->psdp->fd, FBIOPUTCMAP, &fbcmap);
+    if (ret != 0)
+        xf86Msg(X_ERROR, "%s: ioctl(%d, FBIOPUTCMAP): %d %d\n", __func__,
+          cmap->psdp->fd, ret, errno);
     free(data);
 }
 
@@ -655,9 +661,13 @@ xf86SbusHandleColormaps(ScreenPtr pScree
 {
     sbusCmapPtr cmap;
     struct fbcmap fbcmap;
+    int ret;
     unsigned char data[2];
 
     cmap = xnfcalloc(1, sizeof(sbusCmapRec));
+    if (!dixPrivateKeyRegistered(sbusPaletteKey)) {
+        dixRegisterPrivateKey(sbusPaletteKey, PRIVATE_SCREEN, 0);
+    }
     dixSetPrivate(&pScreen->devPrivates, sbusPaletteKey, cmap);
     cmap->psdp = psdp;
     fbcmap.index = 0;
@@ -665,7 +675,7 @@ xf86SbusHandleColormaps(ScreenPtr pScree
     fbcmap.red = cmap->origRed;
     fbcmap.green = cmap->origGreen;
     fbcmap.blue = cmap->origBlue;
-    if (ioctl (psdp->fd, FBIOGETCMAP, &fbcmap) >= 0)
+    if ((ret = ioctl (psdp->fd, FBIOGETCMAP, &fbcmap)) >= 0)
 	cmap->origCmapValid = TRUE;
     fbcmap.index = 0;
     fbcmap.count = 2;
@@ -679,7 +689,10 @@ xf86SbusHandleColormaps(ScreenPtr pScree
 	data[0] = 0;
 	data[1] = 255;
     }
-    ioctl (psdp->fd, FBIOPUTCMAP, &fbcmap);
+    ret = ioctl (psdp->fd, FBIOPUTCMAP, &fbcmap);
+    if (ret != 0) 
+        xf86Msg(X_ERROR, "%s: ioctl(%d, FBIOPUTCMAP): %d %d\n", __func__,
+	  psdp->fd, ret, errno);
     cmap->CloseScreen = pScreen->CloseScreen;
     pScreen->CloseScreen = xf86SbusCmapCloseScreen;
     return xf86HandleColormaps(pScreen, 256, 8,

Reply via email to