[PATCH wayland] protocol: Bump seat to version 7 and require keymaps be private
pkerling at casix.org
Thu Nov 1 17:18:57 UTC 2018
2018-11-01 (木) の 11:15 -0500 に Derek Foreman さんは書きました:
> Weston commit 76829fc4eaea329d2a525c3978271e13bd76c078 (and similar
> commits for other compositors) protects the compositor's keyboard
> mapping from client damage by duplicating the keymap for every
> On some systems there are other potential fixes for this - such as
> using sealed memfds on linux - but we can't use them since
> essentially all client code anywhere has mapped the keyboard map
> with a MAP_SHARED mmap() call.
> While we can't break years worth of code, we can require any future
> clients to use MAP_PRIVATE if they use a seat version above 6.
> If a compositor can't use sealing or a similar facility, it should
> still protect itself with copied keymaps, but clients must always
> assume shared mapping of a keymap will fail.
> Signed-off-by: Derek Foreman <derek.foreman.samsung at gmail.com>
> protocol/wayland.xml | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
> diff --git a/protocol/wayland.xml b/protocol/wayland.xml
> index 141038b..802d433 100644
> --- a/protocol/wayland.xml
> +++ b/protocol/wayland.xml
> @@ -1660,7 +1660,7 @@
> - <interface name="wl_seat" version="6">
> + <interface name="wl_seat" version="7">
> <description summary="group of input devices">
> A seat is a group of keyboards, pointer and touch devices.
> object is published as a global during start up, or when such
> @@ -1769,7 +1769,7 @@
> - <interface name="wl_pointer" version="6">
> + <interface name="wl_pointer" version="7">
What is the reason for this version bump? The wl_pointer behavior is
unaffected by the wl_keyboard change, right? As far as I understood the
protocol versioning rules, bumping all child interfaces when updating
one child interface is not required. In fact that would make their
version counters quite superfluous.
(Same for wl_touch)
> <description summary="pointer input device">
> The wl_pointer interface represents one or more input devices,
> such as mice, which control the pointer location and
> @@ -2092,7 +2092,7 @@
> - <interface name="wl_keyboard" version="6">
> + <interface name="wl_keyboard" version="7">
> <description summary="keyboard input device">
> The wl_keyboard interface represents one or more keyboards
> associated with a seat.
> @@ -2113,6 +2113,9 @@
> <description summary="keyboard mapping">
> This event provides a file descriptor to the client which can
> memory-mapped to provide a keyboard mapping description.
> + From version 7 onwards, the fd must be mapped with MAP_PRIVATE
> + the recipient, as MAP_SHARED may fail.
> <arg name="format" type="uint" enum="keymap_format"
> summary="keymap format"/>
> <arg name="fd" type="fd" summary="keymap file descriptor"/>
> @@ -2203,7 +2206,7 @@
> - <interface name="wl_touch" version="6">
> + <interface name="wl_touch" version="7">
> <description summary="touchscreen input device">
> The wl_touch interface represents a touchscreen
> associated with a seat.
More information about the wayland-devel