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