diff options
-rw-r--r-- | exa/exa_render.c | 1 | ||||
-rw-r--r-- | hw/xfree86/exa/exa_render.c | 1 | ||||
-rw-r--r-- | hw/xfree86/exa/exapict.c | 1 | ||||
-rwxr-xr-x | miext/damage/damage.c | 18 |
4 files changed, 13 insertions, 8 deletions
diff --git a/exa/exa_render.c b/exa/exa_render.c index e71f53575..24b59efac 100644 --- a/exa/exa_render.c +++ b/exa/exa_render.c @@ -511,6 +511,7 @@ exaComposite(CARD8 op, REGION_RECTS(®ion), REGION_NUM_RECTS(®ion), xSrc - xDst, ySrc - yDst, FALSE, FALSE, 0, NULL); + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); return; } } diff --git a/hw/xfree86/exa/exa_render.c b/hw/xfree86/exa/exa_render.c index e71f53575..24b59efac 100644 --- a/hw/xfree86/exa/exa_render.c +++ b/hw/xfree86/exa/exa_render.c @@ -511,6 +511,7 @@ exaComposite(CARD8 op, REGION_RECTS(®ion), REGION_NUM_RECTS(®ion), xSrc - xDst, ySrc - yDst, FALSE, FALSE, 0, NULL); + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); return; } } diff --git a/hw/xfree86/exa/exapict.c b/hw/xfree86/exa/exapict.c index e71f53575..24b59efac 100644 --- a/hw/xfree86/exa/exapict.c +++ b/hw/xfree86/exa/exapict.c @@ -511,6 +511,7 @@ exaComposite(CARD8 op, REGION_RECTS(®ion), REGION_NUM_RECTS(®ion), xSrc - xDst, ySrc - yDst, FALSE, FALSE, 0, NULL); + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); return; } } diff --git a/miext/damage/damage.c b/miext/damage/damage.c index 9fb3d8ee3..a1ac01a50 100755 --- a/miext/damage/damage.c +++ b/miext/damage/damage.c @@ -125,7 +125,6 @@ damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip, damageScrPriv(pScreen); drawableDamage(pDrawable); DamagePtr pNext; - RegionPtr pClip; RegionRec clippedRec; RegionPtr pDamageRegion; RegionRec pixClip; @@ -169,7 +168,7 @@ damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip, RegionPtr pTempRegion = NotClippedByChildren((WindowPtr)(pDrawable)); REGION_INTERSECT(pScreen, pRegion, pRegion, pTempRegion); - REGION_UNINIT(pScreen, pTempRegion); + REGION_DESTROY(pScreen, pTempRegion); } /* If subWindowMode is set to an invalid value, don't perform * any drawable-based clipping. */ @@ -223,19 +222,19 @@ damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip, if (clip || pDamage->pDrawable != pDrawable) { pDamageRegion = &clippedRec; - if (pDamage->pDrawable->type == DRAWABLE_WINDOW) - pClip = &((WindowPtr)(pDamage->pDrawable))->borderClip; - else - { + if (pDamage->pDrawable->type == DRAWABLE_WINDOW) { + REGION_INTERSECT (pScreen, pDamageRegion, pRegion, + &((WindowPtr)(pDamage->pDrawable))->borderClip); + } else { BoxRec box; box.x1 = draw_x; box.y1 = draw_y; box.x2 = draw_x + pDamage->pDrawable->width; box.y2 = draw_y + pDamage->pDrawable->height; REGION_INIT(pScreen, &pixClip, &box, 1); - pClip = &pixClip; + REGION_INTERSECT (pScreen, pDamageRegion, pRegion, &pixClip); + REGION_UNINIT(pScreen, &pixClip); } - REGION_INTERSECT (pScreen, pDamageRegion, pRegion, pClip); /* * Short circuit empty results */ @@ -269,6 +268,7 @@ damageDamageRegion (DrawablePtr pDrawable, RegionPtr pRegion, Bool clip, &pDamage->damage, pDamageRegion); (*pDamage->damageReport) (pDamage, &tmpRegion, pDamage->closure); } + REGION_UNINIT(pScreen, &tmpRegion); break; case DamageReportBoundingBox: tmpBox = *REGION_EXTENTS (pScreen, &pDamage->damage); @@ -1940,6 +1940,8 @@ DamageSubtract (DamagePtr pDamage, REGION_TRANSLATE (pDrawable->pScreen, &pDamage->damage, pDrawable->x, pDrawable->y); REGION_INTERSECT (pDrawable->pScreen, &pDamage->damage, &pDamage->damage, pClip); REGION_TRANSLATE (pDrawable->pScreen, &pDamage->damage, -pDrawable->x, -pDrawable->y); + if (pDrawable->type != DRAWABLE_WINDOW) + REGION_UNINIT(pDrawable->pScreen, &pixmapClip); } return REGION_NOTEMPTY (pDrawable->pScreen, &pDamage->damage); } |