1 2#define XAA_SCREEN_PROLOGUE(pScreen, field)\ 3 ((pScreen)->field = \ 4 ((XAAScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, XAAGetScreenKey()))->field) 5 6#define XAA_SCREEN_EPILOGUE(pScreen, field, wrapper)\ 7 ((pScreen)->field = wrapper) 8 9 10#define XAA_GC_FUNC_PROLOGUE(pGC)\ 11 XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \ 12 (pGC)->funcs = pGCPriv->wrapFuncs;\ 13 if(pGCPriv->flags)\ 14 (pGC)->ops = pGCPriv->wrapOps 15 16#define XAA_GC_FUNC_EPILOGUE(pGC)\ 17 pGCPriv->wrapFuncs = (pGC)->funcs;\ 18 (pGC)->funcs = &XAAGCFuncs;\ 19 if(pGCPriv->flags) {\ 20 pGCPriv->wrapOps = (pGC)->ops;\ 21 (pGC)->ops = (pGCPriv->flags & OPS_ARE_ACCEL) ? pGCPriv->XAAOps :\ 22 &XAAPixmapOps;\ 23 } 24 25 26#define XAA_GC_OP_PROLOGUE(pGC)\ 27 XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \ 28 GCFuncs *oldFuncs = pGC->funcs;\ 29 pGC->funcs = pGCPriv->wrapFuncs;\ 30 pGC->ops = pGCPriv->wrapOps 31 32#define XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC)\ 33 XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \ 34 GCFuncs *oldFuncs = pGC->funcs;\ 35 if(!RegionNumRects(pGC->pCompositeClip)) return; \ 36 pGC->funcs = pGCPriv->wrapFuncs;\ 37 pGC->ops = pGCPriv->wrapOps 38 39 40#define XAA_GC_OP_EPILOGUE(pGC)\ 41 pGCPriv->wrapOps = pGC->ops;\ 42 pGC->funcs = oldFuncs;\ 43 pGC->ops = pGCPriv->XAAOps 44 45 46#define XAA_PIXMAP_OP_PROLOGUE(pGC, pDraw)\ 47 XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \ 48 XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE((PixmapPtr)(pDraw));\ 49 GCFuncs *oldFuncs = pGC->funcs;\ 50 pGC->funcs = pGCPriv->wrapFuncs;\ 51 pGC->ops = pGCPriv->wrapOps; \ 52 SYNC_CHECK(pGC) 53 54#define XAA_PIXMAP_OP_EPILOGUE(pGC)\ 55 pGCPriv->wrapOps = pGC->ops;\ 56 pGC->funcs = oldFuncs;\ 57 pGC->ops = &XAAPixmapOps;\ 58 pixPriv->flags |= DIRTY 59 60#ifdef HAVE_XORG_CONFIG_H 61#include <xorg-config.h> 62#endif 63 64#define XAA_RENDER_PROLOGUE(pScreen,field)\ 65 (GetPictureScreen(pScreen)->field = \ 66 ((XAAScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, XAAGetScreenKey()))->field) 67 68#define XAA_RENDER_EPILOGUE(pScreen, field, wrapper)\ 69 (GetPictureScreen(pScreen)->field = wrapper) 70 71/* This also works fine for drawables */ 72 73#define SYNC_CHECK(pGC) {\ 74 XAAInfoRecPtr infoRec =\ 75((XAAScreenPtr)dixLookupPrivate(&(pGC)->pScreen->devPrivates, XAAGetScreenKey()))->AccelInfoRec; \ 76 if(infoRec->NeedToSync) {\ 77 (*infoRec->Sync)(infoRec->pScrn);\ 78 infoRec->NeedToSync = FALSE;\ 79 }} 80