[PATCH] damage: Remove the 'damage window' resource type
Keith Packard
keithp at keithp.com
Mon Mar 28 11:03:39 PDT 2011
On Mon, 28 Mar 2011 10:56:08 -0400, Adam Jackson <ajax at redhat.com> wrote:
> No code to create objects of this type ever existed.
I suspect that's a bug then -- the damage object is going to hang around
with a dead pointer to the window when it is destroyed.
Here's a completely untested patch that hooks the window id to the
damage record so that it is destroyed when the window is destroyed:
I think this gets the ENOMEM case right -- AddResource will call
FreeDamageExtWin if it fails, which will call FreeResource on the damage
ID, freeing the damage structure.
diff --git a/damageext/damageext.c b/damageext/damageext.c
index 754383d..20f772b 100644
--- a/damageext/damageext.c
+++ b/damageext/damageext.c
@@ -220,8 +220,10 @@ ProcDamageCreate (ClientPtr client)
DamageSetReportAfterOp (pDamageExt->pDamage, TRUE);
DamageRegister (pDamageExt->pDrawable, pDamageExt->pDamage);
- if (pDrawable->type == DRAWABLE_WINDOW)
+ if (WindowDrawable(pDrawable->type))
{
+ if (!AddResource (pDrawable->id, DamageExtWinType, (pointer) pDamageExt))
+ return BadAlloc;
pRegion = &((WindowPtr) pDrawable)->borderClip;
DamageDamageRegion(pDrawable, pRegion);
}
--
keith.packard at intel.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg-devel/attachments/20110328/cc8c9cb0/attachment.pgp>
More information about the xorg-devel
mailing list