XDamage extension over-reports window damage

Jonathan Lennox lennox at cs.columbia.edu
Sat Jan 29 08:39:07 PST 2005


On Wednesday, January 26 2005, "Keith Packard" wrote to "Jonathan Lennox, xorg at lists.freedesktop.org, Keith Packard" saying:

> > In this case, with raw or delta damage report types, it seems like
> > damage reports should be sent just for the area of fvwm2's trim, but instead
> > I get a rectangle encompassing the entire window. 
> 
> Again, damage is internally recorded in rectangular units, so an operation 
> which ends up reporting only a single large rectangle can appear to damage 
> the internal window contents.

Indeed, this is what's happening -- fvwm is using PolySegment to draw the
window border, so damage computes a bounding rectangle of the whole window.

It seems like one straightforward thing to do would be to pass
damageDamageRegion the relevant GC's subwindow_mode flag, and if it's
ClipByChildren clip the damage region appropriately.

Alternately, damagePolySegment could actually construct a region encompassing
each segment that's drawn, rather than one big bounding rectangle, but that
seems like more work, might have efficiency issues, and would need to be
repeated for each of the damagePoly* operations.

-- 
Jonathan Lennox
lennox at cs.columbia.edu



More information about the xorg mailing list