Initial Implementation of a Wayland Server in KWin. The current
state allows to render Wayland "Clients" in the normal EGL
compositing backend. The content gets updated correctly when other
windows are damaged at the same time, but Wayland damage events
seem to be lost, when there are no other triggered repaints.
Wayland clients are added to the scene in the same way as Unmanaged
X11 windows and Deleted windows: on top of everything else. It is
currently not yet possible to interact in any way with the clients.
They do not get input events and you cannot move them or do anything
else fancy with them. Though they are already nicely integrated into
the Effects system. So all effects which handle unmanaged should
also handle the Wayland clients.
All new Wayland relevant code can be found in the directory wayland.
It contains the Server implementation (wayland.(cpp|h)), a representation
for Surfaces (surface.(cpp|h)) and a new subclass of Toplevel
All new classes are in a new namespace KWin::Wayland, the idea is
to move all X11 classes in a namespace KWin:X11 to better separate
what is generic (namepsace KWin) and what is backend specific.
The changes in the existing code base are tried to be kept to a
minimum. The biggest change is in the OpenGL EGL Scene which now
has to render Wayland buffers and XPixmaps. Also composite.cpp
has seen some changes to start/stop the Wayland server and adjust
the Toplevel's compositing functions to not create any X resources
for the Wayland client. This has to be split in a better way by
moving all X11 related code in a X11 specific implementation.