Finishing Composite to handle transformed windows
Dan Oscarsson
Dan.Oscarsson at tietoenator.com
Sun Jan 8 09:19:40 PST 2006
Maybe it would be a good time to really think how X should work with
window managers and a 2D or 3D desktop. The current works with LG,
"topmost windows", compositing, redirection and opengl feels like a
mess. With lots of exceptions.
"topmost windows" sounds like a bad fix.
My vision of how it could work:
- opengl can be used on any window, including root window.
two applications can share a window with opengl (that is both
can use opengl on it) so that for example both window manager and
application can use opengl on a window.
- a window manager must control all window handling and focus handling.
the override-redirect flag must be possible to override by window
manager (who can display those windows without decoration, and
if they are retained (that is pixels stored in offscreen memory)
application do not need to wait for damage event).
Focus handling must be redirected - only the window manager
may decide which window will get focus.
- a 3D or compositing window manager will have all windows redirected
to offscreen memory. It will then display them in a 3D or 2D space
on the root window (the screen). As a window can be shared by opengl
between window manager an an application (like in LG), the
application draws in window which can be in graphicas card memory,
and window manager scales/transforms window to the display directely
using opengl and within graphics card. My feeling of LG today
is that it is working as a part outside the window system - I would
like it to work as a part integrated with the window system.
It would have been nice, like you could in NeWS, to have a transform
matrix attached to a window so they could be scaled, rotated or
have other transformation.
- In a way you could see each application window as a "display" with
subwindows. Each application just uses opengl (or normal X) in
window. Window manager will compose the application windows onto
real display (using 3D or 2D look).
- If you are using a 3D world, event coordinates will have to be
translated with the 3D transformation matrix each window has.
Not easy to describe in a few words. In some other words: allow each
application window work as an offscreen window. No way to bypass window
manager (no override redirect). Window manager have sole resposiblity to
handle focus and displaying of windows on screen.
Please try to create a solution that is simple and elegant.
Dan
More information about the xorg
mailing list