040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define XAA_SCREEN_PROLOGUE(pScreen, field)\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ((pScreen)->field = \
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ((XAAScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, XAAGetScreenKey()))->field)
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define XAA_SCREEN_EPILOGUE(pScreen, field, wrapper)\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ((pScreen)->field = wrapper)
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define XAA_GC_FUNC_PROLOGUE(pGC)\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync (pGC)->funcs = pGCPriv->wrapFuncs;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync if(pGCPriv->flags)\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync (pGC)->ops = pGCPriv->wrapOps
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define XAA_GC_FUNC_EPILOGUE(pGC)\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGCPriv->wrapFuncs = (pGC)->funcs;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync (pGC)->funcs = &XAAGCFuncs;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync if(pGCPriv->flags) {\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGCPriv->wrapOps = (pGC)->ops;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync (pGC)->ops = (pGCPriv->flags & OPS_ARE_ACCEL) ? pGCPriv->XAAOps :\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync &XAAPixmapOps;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync }
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define XAA_GC_OP_PROLOGUE(pGC)\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync GCFuncs *oldFuncs = pGC->funcs;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGC->funcs = pGCPriv->wrapFuncs;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGC->ops = pGCPriv->wrapOps
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define XAA_GC_OP_PROLOGUE_WITH_RETURN(pGC)\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync GCFuncs *oldFuncs = pGC->funcs;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync if(!REGION_NUM_RECTS(pGC->pCompositeClip)) return; \
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGC->funcs = pGCPriv->wrapFuncs;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGC->ops = pGCPriv->wrapOps
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define XAA_GC_OP_EPILOGUE(pGC)\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGCPriv->wrapOps = pGC->ops;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGC->funcs = oldFuncs;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGC->ops = pGCPriv->XAAOps
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define XAA_PIXMAP_OP_PROLOGUE(pGC, pDraw)\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync XAAGCPtr pGCPriv = (XAAGCPtr)dixLookupPrivate(&(pGC)->devPrivates, XAAGetGCKey()); \
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync XAAPixmapPtr pixPriv = XAA_GET_PIXMAP_PRIVATE((PixmapPtr)(pDraw));\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync GCFuncs *oldFuncs = pGC->funcs;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGC->funcs = pGCPriv->wrapFuncs;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGC->ops = pGCPriv->wrapOps
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define XAA_PIXMAP_OP_EPILOGUE(pGC)\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGCPriv->wrapOps = pGC->ops;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGC->funcs = oldFuncs;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pGC->ops = &XAAPixmapOps;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync pixPriv->flags |= DIRTY
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#ifdef HAVE_XORG_CONFIG_H
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#include <xorg-config.h>
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#endif
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#ifdef RENDER
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define XAA_RENDER_PROLOGUE(pScreen,field)\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync (GetPictureScreen(pScreen)->field = \
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync ((XAAScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, XAAGetScreenKey()))->field)
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define XAA_RENDER_EPILOGUE(pScreen, field, wrapper)\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync (GetPictureScreen(pScreen)->field = wrapper)
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#endif
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync/* This also works fine for drawables */
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync#define SYNC_CHECK(pGC) {\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync XAAInfoRecPtr infoRec =\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync((XAAScreenPtr)dixLookupPrivate(&(pGC)->pScreen->devPrivates, XAAGetScreenKey()))->AccelInfoRec; \
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync if(infoRec->NeedToSync) {\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync (*infoRec->Sync)(infoRec->pScrn);\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync infoRec->NeedToSync = FALSE;\
040abec2534dadc53ebc8fa378ef03f4feecb7dbvboxsync }}