The Compositor class needs an overhaul. Here is a crude overall plan.
- Split up Compositor class into X and Wayland subclasses. D22195
- All the timers for starting and deleting unused effects properties can likely go into the X child class only. It's only relevant when Compositor selection is given up and reclaimed on X. . There is one special case though also on Wayland: when a Gl error is detected in theory the Scene could request a reinit of the Compositor.
- Introduce Frame objects encapsulating single frames, each created at beginning of compositing run and destroyed again on next page-flip.
- Listen for vblank events via GLX_OML_sync_control and DRM page flips.
- Fall back to timer when not available (When it's not? Framebuffer?).
- Some effects have internal timers and require KWin to not block. Keep that possible. Same holds of course for input on Wayland, but this is already threaded.
- Compositing per AbstractOutput (i.e. crtc) if possible on Wayland and X, or if not only on Wayland.
- One thread per output T5710
We already can paint per screen. Maybe this is already sufficient.