Idea how to fix slow window resize in a composited desktop

David Reveman davidr at novell.com
Thu Sep 6 13:01:52 PDT 2007


On Mon, 2007-09-03 at 13:52 +0200, Dennis Kasprzyk wrote:
> Hi,
> 
> I think that I have found a solution for the slow window resize in a 
> composited desktop environment. I don't know enough about the xserver 
> internals to say that my idea will work, but I would like to share it with 
> you.
> 
> To prevent the need the reallocation of new window pixmaps on the xserver side 
> and it's handling on the composite manager side during a frequent window 
> resize, we could redirect the drawing of the window to a pixmap that is 
> bigger than the window:
> 
> - The composite/window manager uses XCompositeNameWindowPixmap for the normal 
> window handling.
> - If the user clicks on a window edge (=wants to resize a window), then the CM 
> creates a big (screen size?) pixmap and calls a new 
> XCompositeAssignPixmapToWindow function and frees the old window pixmap.
> - The xserver copies the content of the window to the new pixmap and redirects 
> all drawings to the new big pixmap.
> - As long the window fits into the big pixmap all resizes will directly go 
> into it. If the window gets bigger than the current assigned pixmap, then the 
> CM will need to create a bigger pixmap or switch to the current 
> XcompositeNameWindowPixmap handling.
> - If the user releases the window edge (=terminated resizing) then the CM can 
> call XCompositeNameWindowPixmap to get a window sized pixmap and can free the 
> big one.
> - The xserver can then copy the window content from the big pixmap to the new 
> window sized pixmap.

Sure,

I've been thinking about re-parenting client windows into a larger
(screen-size) top-level window while resizing them. This should give the
same result as what you're suggesting but without the need to add a
XCompositeAssignPixmapToWindow request.

It shouldn't be very hard to make the compiz resize plugin support this
and it would be interesting to see what kind of performance improvement
it could provide.

-David




More information about the xorg mailing list