zzag created this revision. zzag added a reviewer: KWin. Herald added a project: Frameworks. Herald added a subscriber: kde-frameworks-devel. zzag requested review of this revision.
REVISION SUMMARY So far all double-buffered properties in our implementation of xdg-shell weren't actually double-buffered. When a property setter is invoked, we pray to the God hoping that the client committed associated surface. This change introduces private SurfaceRole class. The new class provides a way for SurfaceInterface to commit pending state of associated shell surface. The chosen architecture allows us to do more in the future. For example, we could use SurfaceRole to prevent associating several roles to a single wl_surface object, e.g. xdg-toplevel to a pointer surface, etc. TEST PLAN This change breaks support for client-side decorated clients in KWin. REPOSITORY R127 KWayland BRANCH surface-role REVISION DETAIL https://phabricator.kde.org/D23745 AFFECTED FILES autotests/client/test_xdg_shell_stable.cpp autotests/client/test_xdg_shell_v6.cpp src/server/CMakeLists.txt src/server/generic_shell_surface_p.h src/server/shell_interface.cpp src/server/surface_interface.cpp src/server/surface_interface.h src/server/surface_interface_p.h src/server/surfacerole.cpp src/server/surfacerole_p.h src/server/xdgshell_interface.cpp src/server/xdgshell_interface.h src/server/xdgshell_interface_p.h src/server/xdgshell_stable_interface.cpp src/server/xdgshell_v5_interface.cpp src/server/xdgshell_v6_interface.cpp To: zzag, #kwin Cc: kde-frameworks-devel, LeGast00n, GB_2, michaelh, ngraham, bruns