void
XAAOverWindowExposures(
   WindowPtr pWin,
   RegionPtr pReg,
   RegionPtr pOtherReg
){
    ScreenPtr pScreen = pWin->drawable.pScreen;
    XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_SCREEN(pScreen);

    if((pWin->drawable.bitsPerPixel != 8) && infoRec->pScrn->vtSema) {
	if(REGION_NUM_RECTS(pReg) && infoRec->FillSolidRects) {
	    XAAOverlayPtr pOverPriv = GET_OVERLAY_PRIV(pScreen);

	    SWITCH_DEPTH(8);
	    (*infoRec->FillSolidRects)(infoRec->pScrn, 
		infoRec->pScrn->colorKey, GXcopy, ~0,
			REGION_NUM_RECTS(pReg), REGION_RECTS(pReg));
	    miWindowExposures(pWin, pReg, pOtherReg);
	    return;
	} else if(infoRec->NeedToSync) {
            (*infoRec->Sync)(infoRec->pScrn);
            infoRec->NeedToSync = FALSE;
	}
    } 

    XAA_SCREEN_PROLOGUE (pScreen, WindowExposures);
    (*pScreen->WindowExposures) (pWin, pReg, pOtherReg);
    XAA_SCREEN_EPILOGUE(pScreen, WindowExposures, XAAOverWindowExposures);
}
void
cfb8_32WidWindowExposures(WindowPtr pWin, RegionPtr pReg, RegionPtr pOtherReg)
{
	/* Fill in the WID channel before rendering of
	 * the exposed window area.
	 */
	if (REGION_NUM_RECTS(pReg)) {
		ScreenPtr pScreen = pWin->drawable.pScreen;
		cfb8_32WidScreenPtr pScreenPriv = 
			CFB8_32WID_GET_SCREEN_PRIVATE(pScreen);

		pScreenPriv->WIDOps->WidFillBox((DrawablePtr)pScreenPriv->pixWid,
						(DrawablePtr)pWin,
						REGION_NUM_RECTS(pReg), REGION_RECTS(pReg));
	}

	miWindowExposures(pWin, pReg, pOtherReg);
}
Exemple #3
0
void
cfb8_16WindowExposures(
   WindowPtr pWin,
   RegionPtr pReg,
   RegionPtr pOtherReg
){

    if(REGION_NUM_RECTS(pReg) && (pWin->drawable.bitsPerPixel == 16)) {
	cfb8_16ScreenPtr pScreenPriv = 
		CFB8_16_GET_SCREEN_PRIVATE(pWin->drawable.pScreen);

	cfbFillBoxSolid((DrawablePtr)pScreenPriv->pix8,
		REGION_NUM_RECTS(pReg), REGION_RECTS(pReg),
		pScreenPriv->key);
    }

    miWindowExposures(pWin, pReg, pOtherReg);
}