Adam Jackson <[email protected]> writes:

I've been reading code this afternoon, and I think your approach is
subtly broken.

PanoramiXDamageQueue traps the damage additions to screen 0, creates a
Dispatch callback and then waits until the request completes before
merging damage. Other screens call PanoramiXDamageAccumulate.

This assumes that damage will be delivered to all screens, which I don't
think is always the case as rendering which is clipped out will generate
no damage, and hence no callback.

I think you just want to have all of the screens hit the same callback
and add damage to the screen 0 instance; that way, it won't matter which
subset of the screens receive damage.

Independently, I'm not thrilled with a DIX-level DispatchCallback, but I
have to admit that I don't have a better solution -- adding it down
inside panoramix would mean touching every single rendering function to
process the queued damage, and there's no other place between the
panoramix wrapper and Dispatch.

-- 
[email protected]

Attachment: pgpOlEtn3imrg.pgp
Description: PGP signature

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to