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