Insufficient check for disabling GL frame synchronisation
Submitted by Emmanuele Bassi
The X11 backend currently checks if a compositor is running in order to decide whether or not to use frame synchronisation on the GL driver. This is not really enough, as a compositor may unredirect a full screen window while still happily running in the background — while the full screen window has frame synchronisation disabled and visibly tries to chuck as many frames as it can to the screen.
XComposite does not have any API to detect whether a window has been unredirected; the closest thing we have is XCompositeNameWindowPixmap(), which requires a full roundtrip with the server.
A potential workaround would be to have the compositor set a property on a window that is being unredirected, something like
_NET_WM_CM_UNREDIRECTED; or use a client message. The toolkit would then be responsible for maintaining client-side state in sync.