--- xorg-server-1.1.1/miext/cw/cw_ops.c.graphics-expose 2006-07-05 20:23:57.000000000 -0400 +++ xorg-server-1.1.1/miext/cw/cw_ops.c 2006-10-04 23:54:03.000000000 -0400 @@ -30,6 +30,7 @@ #include "gcstruct.h" #include "pixmapstr.h" #include "cw.h" +#include "mi.h" #define SETUP_BACKING_DST(_pDst, _pGC) \ cwGCPtr pGCPrivate = getCwGC (_pGC); \ @@ -185,7 +186,7 @@ int w, int h, int dstx, int dsty) { int odstx, odsty; - RegionPtr exposed = NULL; + int osrcx, osrcy; SETUP_BACKING_DST(pDst, pGC); SETUP_BACKING_SRC(pSrc, pGC); @@ -193,19 +194,20 @@ odstx = dstx; odsty = dsty; + osrcx = srcx; + osrcy = srcy; CW_OFFSET_XY_DST(dstx, dsty); CW_OFFSET_XY_SRC(srcx, srcy); - exposed = (*pBackingGC->ops->CopyArea)(pBackingSrc, pBackingDst, - pBackingGC, srcx, srcy, w, h, - dstx, dsty); - - if (exposed != NULL) - REGION_TRANSLATE(pDst->pScreen, exposed, odstx - dstx, odsty - dsty); - + (*pBackingGC->ops->CopyArea)(pBackingSrc, pBackingDst, + pBackingGC, srcx, srcy, w, h, + dstx, dsty); + EPILOGUE(pGC); - return exposed; + return miHandleExposures(pSrc, pDst, pGC, + osrcx, osrcy, w, h, + odstx, odsty, 0); } static RegionPtr @@ -213,7 +215,7 @@ int w, int h, int dstx, int dsty, unsigned long plane) { int odstx, odsty; - RegionPtr exposed = NULL; + int osrcx, osrcy; SETUP_BACKING_DST(pDst, pGC); SETUP_BACKING_SRC(pSrc, pGC); @@ -221,19 +223,20 @@ odstx = dstx; odsty = dsty; + osrcx = srcx; + osrcy = srcy; CW_OFFSET_XY_DST(dstx, dsty); CW_OFFSET_XY_SRC(srcx, srcy); - exposed = (*pBackingGC->ops->CopyPlane)(pBackingSrc, pBackingDst, - pBackingGC, srcx, srcy, w, h, - dstx, dsty, plane); - - if (exposed != NULL) - REGION_TRANSLATE(pDst->pScreen, exposed, odstx - dstx, odsty - dsty); + (*pBackingGC->ops->CopyPlane)(pBackingSrc, pBackingDst, + pBackingGC, srcx, srcy, w, h, + dstx, dsty, plane); EPILOGUE(pGC); - return exposed; + return miHandleExposures(pSrc, pDst, pGC, + osrcx, osrcy, w, h, + odstx, odsty, plane); } static void