diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c index 16173bf6d..a189e2fb6 100644 --- a/src/wayland/meta-wayland-surface.c +++ b/src/wayland/meta-wayland-surface.c @@ -1619,6 +1619,17 @@ bind_gtk_shell (struct wl_client *client, uint32_t capabilities = 0; resource = wl_resource_create (client, >k_shell_interface, version, id); + + if (version != META_GTK_SHELL_VERSION) + { + wl_resource_post_error (resource, + WL_DISPLAY_ERROR_INVALID_OBJECT, + "Incompatible gtk-shell version " + "(supported version: %d)", + META_GTK_SHELL_VERSION); + return; + } + wl_resource_set_implementation (resource, &meta_wayland_gtk_shell_interface, data, NULL); if (!meta_prefs_get_show_fallback_app_menu ()) diff --git a/src/wayland/protocol/gtk-shell.xml b/src/wayland/protocol/gtk-shell.xml index a8a83ebaa..bed61d6b2 100644 --- a/src/wayland/protocol/gtk-shell.xml +++ b/src/wayland/protocol/gtk-shell.xml @@ -1,6 +1,14 @@ + + gtk_shell is a protocol extension providing additional features for + clients implementing it. It is not backward compatible, and a client must + always only bind to the specific version it implements. If a client binds + to a version different from the version the server provides, an error will + be raised. + +