None of the GC funcs wrappers were doing anything special with the cliplist representation, nor is that really a likely thing to want to do.
Signed-off-by: Adam Jackson <[email protected]> --- Xext/panoramiX.c | 32 ------- dix/gc.c | 76 +++++++++++++++-- exa/exa.c | 48 ---------- fb/fbgc.c | 3 - hw/dmx/dmxgc.c | 82 ------------------ hw/xfree86/common/xf86VGAarbiter.c | 31 +------- hw/xfree86/common/xf86VGAarbiterPriv.h | 4 - hw/xfree86/shadowfb/shadow.c | 35 -------- hw/xfree86/xaa/xaaGC.c | 33 ------- hw/xnest/GC.c | 147 -------------------------------- hw/xnest/XNGC.h | 4 - hw/xwin/wingc.c | 42 --------- include/dix.h | 18 ++++ include/gcstruct.h | 13 --- mi/mibitblt.c | 4 +- mi/migc.c | 70 --------------- mi/migc.h | 17 ---- miext/cw/cw.c | 52 +----------- miext/damage/damage.c | 31 ------- miext/rootless/rootlessGC.c | 29 ------ render/mirect.c | 2 +- xfixes/region.c | 2 +- 22 files changed, 96 insertions(+), 679 deletions(-) diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c index b73c53f..8dc3d8f 100644 --- a/Xext/panoramiX.c +++ b/Xext/panoramiX.c @@ -123,13 +123,9 @@ static void XineramaValidateGC(GCPtr, unsigned long, DrawablePtr); static void XineramaChangeGC(GCPtr, unsigned long); static void XineramaCopyGC(GCPtr, unsigned long, GCPtr); static void XineramaDestroyGC(GCPtr); -static void XineramaChangeClip(GCPtr, int, pointer, int); -static void XineramaDestroyClip(GCPtr); -static void XineramaCopyClip(GCPtr, GCPtr); static GCFuncs XineramaGCFuncs = { XineramaValidateGC, XineramaChangeGC, XineramaCopyGC, XineramaDestroyGC, - XineramaChangeClip, XineramaDestroyClip, XineramaCopyClip }; #define Xinerama_GC_FUNC_PROLOGUE(pGC)\ @@ -293,34 +289,6 @@ XineramaCopyGC ( Xinerama_GC_FUNC_EPILOGUE (pGCDst); } -static void -XineramaChangeClip ( - GCPtr pGC, - int type, - pointer pvalue, - int nrects -){ - Xinerama_GC_FUNC_PROLOGUE (pGC); - (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects); - Xinerama_GC_FUNC_EPILOGUE (pGC); -} - -static void -XineramaCopyClip(GCPtr pgcDst, GCPtr pgcSrc) -{ - Xinerama_GC_FUNC_PROLOGUE (pgcDst); - (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc); - Xinerama_GC_FUNC_EPILOGUE (pgcDst); -} - -static void -XineramaDestroyClip(GCPtr pGC) -{ - Xinerama_GC_FUNC_PROLOGUE (pGC); - (* pGC->funcs->DestroyClip)(pGC); - Xinerama_GC_FUNC_EPILOGUE (pGC); -} - int XineramaDeleteResource(pointer data, XID id) { diff --git a/dix/gc.c b/dix/gc.c index fc251dd..8339374 100644 --- a/dix/gc.c +++ b/dix/gc.c @@ -81,6 +81,71 @@ ValidateGC(DrawablePtr pDraw, GC *pGC) pGC->serialNumber = pDraw->serialNumber; } +/* GC clip management */ + +void +DestroyClip(GCPtr pGC) +{ + if (pGC->clientClipType == CT_NONE) + return; + else if (pGC->clientClipType == CT_PIXMAP) + { + (*pGC->pScreen->DestroyPixmap) ((PixmapPtr) (pGC->clientClip)); + } + else + { + /* + * we know we'll never have a list of rectangles, since ChangeClip + * immediately turns them into a region + */ + RegionDestroy(pGC->clientClip); + } + pGC->clientClip = NULL; + pGC->clientClipType = CT_NONE; +} + +void +ChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects) +{ + if (type == CT_PIXMAP) + { + /* convert the pixmap to a region */ + pGC->clientClip = BitmapToRegion(pGC->pScreen, (PixmapPtr) pvalue); + (*pGC->pScreen->DestroyPixmap) (pvalue); + } + else if (type == CT_REGION) + { + /* stuff the region in the GC */ + pGC->clientClip = pvalue; + } + else if (type != CT_NONE) + { + pGC->clientClip = RegionFromRects(nrects, (xRectangle *) pvalue, type); + free(pvalue); + } + pGC->clientClipType = (type != CT_NONE && pGC->clientClip) ? CT_REGION + : CT_NONE; + pGC->stateChanges |= GCClipMask; +} + +void +CopyClip(GCPtr pgcDst, GCPtr pgcSrc) +{ + RegionPtr prgnNew; + + switch (pgcSrc->clientClipType) + { + case CT_PIXMAP: + ((PixmapPtr) pgcSrc->clientClip)->refcnt++; + break; + case CT_NONE: + break; + case CT_REGION: + prgnNew = RegionCreate(NULL, 1); + RegionCopy(prgnNew, (RegionPtr) (pgcSrc->clientClip)); + break; + } +} /* * ChangeGC/ChangeGCXIDs: @@ -338,8 +403,7 @@ ChangeGC(ClientPtr client, GC *pGC, BITS32 mask, ChangeGCValPtr pUnion) } pPixmap->refcnt++; } - (*pGC->funcs->ChangeClip)(pGC, pPixmap ? CT_PIXMAP : CT_NONE, - (pointer)pPixmap, 0); + ChangeClip(pGC, pPixmap ? CT_PIXMAP : CT_NONE, pPixmap, 0); break; case GCDashOffset: NEXTVAL(INT16, pGC->dashOffset); @@ -708,7 +772,7 @@ CopyGC(GC *pgcSrc, GC *pgcDst, BITS32 mask) pgcDst->clipOrg.y = pgcSrc->clipOrg.y; break; case GCClipMask: - (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc); + CopyClip(pgcDst, pgcSrc); break; case GCDashOffset: pgcDst->dashOffset = pgcSrc->dashOffset; @@ -772,7 +836,7 @@ FreeGC(pointer value, XID gid) GCPtr pGC = (GCPtr)value; CloseFont(pGC->font, (Font)0); - (* pGC->funcs->DestroyClip)(pGC); + DestroyClip(pGC); if (!pGC->tileIsPixel) (* pGC->pScreen->DestroyPixmap)(pGC->tile.pixmap); @@ -1077,7 +1141,7 @@ SetClipRects(GCPtr pGC, int xOrigin, int yOrigin, int nrects, if (size) memmove((char *)prectsNew, (char *)prects, size); - (*pGC->funcs->ChangeClip)(pGC, newct, (pointer)prectsNew, nrects); + ChangeClip(pGC, newct, prectsNew, nrects); if (pGC->funcs->ChangeGC) (*pGC->funcs->ChangeGC) (pGC, GCClipXOrigin|GCClipYOrigin|GCClipMask); return Success; @@ -1122,7 +1186,7 @@ GetScratchGC(unsigned depth, ScreenPtr pScreen) pGC->clipOrg.x = 0; pGC->clipOrg.y = 0; if (pGC->clientClipType != CT_NONE) - (*pGC->funcs->ChangeClip) (pGC, CT_NONE, NULL, 0); + ChangeClip(pGC, CT_NONE, NULL, 0); pGC->stateChanges = GCAllBits; return pGC; } diff --git a/exa/exa.c b/exa/exa.c index 8adf847..780aa25 100644 --- a/exa/exa.c +++ b/exa/exa.c @@ -479,29 +479,11 @@ exaCopyGC (GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst); -static void -exaChangeClip (GCPtr pGC, - int type, - pointer pvalue, - int nrects); - -static void -exaCopyClip(GCPtr pGCDst, GCPtr pGCSrc); - -static void -exaCopyClip(GCPtr pGCDst, GCPtr pGCSrc); - -static void -exaDestroyClip(GCPtr pGC); - const GCFuncs exaGCFuncs = { exaValidateGC, exaChangeGC, exaCopyGC, exaDestroyGC, - exaChangeClip, - exaDestroyClip, - exaCopyClip }; static void @@ -589,36 +571,6 @@ exaCopyGC (GCPtr pGCSrc, swap(pExaGC, pGCDst, funcs); } -static void -exaChangeClip (GCPtr pGC, - int type, - pointer pvalue, - int nrects) -{ - ExaGCPriv(pGC); - swap(pExaGC, pGC, funcs); - (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects); - swap(pExaGC, pGC, funcs); -} - -static void -exaCopyClip(GCPtr pGCDst, GCPtr pGCSrc) -{ - ExaGCPriv(pGCDst); - swap(pExaGC, pGCDst, funcs); - (*pGCDst->funcs->CopyClip)(pGCDst, pGCSrc); - swap(pExaGC, pGCDst, funcs); -} - -static void -exaDestroyClip(GCPtr pGC) -{ - ExaGCPriv(pGC); - swap(pExaGC, pGC, funcs); - (*pGC->funcs->DestroyClip)(pGC); - swap(pExaGC, pGC, funcs); -} - /** * exaCreateGC makes a new GC and hooks up its funcs handler, so that * exaValidateGC() will get called. diff --git a/fb/fbgc.c b/fb/fbgc.c index b27a030..1db3771 100644 --- a/fb/fbgc.c +++ b/fb/fbgc.c @@ -33,9 +33,6 @@ const GCFuncs fbGCFuncs = { miChangeGC, miCopyGC, miDestroyGC, - miChangeClip, - miDestroyClip, - miCopyClip, }; const GCOps fbGCOps = { diff --git a/hw/dmx/dmxgc.c b/hw/dmx/dmxgc.c index 829200e..ae615be 100644 --- a/hw/dmx/dmxgc.c +++ b/hw/dmx/dmxgc.c @@ -54,9 +54,6 @@ static GCFuncs dmxGCFuncs = { dmxChangeGC, dmxCopyGC, dmxDestroyGC, - dmxChangeClip, - dmxDestroyClip, - dmxCopyClip, }; static GCOps dmxGCOps = { @@ -340,82 +337,3 @@ void dmxDestroyGC(GCPtr pGC) pGC->funcs->DestroyGC(pGC); DMX_GC_FUNC_EPILOGUE(pGC); } - -/** Change the clip rects for a GC. */ -void dmxChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects) -{ - ScreenPtr pScreen = pGC->pScreen; - DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum]; - dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC); - XRectangle *pRects; - BoxPtr pBox; - int i, nRects; - - DMX_GC_FUNC_PROLOGUE(pGC); - pGC->funcs->ChangeClip(pGC, type, pvalue, nrects); - - /* Set the client clip on the back-end server */ - switch (pGC->clientClipType) { - case CT_NONE: - if (dmxScreen->beDisplay) - XSetClipMask(dmxScreen->beDisplay, pGCPriv->gc, None); - break; - - case CT_REGION: - if (dmxScreen->beDisplay) { - nRects = RegionNumRects((RegionPtr)pGC->clientClip); - pRects = malloc(nRects * sizeof(*pRects)); - pBox = RegionRects((RegionPtr)pGC->clientClip); - - for (i = 0; i < nRects; i++) { - pRects[i].x = pBox[i].x1; - pRects[i].y = pBox[i].y1; - pRects[i].width = pBox[i].x2 - pBox[i].x1; - pRects[i].height = pBox[i].y2 - pBox[i].y1; - } - - XSetClipRectangles(dmxScreen->beDisplay, pGCPriv->gc, - pGC->clipOrg.x, pGC->clipOrg.y, - pRects, nRects, Unsorted); - - free(pRects); - } - break; - - case CT_PIXMAP: - case CT_UNSORTED: - case CT_YSORTED: - case CT_YXSORTED: - case CT_YXBANDED: - /* These clip types are condensed down to either NONE or REGION - in the mi code */ - break; - } - - DMX_GC_FUNC_EPILOGUE(pGC); -} - -/** Destroy a GC's clip rects. */ -void dmxDestroyClip(GCPtr pGC) -{ - ScreenPtr pScreen = pGC->pScreen; - DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum]; - dmxGCPrivPtr pGCPriv = DMX_GET_GC_PRIV(pGC); - - DMX_GC_FUNC_PROLOGUE(pGC); - pGC->funcs->DestroyClip(pGC); - - /* Set the client clip on the back-end server to None */ - if (dmxScreen->beDisplay) - XSetClipMask(dmxScreen->beDisplay, pGCPriv->gc, None); - - DMX_GC_FUNC_EPILOGUE(pGC); -} - -/** Copy a GC's clip rects. */ -void dmxCopyClip(GCPtr pGCDst, GCPtr pGCSrc) -{ - DMX_GC_FUNC_PROLOGUE(pGCDst); - pGCDst->funcs->CopyClip(pGCDst, pGCSrc); - DMX_GC_FUNC_EPILOGUE(pGCDst); -} diff --git a/hw/xfree86/common/xf86VGAarbiter.c b/hw/xfree86/common/xf86VGAarbiter.c index e518f45..78e9120 100644 --- a/hw/xfree86/common/xf86VGAarbiter.c +++ b/hw/xfree86/common/xf86VGAarbiter.c @@ -41,8 +41,7 @@ static GCFuncs VGAarbiterGCFuncs = { VGAarbiterValidateGC, VGAarbiterChangeGC, VGAarbiterCopyGC, - VGAarbiterDestroyGC, VGAarbiterChangeClip, VGAarbiterDestroyClip, - VGAarbiterCopyClip + VGAarbiterDestroyGC, }; static GCOps VGAarbiterGCOps = { @@ -622,34 +621,6 @@ VGAarbiterCopyGC ( GC_WRAP (pGCDst); } -static void -VGAarbiterChangeClip ( - GCPtr pGC, - int type, - pointer pvalue, - int nrects ) -{ - GC_UNWRAP (pGC); - (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects); - GC_WRAP (pGC); -} - -static void -VGAarbiterCopyClip(GCPtr pgcDst, GCPtr pgcSrc) -{ - GC_UNWRAP (pgcDst); - (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc); - GC_WRAP (pgcDst); -} - -static void -VGAarbiterDestroyClip(GCPtr pGC) -{ - GC_UNWRAP (pGC); - (* pGC->funcs->DestroyClip)(pGC); - GC_WRAP (pGC); -} - /* GC Ops */ static void VGAarbiterFillSpans( diff --git a/hw/xfree86/common/xf86VGAarbiterPriv.h b/hw/xfree86/common/xf86VGAarbiterPriv.h index 2920fb5..927bb69 100644 --- a/hw/xfree86/common/xf86VGAarbiterPriv.h +++ b/hw/xfree86/common/xf86VGAarbiterPriv.h @@ -182,10 +182,6 @@ static void VGAarbiterValidateGC(GCPtr pGC, unsigned long changes, static void VGAarbiterChangeGC(GCPtr pGC, unsigned long mask); static void VGAarbiterCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst); static void VGAarbiterDestroyGC(GCPtr pGC); -static void VGAarbiterChangeClip(GCPtr pGC, int type, pointer pvalue, - int nrects); -static void VGAarbiterDestroyClip(GCPtr pGC); -static void VGAarbiterCopyClip(GCPtr pgcDst, GCPtr pgcSrc); /* GC ops */ static void VGAarbiterFillSpans( DrawablePtr pDraw, GC *pGC, int nInit, diff --git a/hw/xfree86/shadowfb/shadow.c b/hw/xfree86/shadowfb/shadow.c index 5cc476a..499bbc3 100644 --- a/hw/xfree86/shadowfb/shadow.c +++ b/hw/xfree86/shadowfb/shadow.c @@ -359,13 +359,9 @@ static void ShadowValidateGC(GCPtr, unsigned long, DrawablePtr); static void ShadowChangeGC(GCPtr, unsigned long); static void ShadowCopyGC(GCPtr, unsigned long, GCPtr); static void ShadowDestroyGC(GCPtr); -static void ShadowChangeClip(GCPtr, int, pointer, int); -static void ShadowDestroyClip(GCPtr); -static void ShadowCopyClip(GCPtr, GCPtr); GCFuncs ShadowGCFuncs = { ShadowValidateGC, ShadowChangeGC, ShadowCopyGC, ShadowDestroyGC, - ShadowChangeClip, ShadowDestroyClip, ShadowCopyClip }; @@ -436,37 +432,6 @@ ShadowCopyGC ( SHADOW_GC_FUNC_EPILOGUE (pGCDst); } -static void -ShadowChangeClip ( - GCPtr pGC, - int type, - pointer pvalue, - int nrects -){ - SHADOW_GC_FUNC_PROLOGUE (pGC); - (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects); - SHADOW_GC_FUNC_EPILOGUE (pGC); -} - -static void -ShadowCopyClip(GCPtr pgcDst, GCPtr pgcSrc) -{ - SHADOW_GC_FUNC_PROLOGUE (pgcDst); - (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc); - SHADOW_GC_FUNC_EPILOGUE (pgcDst); -} - -static void -ShadowDestroyClip(GCPtr pGC) -{ - SHADOW_GC_FUNC_PROLOGUE (pGC); - (* pGC->funcs->DestroyClip)(pGC); - SHADOW_GC_FUNC_EPILOGUE (pGC); -} - - - - /**********************************************************/ diff --git a/hw/xfree86/xaa/xaaGC.c b/hw/xfree86/xaa/xaaGC.c index 44d50e6..74eefb1 100644 --- a/hw/xfree86/xaa/xaaGC.c +++ b/hw/xfree86/xaa/xaaGC.c @@ -23,13 +23,9 @@ static void XAAValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDraw); static void XAAChangeGC(GCPtr pGC, unsigned long mask); static void XAACopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst); static void XAADestroyGC(GCPtr pGC); -static void XAAChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects); -static void XAADestroyClip(GCPtr pGC); -static void XAACopyClip(GCPtr pgcDst, GCPtr pgcSrc); GCFuncs XAAGCFuncs = { XAAValidateGC, XAAChangeGC, XAACopyGC, XAADestroyGC, - XAAChangeClip, XAADestroyClip, XAACopyClip }; extern GCOps XAAPixmapOps; @@ -280,38 +276,9 @@ XAACopyGC ( (*pGCDst->funcs->CopyGC) (pGCSrc, mask, pGCDst); XAA_GC_FUNC_EPILOGUE (pGCDst); } -static void -XAAChangeClip ( - GCPtr pGC, - int type, - pointer pvalue, - int nrects ) -{ - XAA_GC_FUNC_PROLOGUE (pGC); - (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects); - XAA_GC_FUNC_EPILOGUE (pGC); -} - -static void -XAACopyClip(GCPtr pgcDst, GCPtr pgcSrc) -{ - XAA_GC_FUNC_PROLOGUE (pgcDst); - (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc); - XAA_GC_FUNC_EPILOGUE (pgcDst); -} - -static void -XAADestroyClip(GCPtr pGC) -{ - XAA_GC_FUNC_PROLOGUE (pGC); - (* pGC->funcs->DestroyClip)(pGC); - XAA_GC_FUNC_EPILOGUE (pGC); -} /**** Pixmap Wrappers ****/ - - static void XAAFillSpansPixmap( DrawablePtr pDraw, diff --git a/hw/xnest/GC.c b/hw/xnest/GC.c index 7968b4f..9d3ec9d 100644 --- a/hw/xnest/GC.c +++ b/hw/xnest/GC.c @@ -42,9 +42,6 @@ static GCFuncs xnestFuncs = { xnestChangeGC, xnestCopyGC, xnestDestroyGC, - xnestChangeClip, - xnestDestroyClip, - xnestCopyClip, }; static GCOps xnestOps = { @@ -187,147 +184,3 @@ xnestDestroyGC(GCPtr pGC) { XFreeGC(xnestDisplay, xnestGC(pGC)); } - -void -xnestChangeClip(GCPtr pGC, int type, pointer pValue, int nRects) -{ - int i, size; - BoxPtr pBox; - XRectangle *pRects; - - xnestDestroyClipHelper(pGC); - - switch(type) - { - case CT_NONE: - XSetClipMask(xnestDisplay, xnestGC(pGC), None); - break; - - case CT_REGION: - nRects = RegionNumRects((RegionPtr)pValue); - size = nRects * sizeof(*pRects); - pRects = (XRectangle *) malloc(size); - pBox = RegionRects((RegionPtr)pValue); - for (i = nRects; i-- > 0; ) { - pRects[i].x = pBox[i].x1; - pRects[i].y = pBox[i].y1; - pRects[i].width = pBox[i].x2 - pBox[i].x1; - pRects[i].height = pBox[i].y2 - pBox[i].y1; - } - XSetClipRectangles(xnestDisplay, xnestGC(pGC), 0, 0, - pRects, nRects, Unsorted); - free((char *) pRects); - break; - - case CT_PIXMAP: - XSetClipMask(xnestDisplay, xnestGC(pGC), - xnestPixmap((PixmapPtr)pValue)); - /* - * Need to change into region, so subsequent uses are with - * current pixmap contents. - */ - pGC->clientClip = (pointer) (*pGC->pScreen->BitmapToRegion)((PixmapPtr)pValue); - (*pGC->pScreen->DestroyPixmap)((PixmapPtr)pValue); - pValue = pGC->clientClip; - type = CT_REGION; - break; - - case CT_UNSORTED: - XSetClipRectangles(xnestDisplay, xnestGC(pGC), - pGC->clipOrg.x, pGC->clipOrg.y, - (XRectangle *)pValue, nRects, Unsorted); - break; - - case CT_YSORTED: - XSetClipRectangles(xnestDisplay, xnestGC(pGC), - pGC->clipOrg.x, pGC->clipOrg.y, - (XRectangle *)pValue, nRects, YSorted); - break; - - case CT_YXSORTED: - XSetClipRectangles(xnestDisplay, xnestGC(pGC), - pGC->clipOrg.x, pGC->clipOrg.y, - (XRectangle *)pValue, nRects, YXSorted); - break; - - case CT_YXBANDED: - XSetClipRectangles(xnestDisplay, xnestGC(pGC), - pGC->clipOrg.x, pGC->clipOrg.y, - (XRectangle *)pValue, nRects, YXBanded); - break; - } - - switch(type) - { - default: - break; - - case CT_UNSORTED: - case CT_YSORTED: - case CT_YXSORTED: - case CT_YXBANDED: - - /* - * other parts of server can only deal with CT_NONE, - * CT_PIXMAP and CT_REGION client clips. - */ - pGC->clientClip = (pointer) RegionFromRects(nRects, - (xRectangle *)pValue, type); - free(pValue); - pValue = pGC->clientClip; - type = CT_REGION; - - break; - } - - pGC->clientClipType = type; - pGC->clientClip = pValue; - xnestGCPriv(pGC)->nClipRects = nRects; -} - -void -xnestDestroyClip(GCPtr pGC) -{ - xnestDestroyClipHelper(pGC); - - XSetClipMask(xnestDisplay, xnestGC(pGC), None); - - pGC->clientClipType = CT_NONE; - pGC->clientClip = NULL; - xnestGCPriv(pGC)->nClipRects = 0; -} - -void -xnestDestroyClipHelper(GCPtr pGC) -{ - switch (pGC->clientClipType) - { - default: - case CT_NONE: - break; - - case CT_REGION: - RegionDestroy(pGC->clientClip); - break; - } -} - -void -xnestCopyClip(GCPtr pGCDst, GCPtr pGCSrc) -{ - RegionPtr pRgn; - - switch (pGCSrc->clientClipType) - { - default: - case CT_NONE: - xnestDestroyClip(pGCDst); - break; - - case CT_REGION: - pRgn = RegionCreate(NULL, 1); - RegionCopy(pRgn, pGCSrc->clientClip); - xnestChangeClip(pGCDst, CT_REGION, pRgn, 0); - break; - } -} diff --git a/hw/xnest/XNGC.h b/hw/xnest/XNGC.h index 9f10456..8693d20 100644 --- a/hw/xnest/XNGC.h +++ b/hw/xnest/XNGC.h @@ -35,9 +35,5 @@ void xnestValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr pDrawable); void xnestChangeGC(GCPtr pGC, unsigned long mask); void xnestCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst); void xnestDestroyGC(GCPtr pGC); -void xnestChangeClip(GCPtr pGC, int type, pointer pValue, int nRects); -void xnestDestroyClip(GCPtr pGC); -void xnestDestroyClipHelper(GCPtr pGC); -void xnestCopyClip(GCPtr pGCDst, GCPtr pGCSrc); #endif /* XNESTGC_H */ diff --git a/hw/xwin/wingc.c b/hw/xwin/wingc.c index e351c50..09e9968 100644 --- a/hw/xwin/wingc.c +++ b/hw/xwin/wingc.c @@ -60,26 +60,12 @@ static void winDestroyGCNativeGDI (GCPtr pGC); #if 0 -static void -winChangeClipNativeGDI (GCPtr pGC, int nType, pointer pValue, int nRects); - -static void -winDestroyClipNativeGDI (GCPtr pGC); - -static void -winCopyClipNativeGDI (GCPtr pGCdst, GCPtr pGCsrc); -#endif - -#if 0 /* GC Handling Routines */ const GCFuncs winGCFuncs = { winValidateGCNativeGDI, winChangeGCNativeGDI, winCopyGCNativeGDI, winDestroyGCNativeGDI, - winChangeClipNativeGDI, - winDestroyClipNativeGDI, - winCopyClipNativeGDI, }; #else const GCFuncs winGCFuncs = { @@ -87,9 +73,6 @@ const GCFuncs winGCFuncs = { miChangeGC, miCopyGC, winDestroyGCNativeGDI, - miChangeClip, - miDestroyClip, - miCopyClip, }; #endif @@ -224,28 +207,3 @@ winDestroyGCNativeGDI (GCPtr pGC) /* Invalidate the GC privates pointer */ winSetGCPriv (pGC, NULL); } - -#if 0 -/* See Porting Layer Definition - p. 46 */ -static void -winChangeClipNativeGDI (GCPtr pGC, int nType, pointer pValue, int nRects) -{ - -} - - -/* See Porting Layer Definition - p. 47 */ -static void -winDestroyClipNativeGDI (GCPtr pGC) -{ - -} - - -/* See Porting Layer Definition - p. 47 */ -static void -winCopyClipNativeGDI (GCPtr pGCdst, GCPtr pGCsrc) -{ - -} -#endif diff --git a/include/dix.h b/include/dix.h index 7485e8e..4cb10ee 100644 --- a/include/dix.h +++ b/include/dix.h @@ -599,4 +599,22 @@ extern _X_EXPORT ClientPtr LookupClient( XID id, ClientPtr client); +/* GC clip management */ + +extern _X_EXPORT void DestroyClip( + GCPtr /*pGC*/ +); + +extern _X_EXPORT void ChangeClip( + GCPtr /*pGC*/, + int /*type*/, + pointer /*pvalue*/, + int /*nrects*/ +); + +extern _X_EXPORT void CopyClip( + GCPtr /*pgcDst*/, + GCPtr /*pgcSrc*/ +); + #endif /* DIX_H */ diff --git a/include/gcstruct.h b/include/gcstruct.h index 767adac..933d477 100644 --- a/include/gcstruct.h +++ b/include/gcstruct.h @@ -82,19 +82,6 @@ typedef struct _GCFuncs { void (* DestroyGC)( GCPtr /*pGC*/); - - void (* ChangeClip)( - GCPtr /*pGC*/, - int /*type*/, - pointer /*pvalue*/, - int /*nrects*/); - - void (* DestroyClip)( - GCPtr /*pGC*/); - - void (* CopyClip)( - GCPtr /*pgcDst*/, - GCPtr /*pgcSrc*/); } GCFuncs; /* diff --git a/mi/mibitblt.c b/mi/mibitblt.c index 49e17bd..c6e5816 100644 --- a/mi/mibitblt.c +++ b/mi/mibitblt.c @@ -443,7 +443,7 @@ miOpqStipDrawable(DrawablePtr pDraw, GCPtr pGC, RegionPtr prgnSrc, prgnSrcClip = RegionCreate(NULL, 0); RegionCopy(prgnSrcClip, prgnSrc); RegionTranslate(prgnSrcClip, srcx, 0); - (*pGCT->funcs->ChangeClip)(pGCT, CT_REGION, prgnSrcClip, 0); + ChangeClip(pGCT, CT_REGION, prgnSrcClip, 0); ValidateGC((DrawablePtr)pPixmap, pGCT); /* Since we know pDraw is always a pixmap, we never need to think @@ -528,7 +528,7 @@ miOpqStipDrawable(DrawablePtr pDraw, GCPtr pGC, RegionPtr prgnSrc, ValidateGC(pDraw, pGC); /* put what we hope is a smaller clip region back in the scratch gc */ - (*pGCT->funcs->ChangeClip)(pGCT, CT_NONE, NULL, 0); + ChangeClip(pGCT, CT_NONE, NULL, 0); FreeScratchGC(pGCT); (*pDraw->pScreen->DestroyPixmap)(pPixmap); diff --git a/mi/migc.c b/mi/migc.c index 6d734e1..dce1f30 100644 --- a/mi/migc.c +++ b/mi/migc.c @@ -53,76 +53,6 @@ miDestroyGC(GCPtr pGC) RegionDestroy(pGC->pCompositeClip); } -void -miDestroyClip(GCPtr pGC) -{ - if (pGC->clientClipType == CT_NONE) - return; - else if (pGC->clientClipType == CT_PIXMAP) - { - (*pGC->pScreen->DestroyPixmap) ((PixmapPtr) (pGC->clientClip)); - } - else - { - /* - * we know we'll never have a list of rectangles, since ChangeClip - * immediately turns them into a region - */ - RegionDestroy(pGC->clientClip); - } - pGC->clientClip = NULL; - pGC->clientClipType = CT_NONE; -} - -void -miChangeClip( GCPtr pGC, int type, pointer pvalue, int nrects) -{ - (*pGC->funcs->DestroyClip) (pGC); - if (type == CT_PIXMAP) - { - /* convert the pixmap to a region */ - pGC->clientClip = (pointer) BitmapToRegion(pGC->pScreen, - (PixmapPtr) pvalue); - (*pGC->pScreen->DestroyPixmap) (pvalue); - } - else if (type == CT_REGION) - { - /* stuff the region in the GC */ - pGC->clientClip = pvalue; - } - else if (type != CT_NONE) - { - pGC->clientClip = (pointer) RegionFromRects(nrects, - (xRectangle *) pvalue, - type); - free(pvalue); - } - pGC->clientClipType = (type != CT_NONE && pGC->clientClip) ? CT_REGION : CT_NONE; - pGC->stateChanges |= GCClipMask; -} - -void -miCopyClip(GCPtr pgcDst, GCPtr pgcSrc) -{ - RegionPtr prgnNew; - - switch (pgcSrc->clientClipType) - { - case CT_PIXMAP: - ((PixmapPtr) pgcSrc->clientClip)->refcnt++; - /* Fall through !! */ - case CT_NONE: - (*pgcDst->funcs->ChangeClip) (pgcDst, (int) pgcSrc->clientClipType, - pgcSrc->clientClip, 0); - break; - case CT_REGION: - prgnNew = RegionCreate(NULL, 1); - RegionCopy(prgnNew, (RegionPtr) (pgcSrc->clientClip)); - (*pgcDst->funcs->ChangeClip) (pgcDst, CT_REGION, (pointer) prgnNew, 0); - break; - } -} - /* ARGSUSED */ void miCopyGC(GCPtr pGCSrc, unsigned long changes, GCPtr pGCDst) diff --git a/mi/migc.h b/mi/migc.h index df5805f..c357ba7 100644 --- a/mi/migc.h +++ b/mi/migc.h @@ -26,7 +26,6 @@ from The Open Group. */ - extern _X_EXPORT void miChangeGC( GCPtr /*pGC*/, unsigned long /*mask*/ @@ -36,22 +35,6 @@ extern _X_EXPORT void miDestroyGC( GCPtr /*pGC*/ ); -extern _X_EXPORT void miDestroyClip( - GCPtr /*pGC*/ -); - -extern _X_EXPORT void miChangeClip( - GCPtr /*pGC*/, - int /*type*/, - pointer /*pvalue*/, - int /*nrects*/ -); - -extern _X_EXPORT void miCopyClip( - GCPtr /*pgcDst*/, - GCPtr /*pgcSrc*/ -); - extern _X_EXPORT void miCopyGC( GCPtr /*pGCSrc*/, unsigned long /*changes*/, diff --git a/miext/cw/cw.c b/miext/cw/cw.c index 3da3bc3..94f3b0f 100644 --- a/miext/cw/cw.c +++ b/miext/cw/cw.c @@ -61,21 +61,12 @@ static void cwCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst); static void cwDestroyGC(GCPtr pGC); -static void -cwChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects); -static void -cwCopyClip(GCPtr pgcDst, GCPtr pgcSrc); -static void -cwDestroyClip(GCPtr pGC); GCFuncs cwGCFuncs = { cwValidateGC, cwChangeGC, cwCopyGC, cwDestroyGC, - cwChangeClip, - cwDestroyClip, - cwCopyClip, }; /* Find the real drawable to draw to, and provide offsets that will translate @@ -196,8 +187,7 @@ cwValidateGC(GCPtr pGC, unsigned long stateChanges, DrawablePtr pDrawable) * offset for it. */ - (*pBackingGC->funcs->ChangeClip) (pBackingGC, CT_REGION, - (pointer) pCompositeClip, 0); + ChangeClip (pBackingGC, CT_REGION, pCompositeClip, 0); vals[0].val = x_off - pDrawable->x; vals[1].val = y_off - pDrawable->y; @@ -270,42 +260,6 @@ cwDestroyGC(GCPtr pGC) /* leave it unwrapped */ } -static void -cwChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects) -{ - cwGCPtr pPriv = (cwGCPtr)dixLookupPrivate(&pGC->devPrivates, cwGCKey); - - FUNC_PROLOGUE(pGC, pPriv); - - (*pGC->funcs->ChangeClip)(pGC, type, pvalue, nrects); - - FUNC_EPILOGUE(pGC, pPriv); -} - -static void -cwCopyClip(GCPtr pgcDst, GCPtr pgcSrc) -{ - cwGCPtr pPriv = (cwGCPtr)dixLookupPrivate(&pgcDst->devPrivates, cwGCKey); - - FUNC_PROLOGUE(pgcDst, pPriv); - - (*pgcDst->funcs->CopyClip)(pgcDst, pgcSrc); - - FUNC_EPILOGUE(pgcDst, pPriv); -} - -static void -cwDestroyClip(GCPtr pGC) -{ - cwGCPtr pPriv = (cwGCPtr)dixLookupPrivate(&pGC->devPrivates, cwGCKey); - - FUNC_PROLOGUE(pGC, pPriv); - - (*pGC->funcs->DestroyClip)(pGC); - - FUNC_EPILOGUE(pGC, pPriv); -} - /* * Screen wrappers. */ @@ -424,7 +378,7 @@ cwCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) -pBackingPixmap->screen_x, -pBackingPixmap->screen_y); - (*pGC->funcs->ChangeClip) (pGC, CT_REGION, pClip, 0); + ChangeClip(pGC, CT_REGION, pClip, 0); ValidateGC(&pBackingPixmap->drawable, pGC); @@ -432,7 +386,7 @@ cwCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) &pBackingPixmap->drawable, pGC, src_x, src_y, w, h, dst_x, dst_y); - (*pGC->funcs->DestroyClip) (pGC); + DestroyClip(pGC); FreeScratchGC(pGC); } diff --git a/miext/damage/damage.c b/miext/damage/damage.c index 21cbb78..b683f2c 100644 --- a/miext/damage/damage.c +++ b/miext/damage/damage.c @@ -427,13 +427,9 @@ static void damageValidateGC(GCPtr, unsigned long, DrawablePtr); static void damageChangeGC(GCPtr, unsigned long); static void damageCopyGC(GCPtr, unsigned long, GCPtr); static void damageDestroyGC(GCPtr); -static void damageChangeClip(GCPtr, int, pointer, int); -static void damageDestroyClip(GCPtr); -static void damageCopyClip(GCPtr, GCPtr); static GCFuncs damageGCFuncs = { damageValidateGC, damageChangeGC, damageCopyGC, damageDestroyGC, - damageChangeClip, damageDestroyClip, damageCopyClip }; static GCOps damageGCOps; @@ -514,33 +510,6 @@ damageCopyGC (GCPtr pGCSrc, DAMAGE_GC_FUNC_EPILOGUE (pGCDst); } -static void -damageChangeClip (GCPtr pGC, - int type, - pointer pvalue, - int nrects) -{ - DAMAGE_GC_FUNC_PROLOGUE (pGC); - (*pGC->funcs->ChangeClip) (pGC, type, pvalue, nrects); - DAMAGE_GC_FUNC_EPILOGUE (pGC); -} - -static void -damageCopyClip(GCPtr pgcDst, GCPtr pgcSrc) -{ - DAMAGE_GC_FUNC_PROLOGUE (pgcDst); - (* pgcDst->funcs->CopyClip)(pgcDst, pgcSrc); - DAMAGE_GC_FUNC_EPILOGUE (pgcDst); -} - -static void -damageDestroyClip(GCPtr pGC) -{ - DAMAGE_GC_FUNC_PROLOGUE (pGC); - (* pGC->funcs->DestroyClip)(pGC); - DAMAGE_GC_FUNC_EPILOGUE (pGC); -} - #define TRIM_BOX(box, pGC) if (pGC->pCompositeClip) { \ BoxPtr extents = &pGC->pCompositeClip->extents;\ if(box.x1 < extents->x1) box.x1 = extents->x1; \ diff --git a/miext/rootless/rootlessGC.c b/miext/rootless/rootlessGC.c index 68a9dc7..93080c7 100644 --- a/miext/rootless/rootlessGC.c +++ b/miext/rootless/rootlessGC.c @@ -56,10 +56,6 @@ static void RootlessValidateGC(GCPtr pGC, unsigned long changes, static void RootlessChangeGC(GCPtr pGC, unsigned long mask); static void RootlessCopyGC(GCPtr pGCSrc, unsigned long mask, GCPtr pGCDst); static void RootlessDestroyGC(GCPtr pGC); -static void RootlessChangeClip(GCPtr pGC, int type, pointer pvalue, - int nrects); -static void RootlessDestroyClip(GCPtr pGC); -static void RootlessCopyClip(GCPtr pgcDst, GCPtr pgcSrc); Bool RootlessCreateGC(GCPtr pGC); @@ -68,9 +64,6 @@ GCFuncs rootlessGCFuncs = { RootlessChangeGC, RootlessCopyGC, RootlessDestroyGC, - RootlessChangeClip, - RootlessDestroyClip, - RootlessCopyClip, }; // GC operations @@ -371,28 +364,6 @@ static void RootlessDestroyGC(GCPtr pGC) GCFUNC_WRAP(pGC); } -static void RootlessChangeClip(GCPtr pGC, int type, pointer pvalue, int nrects) -{ - GCFUNC_UNWRAP(pGC); - pGC->funcs->ChangeClip(pGC, type, pvalue, nrects); - GCFUNC_WRAP(pGC); -} - -static void RootlessDestroyClip(GCPtr pGC) -{ - GCFUNC_UNWRAP(pGC); - pGC->funcs->DestroyClip(pGC); - GCFUNC_WRAP(pGC); -} - -static void RootlessCopyClip(GCPtr pgcDst, GCPtr pgcSrc) -{ - GCFUNC_UNWRAP(pgcDst); - pgcDst->funcs->CopyClip(pgcDst, pgcSrc); - GCFUNC_WRAP(pgcDst); -} - - /* * GC ops * diff --git a/render/mirect.c b/render/mirect.c index 4fb347a..73a1651 100644 --- a/render/mirect.c +++ b/render/mirect.c @@ -66,7 +66,7 @@ miColorRects (PicturePtr pDst, pClip = RegionCreate(NULL, 1); RegionCopy(pClip, (RegionPtr) pClipPict->clientClip); - (*pGC->funcs->ChangeClip) (pGC, CT_REGION, pClip, 0); + ChangeClip(pGC, CT_REGION, pClip, 0); } ChangeGC (NullClient, pGC, mask, tmpval); diff --git a/xfixes/region.c b/xfixes/region.c index 42d5d7c..8880da4 100644 --- a/xfixes/region.c +++ b/xfixes/region.c @@ -637,7 +637,7 @@ ProcXFixesSetGCClipRegion (ClientPtr client) vals[0].val = stuff->xOrigin; vals[1].val = stuff->yOrigin; ChangeGC (NullClient, pGC, GCClipXOrigin|GCClipYOrigin, vals); - (*pGC->funcs->ChangeClip)(pGC, pRegion ? CT_REGION : CT_NONE, (pointer)pRegion, 0); + ChangeClip(pGC, pRegion ? CT_REGION : CT_NONE, pRegion, 0); return Success; } -- 1.7.3.1 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
