Skip to content
Commit 8d793528 authored by Joshua Ashton's avatar Joshua Ashton 🐸
Browse files

xwayland_shell_v1: New protocol



This protocol adds a xwayland_surface role which allows an Xwayland
server to associate an X11 window to a wl_surface.

Before this protocol, this would be done via the Xwayland server
providing the wl_surface's resource id via the WL_SURFACE_ID atom on the
X window. This was problematic as a race could occur if the wl_surface
associated with a WL_SURFACE_ID for a window was destroyed before the
update of the atom was processed by the compositor and another surface
(or other object) had taken its id due to recycling.

This protocol solves the problem by moving the X11 window to wl_surface
association step to the Wayland side, which means that the association
cannot happen out-of-sync with the resource lifetime of the wl_surface.

This protocol avoids duplicating the race on the other side by adding a
non-zero monotonic serial number which is entirely unique that is set on
both the wl_surface (via. xwayland_surface_v1's associate method) and
the X11 window (via. the `WL_SURFACE_SERIAL` atom) that can be used to
associate them, and synchronize the two timelines.

Signed-off-by: default avatarJoshua Ashton <joshua@froggi.es>
parent e631010a
Loading
Loading
Loading
Pipeline #726342 passed with stages
in 44 seconds
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment