1706f2543Smrg 2706f2543Smrg#define XAA_SCREEN_PROLOGUE(pScreen, field)\ 3706f2543Smrg ((pScreen)->field = \ 4706f2543Smrg ((XAAScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, XAAGetScreenKey()))->field) 5706f2543Smrg 6706f2543Smrg#define XAA_SCREEN_EPILOGUE(pScreen, field, wrapper)\ 7706f2543Smrg ((pScreen)->field = wrapper) 8706f2543Smrg 9706f2543Smrg 10706f2543Smrg#define XAA_GC_FUNC_PROLOGUE(pGC)\ 11706f2543Smrg XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \ 12706f2543Smrg (pGC)->funcs = pGCPriv->wrapFuncs;\ 13706f2543Smrg if(pGCPriv->flags)\ 14706f2543Smrg (pGC)->ops = pGCPriv->wrapOps 15706f2543Smrg 16706f2543Smrg#define XAA_GC_FUNC_EPILOGUE(pGC)\ 17706f2543Smrg pGCPriv->wrapFuncs = (pGC)->funcs;\ 18706f2543Smrg (pGC)->funcs = &XAAGCFuncs;\ 19706f2543Smrg if(pGCPriv->flags) {\ 20706f2543Smrg pGCPriv->wrapOps = (pGC)->ops;\ 21706f2543Smrg (pGC)->ops = (pGCPriv->flags & OPS_ARE_ACCEL) ? pGCPriv->XAAOps :\ 22706f2543Smrg &XAAPixmapOps;\ 23706f2543Smrg } 24706f2543Smrg 25706f2543Smrg 26706f2543Smrg#define XAA_GC_OP_PROLOGUE(pGC)\ 27706f2543Smrg XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \ 28706f2543Smrg GCFuncs *oldFuncs = pGC->funcs;\ 29706f2543Smrg pGC->funcs = pGCPriv->wrapFuncs;\ 30706f2543Smrg pGC->ops = pGCPriv->wrapOps 31706f2543Smrg 32706f2543Smrg#define XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC)\ 33706f2543Smrg XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \ 34706f2543Smrg GCFuncs *oldFuncs = pGC->funcs;\ 35706f2543Smrg if(!RegionNumRects(pGC->pCompositeClip)) return; \ 36706f2543Smrg pGC->funcs = pGCPriv->wrapFuncs;\ 37706f2543Smrg pGC->ops = pGCPriv->wrapOps 38706f2543Smrg 39706f2543Smrg 40706f2543Smrg#define XAA_GC_OP_EPILOGUE(pGC)\ 41706f2543Smrg pGCPriv->wrapOps = pGC->ops;\ 42706f2543Smrg pGC->funcs = oldFuncs;\ 43706f2543Smrg pGC->ops = pGCPriv->XAAOps 44706f2543Smrg 45706f2543Smrg 46706f2543Smrg#define XAA_PIXMAP_OP_PROLOGUE(pGC, pDraw)\ 47706f2543Smrg XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \ 48706f2543Smrg XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE((PixmapPtr)(pDraw));\ 49706f2543Smrg GCFuncs *oldFuncs = pGC->funcs;\ 50706f2543Smrg pGC->funcs = pGCPriv->wrapFuncs;\ 51706f2543Smrg pGC->ops = pGCPriv->wrapOps; \ 52706f2543Smrg SYNC_CHECK(pGC) 53706f2543Smrg 54706f2543Smrg#define XAA_PIXMAP_OP_EPILOGUE(pGC)\ 55706f2543Smrg pGCPriv->wrapOps = pGC->ops;\ 56706f2543Smrg pGC->funcs = oldFuncs;\ 57706f2543Smrg pGC->ops = &XAAPixmapOps;\ 58706f2543Smrg pixPriv->flags |= DIRTY 59706f2543Smrg 60706f2543Smrg#ifdef HAVE_XORG_CONFIG_H 61706f2543Smrg#include <xorg-config.h> 62706f2543Smrg#endif 63706f2543Smrg 64706f2543Smrg#define XAA_RENDER_PROLOGUE(pScreen,field)\ 65706f2543Smrg (GetPictureScreen(pScreen)->field = \ 66706f2543Smrg ((XAAScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, XAAGetScreenKey()))->field) 67706f2543Smrg 68706f2543Smrg#define XAA_RENDER_EPILOGUE(pScreen, field, wrapper)\ 69706f2543Smrg (GetPictureScreen(pScreen)->field = wrapper) 70706f2543Smrg 71706f2543Smrg/* This also works fine for drawables */ 72706f2543Smrg 73706f2543Smrg#define SYNC_CHECK(pGC) {\ 74706f2543Smrg XAAInfoRecPtr infoRec =\ 75706f2543Smrg((XAAScreenPtr)dixLookupPrivate(&(pGC)->pScreen->devPrivates, XAAGetScreenKey()))->AccelInfoRec; \ 76706f2543Smrg if(infoRec->NeedToSync) {\ 77706f2543Smrg (*infoRec->Sync)(infoRec->pScrn);\ 78706f2543Smrg infoRec->NeedToSync = FALSE;\ 79706f2543Smrg }} 80