/* * SafeAlphaPaintWindow * Paint the window while filling in the alpha channel with all on. * We can't use fbPaintWindow because it zeros the alpha channel. */ void SafeAlphaPaintWindow( WindowPtr pWin, RegionPtr pRegion, int what) { switch (what) { case PW_BACKGROUND: switch (pWin->backgroundState) { case None: break; case ParentRelative: do { pWin = pWin->parent; } while (pWin->backgroundState == ParentRelative); (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, what); break; case BackgroundPixmap: SafeAlphaFillRegionTiled (&pWin->drawable, pRegion, pWin->background.pixmap); break; case BackgroundPixel: { Pixel pixel = pWin->background.pixel | RootlessAlphaMask(pWin->drawable.bitsPerPixel); fbFillRegionSolid (&pWin->drawable, pRegion, 0, fbReplicatePixel (pixel, pWin->drawable.bitsPerPixel)); break; } } break; case PW_BORDER: if (pWin->borderIsPixel) { Pixel pixel = pWin->border.pixel | RootlessAlphaMask(pWin->drawable.bitsPerPixel); fbFillRegionSolid (&pWin->drawable, pRegion, 0, fbReplicatePixel (pixel, pWin->drawable.bitsPerPixel)); } else { WindowPtr pBgWin; for (pBgWin = pWin; pBgWin->backgroundState == ParentRelative; pBgWin = pBgWin->parent); SafeAlphaFillRegionTiled (&pBgWin->drawable, pRegion, pWin->border.pixmap); } break; } fbValidateDrawable (&pWin->drawable); }
static void kaaFillRegionSolid (DrawablePtr pDrawable, RegionPtr pRegion, Pixel pixel) { KdScreenPriv(pDrawable->pScreen); KaaScreenPriv(pDrawable->pScreen); PixmapPtr pPixmap; int xoff, yoff; if (pScreenPriv->enabled && (pPixmap = kaaGetOffscreenPixmap (pDrawable, &xoff, &yoff)) && (*pKaaScr->info->PrepareSolid) (pPixmap, GXcopy, FB_ALLONES, pixel)) { int nbox = REGION_NUM_RECTS (pRegion); BoxPtr pBox = REGION_RECTS (pRegion); while (nbox--) { (*pKaaScr->info->Solid) (pBox->x1 + xoff, pBox->y1 + yoff, pBox->x2 + xoff, pBox->y2 + yoff); pBox++; } (*pKaaScr->info->DoneSolid) (); kaaMarkSync (pDrawable->pScreen); } else { kaaWaitSync (pDrawable->pScreen); fbFillRegionSolid (pDrawable, pRegion, 0, fbReplicatePixel (pixel, pDrawable->bitsPerPixel)); } kaaDrawableDirty (pDrawable); }