kwin/src/wayland
Vlad Zagorodniy 443721b555 [server] Make double-buffered properties in xdg-shell double-buffered
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.

Reviewers: #kwin

Subscribers: kde-frameworks-devel

Tags: #frameworks

Differential Revision: https://phabricator.kde.org/D23745
2019-11-26 22:49:04 +02:00
..
autotests [server] Make double-buffered properties in xdg-shell double-buffered 2019-11-26 22:49:04 +02:00
cmake/Modules Use wayland-protocols 2019-07-08 10:53:44 +03:00
server [server] Make double-buffered properties in xdg-shell double-buffered 2019-11-26 22:49:04 +02:00
tests Use const_iterator 2019-09-14 11:09:16 +02:00
tools [KWayland] Port away from deprecated API in Qt 5.14 2019-09-17 14:20:17 +02:00
.arcconfig Add .arcconfig 2016-01-25 10:53:57 +01:00
.arclint Add the arclint file in kwayland 2018-06-15 14:13:12 +05:30
appmenu_interface.cpp Autogenerate logging file + fix categories file 2018-11-20 08:13:42 +01:00
appmenu_interface.h Fix minor EBN issues 2018-09-12 20:49:38 +03:00
blur_interface.cpp Don't crash if a client (legally) uses a deleted global 2017-09-19 13:50:16 +01:00
blur_interface.h [server] Add more documentation 2015-09-10 13:36:42 +02:00
clientconnection.cpp [server] Use deleteLater when a ClientConnection gets destroyed 2016-10-11 07:41:17 +02:00
clientconnection.h pid_t is defined in sys/types.h 2016-05-10 08:47:20 +02:00
CMakeLists.txt [server] Make double-buffered properties in xdg-shell double-buffered 2019-11-26 22:49:04 +02:00
compositor_interface.cpp Implement wl_surface::damage_buffer 2019-05-08 09:50:32 +02:00
compositor_interface.h [server] Another round of docu improvements 2015-09-09 17:31:13 +02:00
config-kwayland.h.cmake Make linux/input.h compile time optional 2016-08-22 14:36:11 +02:00
contrast_interface.cpp Don't crash if a client (legally) uses deleted global contrast manager 2017-09-20 14:17:46 +01:00
contrast_interface.h [server] Add more documentation 2015-09-10 13:36:42 +02:00
COPYING.LIB Change to LGPLv2+ 2014-09-17 15:57:56 +02:00
datadevice_interface.cpp [server] Wrap proxyRemoveSurface in smart pointer 2019-08-28 18:38:25 +01:00
datadevice_interface.h Improve documentation 2019-09-15 20:59:53 +02:00
datadevicemanager_interface.cpp Add support for version 3 of data device manager interface 2017-12-26 20:41:43 +01:00
datadevicemanager_interface.h Add support for version 3 of data device manager interface 2017-12-26 20:41:43 +01:00
dataoffer_interface.cpp Guard data source being deleted before processing dataoffer receive event 2018-10-29 10:09:29 +00:00
dataoffer_interface.h Add support for version 3 of data device manager interface 2017-12-26 20:41:43 +01:00
datasource_interface.cpp Fix regression caused by backward compatibility support in data source 2017-12-26 21:55:11 +01:00
datasource_interface.h Add support for version 3 of data device manager interface 2017-12-26 20:41:43 +01:00
display.cpp Implement zwp_linux_dmabuf_v1 2019-08-06 21:44:45 +02:00
display.h Implement zwp_linux_dmabuf_v1 2019-08-06 21:44:45 +02:00
dpms_interface.cpp Fix some of cppcheck warnings 2018-07-04 15:54:26 +05:30
dpms_interface.h Improve documentation 2019-09-15 20:59:53 +02:00
dpms_interface_p.h [server] Standardize the destructor request handling for Resources 2016-05-30 08:16:07 +02:00
drm_fourcc.h Implement zwp_linux_dmabuf_v1 2019-08-06 21:44:45 +02:00
fakeinput_interface.cpp FakeInput: add support for keyboard key press and release 2019-10-22 13:23:58 +02:00
fakeinput_interface.h FakeInput: add support for keyboard key press and release 2019-10-22 13:23:58 +02:00
filtered_display.cpp Expose wl_display_set_global_filter as a virtual method 2017-11-17 08:35:17 +00:00
filtered_display.h Expose wl_display_set_global_filter as a virtual method 2017-11-17 08:35:17 +00:00
idle_interface.cpp Use lambdas instead of std::bind() 2018-11-19 14:46:16 +03:00
idle_interface.h Fix minor EBN issues 2018-09-12 20:49:38 +03:00
keyboard_interface.cpp Use const_iterator 2019-09-14 11:09:16 +02:00
keyboard_interface.h API doc improvements 2015-09-09 13:49:58 +02:00
keyboard_interface_p.h [server] Delete dead code: KeyboardInterface::Private::sendKeymap 2016-06-28 17:26:28 +02:00
keystate_interface.cpp --verbose 2019-06-22 14:56:52 +02:00
keystate_interface.h Proof of concept of a wayland protocol to allow the keystate dataengine to work 2019-06-22 12:25:59 +02:00
KF5WaylandConfig.cmake.in [FEATURE] Option to build & install QCH file with the public API dox 2017-06-05 03:03:25 +02:00
output_interface.cpp Use const_iterator 2019-09-14 11:09:16 +02:00
output_interface.h Add support for Surface enter/leave events 2016-09-13 08:32:50 +02:00
plasmashell_interface.cpp Add CriticalNotification window type to PlasmaShellSurface protocol 2019-05-02 10:11:40 +02:00
plasmashell_interface.h Add CriticalNotification window type to PlasmaShellSurface protocol 2019-05-02 10:11:40 +02:00
plasmavirtualdesktop_interface.cpp [server] Send initial org_kde_plasma_virtual_desktop_management.rows 2019-01-25 14:20:23 +02:00
plasmavirtualdesktop_interface.h Add rows info to the plasma virtual desktop protocol 2019-01-22 15:22:41 +01:00
plasmawindowmanagement_interface.cpp Use ECMGenerateExportHeader to manage deprecated API better 2019-10-20 03:25:00 +02:00
plasmawindowmanagement_interface.h Use ECMGenerateExportHeader to manage deprecated API better 2019-10-20 03:25:00 +02:00
pointer_interface.cpp Allow compositors to send discrete axis values 2019-05-17 11:52:15 +03:00
pointer_interface.h Allow compositors to send discrete axis values 2019-05-17 11:52:15 +03:00
pointer_interface_p.h [server] Add support for the frame semantics of Pointer version 5 2018-03-04 09:48:39 +01:00
region_interface.cpp [server] Standardize the destructor request handling for Resources 2016-05-30 08:16:07 +02:00
seat_interface.cpp Use const_iterator 2019-09-14 11:09:16 +02:00
seat_interface.h Use ECMGenerateExportHeader to manage deprecated API better 2019-10-20 03:25:00 +02:00
seat_interface_p.h [server] Touch drag support 2018-12-02 21:44:33 +01:00
server_decoration_interface.cpp Autogenerate logging file + fix categories file 2018-11-20 08:13:42 +01:00
server_decoration_interface.h Fix minor EBN issues 2018-09-12 20:49:38 +03:00
server_decoration_palette_interface.cpp Autogenerate logging file + fix categories file 2018-11-20 08:13:42 +01:00
server_decoration_palette_interface.h Fix minor EBN issues 2018-09-12 20:49:38 +03:00
shadow_interface.cpp Add destructor request to org_kde_kwin_shadow and org_kde_kwin_shadow_manager 2016-06-14 07:37:11 +02:00
shadow_interface.h API dox: add some minimal docs to class to have them covered by doxygen 2017-05-26 03:35:03 +02:00
slide_interface.cpp [server] Don't destroy SlideInterface when parent SurfaceInterface is destroyed 2016-06-01 07:34:10 +02:00
slide_interface.h Fix minor EBN issues 2018-09-12 20:49:38 +03:00
subcompositor_interface.cpp [server] Don't crash when a subsurface gets commited whose parent surface got destroyed 2018-02-07 19:41:58 +01:00
subcompositor_interface.h API dox: add some minimal docs to more class to have them covered by doxygen 2017-05-26 18:33:25 +02:00
subsurface_interface_p.h [server] Standardize the destructor request handling for Resources 2016-05-30 08:16:07 +02:00
surface_interface.cpp [server] Make double-buffered properties in xdg-shell double-buffered 2019-11-26 22:49:04 +02:00
surface_interface.h [server] Make double-buffered properties in xdg-shell double-buffered 2019-11-26 22:49:04 +02:00
surface_interface_p.h [server] Make double-buffered properties in xdg-shell double-buffered 2019-11-26 22:49:04 +02:00
surfacerole.cpp [server] Make double-buffered properties in xdg-shell double-buffered 2019-11-26 22:49:04 +02:00
surfacerole_p.h [server] Make double-buffered properties in xdg-shell double-buffered 2019-11-26 22:49:04 +02:00
touch_interface.cpp [server] Touch drag support 2018-12-02 21:44:33 +01:00
touch_interface.h API doc improvements 2015-09-09 13:49:58 +02:00
xdgforeign_v2_interface.cpp Fix 'unused parameter' warnings 2018-06-12 23:26:48 +03:00
xdgforeign_v2_interface_p.h Fix minor EBN issues 2018-09-12 20:49:38 +03:00
xdgshell_interface.cpp [server] Make double-buffered properties in xdg-shell double-buffered 2019-11-26 22:49:04 +02:00
xdgshell_interface.h [server] Make double-buffered properties in xdg-shell double-buffered 2019-11-26 22:49:04 +02:00
xdgshell_interface_p.h [server] Make double-buffered properties in xdg-shell double-buffered 2019-11-26 22:49:04 +02:00