With AbstractOutput all backends have a common parent class and Wayland session ones the subclass AbstractWaylandOutput. The later one includes all the necessary functionality for creation of KWayland::Server::OutputDeviceInterface objects.
Goal 1: Let all backends use the AbstractWaylandOutput functions instead of the alternative code path in WaylandServer::syncOutputsToWayland.
D23473 D23477 D23478 D23479 D23485
Goal 2: Make sure an output device always exists for an output. Remove unnecessary checks.
D23486
Goal 3: Single source of truth for data in output device objects (remove data duplication in AbstractWaylandOutput).
D23489 D23493 D23495 D23496 D23546
Goal 4: Improve robustness of basic output functionality
D23591 D23600 D23602