[PATCH 7/7] damageext: Xineramify

Adam Jackson ajax at redhat.com
Mon Sep 9 09:22:16 PDT 2013


On Tue, 2013-09-03 at 14:23 -0700, Eric Anholt wrote:

> Isn't this missing translation for the regions between the client's
> damage record and the damage record for windows on the root pixmap?
> Looking at, say, PanoramiXPolyFillRectangle, there's:
> 
>     isRoot = IS_ROOT_DRAWABLE(draw);
>     ...
>             if (isRoot) {
>                 int x_off = screenInfo.screens[j]->x;
>                 int y_off = screenInfo.screens[j]->y;
>                 ...
>             }

Yes.

> Also, the global for redirecting the per-screen creates to the client's
> drawable looked goofy, but I suspect once you solve the translation
> thing, that will have gone away.

I don't think it will.  When panoramix is active, you get an XRT_WINDOW
with the XID from the client, and then N RT_WINDOWs backing it, where
the one on screen 0 has the same XID and the rest are from FakeClientID.
Then, in this patch, we make one damage listener per screen.  Then when
drawing happens from the client and hits multiple screens, the report
function gets called per-screen; since the report function is what emits
the event, it needs to be able to write the right XID into the event,
but we don't have a way to get back to the client-visible XID short of
tracking it ourselves.

- ajax



More information about the xorg-devel mailing list