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,