static void XAADestroyClip(GCPtr pGC) { XAA_GC_FUNC_PROLOGUE (pGC); (* pGC->funcs->DestroyClip)(pGC); XAA_GC_FUNC_EPILOGUE (pGC); }
static void XAACopyClip(GCPtr pgcDst, GCPtr pgcSrc) { XAA_GC_FUNC_PROLOGUE (pgcDst); (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc); XAA_GC_FUNC_EPILOGUE (pgcDst); }
static void XAAChangeGC ( GCPtr pGC, unsigned long mask ) { XAA_GC_FUNC_PROLOGUE (pGC); (*pGC->funcs->ChangeGC) (pGC, mask); XAA_GC_FUNC_EPILOGUE (pGC); /* we have to assume that shared memory pixmaps are dirty because we can't wrap all operations on them */ if((mask & GCTile) && !pGC->tileIsPixel && PIXMAP_IS_SHARED(pGC->tile.pixmap)) { XAAPixmapPtr pPixPriv = XAA_GET_PIXMAP_PRIVATE(pGC->tile.pixmap); pPixPriv->flags |= DIRTY; } if((mask & GCStipple) && PIXMAP_IS_SHARED(pGC->stipple)){ XAAPixmapPtr pPixPriv = XAA_GET_PIXMAP_PRIVATE(pGC->stipple); pPixPriv->flags |= DIRTY; } }
static void XAAChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects) { XAA_GC_FUNC_PROLOGUE(pGC); (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects); XAA_GC_FUNC_EPILOGUE(pGC); }
static void XAACopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst) { XAA_GC_FUNC_PROLOGUE(pGCDst); (*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst); XAA_GC_FUNC_EPILOGUE(pGCDst); }
static void XAADestroyGC(GCPtr pGC) { XAA_GC_FUNC_PROLOGUE (pGC); if(pGCPriv->XAAOps != &XAAFallbackOps) xfree(pGCPriv->XAAOps); if(pGCPriv->DashPattern) xfree(pGCPriv->DashPattern); (*pGC->funcs->DestroyGC)(pGC); XAA_GC_FUNC_EPILOGUE (pGC); }
static void XAAValidateGC( GCPtr pGC, unsigned long changes, DrawablePtr pDraw ){ XAAInfoRecPtr infoRec = GET_XAAINFORECPTR_FROM_GC(pGC); XAA_GC_FUNC_PROLOGUE(pGC); (*pGC->funcs->ValidateGC)(pGC, changes, pDraw); if((changes & GCPlaneMask) && ((pGC->planemask & infoRec->FullPlanemasks[pGC->depth - 1]) == infoRec->FullPlanemasks[pGC->depth - 1])) { pGC->planemask = ~0; } if(pGC->depth != 32) { /* 0xffffffff is reserved for transparency */ if(pGC->bgPixel == 0xffffffff) pGC->bgPixel = 0x7fffffff; if(pGC->fgPixel == 0xffffffff) pGC->fgPixel = 0x7fffffff; } if((pDraw->type == DRAWABLE_PIXMAP) && !IS_OFFSCREEN_PIXMAP(pDraw)){ pGCPriv->flags = OPS_ARE_PIXMAP; pGCPriv->changes |= changes; /* make sure we're not using videomemory pixmaps to render onto system memory drawables */ if((pGC->fillStyle == FillTiled) && IS_OFFSCREEN_PIXMAP(pGC->tile.pixmap) && !OFFSCREEN_PIXMAP_LOCKED(pGC->tile.pixmap)) { XAAPixmapPtr pPriv = XAA_GET_PIXMAP_PRIVATE(pGC->tile.pixmap); FBAreaPtr area = pPriv->offscreenArea; XAARemoveAreaCallback(area); /* clobbers pPriv->offscreenArea */ xf86FreeOffscreenArea(area); } } else if(!infoRec->pScrn->vtSema && (pDraw->type == DRAWABLE_WINDOW)) { pGCPriv->flags = 0; pGCPriv->changes |= changes; } else { if(!(pGCPriv->flags & OPS_ARE_ACCEL)) { changes |= pGCPriv->changes; pGCPriv->changes = 0; } pGCPriv->flags = OPS_ARE_ACCEL; #if 1 /* Ugh. If we can't use the blitter on offscreen pixmaps used as tiles, then we need to move them out as cfb can't handle tiles with non-zero origins */ if((pGC->fillStyle == FillTiled) && IS_OFFSCREEN_PIXMAP(pGC->tile.pixmap) && (DO_PIXMAP_COPY != (*infoRec->TiledFillChooser)(pGC))) { XAAPixmapPtr pPriv = XAA_GET_PIXMAP_PRIVATE(pGC->tile.pixmap); FBAreaPtr area = pPriv->offscreenArea; XAARemoveAreaCallback(area); /* clobbers pPriv->offscreenArea */ xf86FreeOffscreenArea(area); } #endif } XAA_GC_FUNC_EPILOGUE(pGC); if(!(pGCPriv->flags & OPS_ARE_ACCEL)) return; if((changes & GCTile) && !pGC->tileIsPixel && pGC->tile.pixmap){ XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE(pGC->tile.pixmap); if(pixPriv->flags & DIRTY) { pixPriv->flags &= ~(DIRTY | REDUCIBILITY_MASK); pGC->tile.pixmap->drawable.serialNumber = NEXT_SERIAL_NUMBER; } } if((changes & GCStipple) && pGC->stipple){ XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE(pGC->stipple); if(pixPriv->flags & DIRTY) { pixPriv->flags &= ~(DIRTY | REDUCIBILITY_MASK); pGC->stipple->drawable.serialNumber = NEXT_SERIAL_NUMBER; } } /* If our Ops are still the default ones we need to allocate new ones */ if(pGC->ops == &XAAFallbackOps) { if(!(pGCPriv->XAAOps = xalloc(sizeof(GCOps)))) { pGCPriv->XAAOps = &XAAFallbackOps; return; } /* make a modifiable copy of the default ops */ memcpy(pGCPriv->XAAOps, &XAAFallbackOps, sizeof(GCOps)); pGC->ops = pGCPriv->XAAOps; changes = ~0; } if(!changes) return; if((changes & GCDashList) && infoRec->ComputeDash) infoRec->ComputeDash(pGC); if(changes & infoRec->FillSpansMask) (*infoRec->ValidateFillSpans)(pGC, changes, pDraw); if(changes & infoRec->SetSpansMask) (*infoRec->ValidateSetSpans)(pGC, changes, pDraw); if(changes & infoRec->PutImageMask) (*infoRec->ValidatePutImage)(pGC, changes, pDraw); if(changes & infoRec->CopyAreaMask) (*infoRec->ValidateCopyArea)(pGC, changes, pDraw); if(changes & infoRec->CopyPlaneMask) (*infoRec->ValidateCopyPlane)(pGC, changes, pDraw); if(changes & infoRec->PolyPointMask) (*infoRec->ValidatePolyPoint)(pGC, changes, pDraw); if(changes & infoRec->PolylinesMask) (*infoRec->ValidatePolylines)(pGC, changes, pDraw); if(changes & infoRec->PolySegmentMask) (*infoRec->ValidatePolySegment)(pGC, changes, pDraw); if(changes & infoRec->PolyRectangleMask) (*infoRec->ValidatePolyRectangle)(pGC, changes, pDraw); if(changes & infoRec->PolyArcMask) (*infoRec->ValidatePolyArc)(pGC, changes, pDraw); if(changes & infoRec->FillPolygonMask) (*infoRec->ValidateFillPolygon)(pGC, changes, pDraw); if(changes & infoRec->PolyFillRectMask) (*infoRec->ValidatePolyFillRect)(pGC, changes, pDraw); if(changes & infoRec->PolyFillArcMask) (*infoRec->ValidatePolyFillArc)(pGC, changes, pDraw); if(changes & infoRec->PolyGlyphBltMask) (*infoRec->ValidatePolyGlyphBlt)(pGC, changes, pDraw); if(changes & infoRec->ImageGlyphBltMask) (*infoRec->ValidateImageGlyphBlt)(pGC, changes, pDraw); if(changes & infoRec->PolyText8Mask) (*infoRec->ValidatePolyText8)(pGC, changes, pDraw); if(changes & infoRec->PolyText16Mask) (*infoRec->ValidatePolyText16)(pGC, changes, pDraw); if(changes & infoRec->ImageText8Mask) (*infoRec->ValidateImageText8)(pGC, changes, pDraw); if(changes & infoRec->ImageText16Mask) (*infoRec->ValidateImageText16)(pGC, changes, pDraw); if(changes & infoRec->PushPixelsMask) (*infoRec->ValidatePushPixels)(pGC, changes, pDraw); }