The Compositor class needs an overhaul. Here is a crude overall plan.
##Preliminary cleanup
D21654 D21655
D22218 D22220
D22225 D22270
D22277
##Structure
* 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. [1][2]
* Introduce `Frame` objects encapsulating single frames, each created at beginning of compositing run and destroyed again on next page-flip.
##Features
* 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
##Scene integration
We already can paint per screen. Maybe this is already sufficient.
##Platform integration
With `AbstractOutput`.
[1] https://git.reviewboard.kde.org/r/106844/
[2] https://git.reviewboard.kde.org/r/110232