commit dfda3c696dd72ecc5cc4fa69d8bb4521ba554cf3 Author: Eric Anholt Date: Thu Oct 28 20:46:22 2010 -0700 Replace usage of DamageRegionAppend with DamageDamageRegion to fix reportAfter. In all these cases, any rendering implied by this damage has already occurred, and we want to get the damage out to the client. Some of the DamageRegionAppend calls were explicitly telling damage to flush the reportAfter damage out, but not all. Bug #30260. Fixes the compiz wallpaper plugin with client damage changed to reportAfter. Signed-off-by: Eric Anholt Reviewed-by: Keith Packard Signed-off-by: Keith Packard (cherry picked from commit f36153e3ef6b13a87d016caab09cc9be274b0dd5) diff -rupN xorg-server-1.9.2/composite/compalloc.c xorg-server-1.9.2.902/composite/compalloc.c --- xorg-server-1.9.2/composite/compalloc.c 2010-06-06 23:37:03.000000000 +0200 +++ xorg-server-1.9.2.902/composite/compalloc.c 2010-11-23 20:07:18.000000000 +0100 @@ -238,7 +238,7 @@ compFreeClientWindow (WindowPtr pWin, XI DamageRegister (&pWin->drawable, cw->damage); cw->damageRegistered = TRUE; pWin->redirectDraw = RedirectDrawAutomatic; - DamageRegionAppend(&pWin->drawable, &pWin->borderSize); + DamageDamageRegion(&pWin->drawable, &pWin->borderSize); } if (wasMapped && !pWin->mapped) { diff -rupN xorg-server-1.9.2/composite/compwindow.c xorg-server-1.9.2.902/composite/compwindow.c --- xorg-server-1.9.2/composite/compwindow.c 2010-09-11 23:20:51.000000000 +0200 +++ xorg-server-1.9.2.902/composite/compwindow.c 2010-11-23 20:07:18.000000000 +0100 @@ -519,7 +519,7 @@ compCopyWindow (WindowPtr pWin, DDXPoint RegionTranslate(prgnSrc, pWin->drawable.x - ptOldOrg.x, pWin->drawable.y - ptOldOrg.y); - DamageRegionAppend(&pWin->drawable, prgnSrc); + DamageDamageRegion(&pWin->drawable, prgnSrc); } cs->CopyWindow = pScreen->CopyWindow; pScreen->CopyWindow = compCopyWindow; @@ -598,7 +598,7 @@ compSetRedirectBorderClip (WindowPtr pWi /* * Report that as damaged so it will be redrawn */ - DamageRegionAppend(&pWin->drawable, &damage); + DamageDamageRegion(&pWin->drawable, &damage); RegionUninit(&damage); /* * Save the new border clip region diff -rupN xorg-server-1.9.2/damageext/damageext.c xorg-server-1.9.2.902/damageext/damageext.c --- xorg-server-1.9.2/damageext/damageext.c 2010-08-13 10:02:40.000000000 +0200 +++ xorg-server-1.9.2.902/damageext/damageext.c 2010-11-23 20:07:18.000000000 +0100 @@ -223,7 +223,7 @@ ProcDamageCreate (ClientPtr client) if (pDrawable->type == DRAWABLE_WINDOW) { pRegion = &((WindowPtr) pDrawable)->borderClip; - DamageRegionAppend(pDrawable, pRegion); + DamageDamageRegion(pDrawable, pRegion); } return Success; @@ -293,7 +293,7 @@ ProcDamageAdd (ClientPtr client) * screen coordinates like damage expects. */ RegionTranslate(pRegion, pDrawable->x, pDrawable->y); - DamageRegionAppend(pDrawable, pRegion); + DamageDamageRegion(pDrawable, pRegion); RegionTranslate(pRegion, -pDrawable->x, -pDrawable->y); return Success; diff -rupN xorg-server-1.9.2/exa/exa.c xorg-server-1.9.2.902/exa/exa.c --- xorg-server-1.9.2/exa/exa.c 2010-07-17 21:36:54.000000000 +0200 +++ xorg-server-1.9.2.902/exa/exa.c 2010-11-23 20:07:18.000000000 +0100 @@ -159,8 +159,7 @@ exaPixmapDirty (PixmapPtr pPix, int x1, return; RegionInit(®ion, &box, 1); - DamageRegionAppend(&pPix->drawable, ®ion); - DamageRegionProcessPending(&pPix->drawable); + DamageDamageRegion(&pPix->drawable, ®ion); RegionUninit(®ion); } diff -rupN xorg-server-1.9.2/glx/glxdri.c xorg-server-1.9.2.902/glx/glxdri.c --- xorg-server-1.9.2/glx/glxdri.c 2010-07-17 21:36:54.000000000 +0200 +++ xorg-server-1.9.2.902/glx/glxdri.c 2010-11-23 20:07:18.000000000 +0100 @@ -834,9 +834,7 @@ static void __glXReportDamage(__DRIdrawa RegionInit(®ion, (BoxPtr) rects, num_rects); RegionTranslate(®ion, pDraw->x, pDraw->y); - DamageRegionAppend(pDraw, ®ion); - /* This is wrong, this needs a seperate function. */ - DamageRegionProcessPending(pDraw); + DamageDamageRegion(pDraw, ®ion); RegionUninit(®ion); __glXleaveServer(GL_FALSE); diff -rupN xorg-server-1.9.2/hw/xfree86/modes/xf86Rotate.c xorg-server-1.9.2.902/hw/xfree86/modes/xf86Rotate.c --- xorg-server-1.9.2/hw/xfree86/modes/xf86Rotate.c 2010-06-06 23:37:03.000000000 +0200 +++ xorg-server-1.9.2.902/hw/xfree86/modes/xf86Rotate.c 2010-11-23 20:07:18.000000000 +0100 @@ -168,7 +168,7 @@ xf86CrtcDamageShadow (xf86CrtcPtr crtc) if (damage_box.x2 > pScreen->width) damage_box.x2 = pScreen->width; if (damage_box.y2 > pScreen->height) damage_box.y2 = pScreen->height; RegionInit(&damage_region, &damage_box, 1); - DamageRegionAppend (&(*pScreen->GetScreenPixmap)(pScreen)->drawable, + DamageDamageRegion (&(*pScreen->GetScreenPixmap)(pScreen)->drawable, &damage_region); RegionUninit(&damage_region); crtc->shadowClear = TRUE;