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