A couple of questions about the new order
"Robert O'Callahan" <[email protected]>
| Newsgroups | gmane.comp.freedesktop.xserver |
|---|---|
| Message-ID | <[email protected]> |
I maintain the rendering manager for Mozilla. I've a couple of questions about how things could work in the new world. Will we be able to use XDamage, XComposite etc (maybe XTest?) to fully encapsulate legacy plugins that manage their own X windows? We need to be able to stop them from rendering directly to the screen and directly receiving input, capture their rendering into our own arbitrary offscreen buffer, and poke them with input events when we feel like it. We have a single logical canvas that for annoying reasons has to be projected on top of a whole stack of GTK windows. We want to be able to combine updates to this whole tree of X windows, geometry changes to those windows, and scrolling, all into one visually atomic operation. How can this be done and how would it interact with XComposite? Here's a sort of plan: 1) Create an offscreen buffer for our logical canvas 2) Copy some of our old pixels into this buffer from XComposite's backing store (when scrolling is happening) 3) Draw new pixels into the buffer 4) Change geometry of X child windows 5) Atomically update and validate most (but maybe not all, e.g., non-encapsulated plugins) child X windows with appropriate regions of this buffer Will we be able to do this? Would the result be optimal? I don't see any way to avoid having separate application and XComposite backing buffers while the application is rendering. If you have just one buffer then you have a problem if XComposite wants to recompose the screen while the app is in the middle of rendering. Thanks, Rob