static void cfb8_32WidSaveAreas(PixmapPtr pPixmap, RegionPtr prgnSave, int xorg, int yorg, WindowPtr pWin) { if (pWin->drawable.bitsPerPixel == 8) cfbSaveAreas(pPixmap, prgnSave, xorg, yorg, pWin); else cfb32SaveAreas(pPixmap, prgnSave, xorg, yorg, pWin); }
void cfb8_32SaveAreas( PixmapPtr pPixmap, RegionPtr prgnSave, int xorg, int yorg, WindowPtr pWin ){ DDXPointPtr pPt; DDXPointPtr pPtsInit; BoxPtr pBox; int i; ScreenPtr pScreen = pPixmap->drawable.pScreen; PixmapPtr pScrPix; if(pPixmap->drawable.bitsPerPixel == 32) { cfb32SaveAreas(pPixmap, prgnSave, xorg, yorg, pWin); return; } i = REGION_NUM_RECTS(prgnSave); pPtsInit = (DDXPointPtr)ALLOCATE_LOCAL(i * sizeof(DDXPointRec)); if (!pPtsInit) return; pBox = REGION_RECTS(prgnSave); pPt = pPtsInit; while (--i >= 0) { pPt->x = pBox->x1 + xorg; pPt->y = pBox->y1 + yorg; pPt++; pBox++; } pScrPix = (PixmapPtr) pScreen->devPrivate; cfbDoBitblt32To8((DrawablePtr) pScrPix, (DrawablePtr)pPixmap, GXcopy, prgnSave, pPtsInit, ~0L, 0); DEALLOCATE_LOCAL (pPtsInit); }