diff options
author | Simon Ser <contact@emersion.fr> | 2022-05-11 13:57:51 +0200 |
---|---|---|
committer | Isaac Freund <mail@isaacfreund.com> | 2022-05-15 15:44:40 +0000 |
commit | 8fe3aa29da56be16faa73aca947647bd60cd4a94 (patch) | |
tree | e75f5a0e0cf975f3a50d677bfaf7ed0b453de715 /tinywl/tinywl.c | |
parent | 19896e7fb63db73c4a66b68a79d7cbd039198a1d (diff) |
xdg-shell: specify version in wlr_xdg_shell_create
With protocol additions such as [1], compositors currently have no
way to opt out of the version upgrade. The protocol upgrade will
always be backwards-compatible but may require new compositor
features.
The status quo doesn't make it possible to ship a protocol addition
without breaking the wlroots API. This will be an issue for API
stabilization [2].
To address this, let compositors provide a maximum version in the
function creating the global. We need to support all previous versions
of the interface anyways because of older clients.
This mechanism works the same way as Wayland clients passing a version
in wl_global.bind.
[1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3514
[2]: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/1008
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3397
Diffstat (limited to 'tinywl/tinywl.c')
-rw-r--r-- | tinywl/tinywl.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/tinywl/tinywl.c b/tinywl/tinywl.c index 633b3f25..783cc182 100644 --- a/tinywl/tinywl.c +++ b/tinywl/tinywl.c @@ -853,13 +853,14 @@ int main(int argc, char *argv[]) { server.scene = wlr_scene_create(); wlr_scene_attach_output_layout(server.scene, server.output_layout); - /* Set up the xdg-shell. The xdg-shell is a Wayland protocol which is used - * for application windows. For more detail on shells, refer to my article: + /* Set up xdg-shell version 2. The xdg-shell is a Wayland protocol which is + * used for application windows. For more detail on shells, refer to my + * article: * * https://drewdevault.com/2018/07/29/Wayland-shells.html */ wl_list_init(&server.views); - server.xdg_shell = wlr_xdg_shell_create(server.wl_display); + server.xdg_shell = wlr_xdg_shell_create(server.wl_display, 2); server.new_xdg_surface.notify = server_new_xdg_surface; wl_signal_add(&server.xdg_shell->events.new_surface, &server.new_xdg_surface); |