mirror of
https://github.com/brl/mutter.git
synced 2025-02-18 06:04:10 +00:00
wayland: Kill clients who try to bind an incompatible gtk_shell version
gtk_shell is not backward compatible, and clients binding to it should check whether the advertised version is the same as the client supports. https://bugzilla.gnome.org/show_bug.cgi?id=745720
This commit is contained in:
parent
cfba0a5dfc
commit
df3b412a25
@ -1619,6 +1619,17 @@ bind_gtk_shell (struct wl_client *client,
|
|||||||
uint32_t capabilities = 0;
|
uint32_t capabilities = 0;
|
||||||
|
|
||||||
resource = wl_resource_create (client, >k_shell_interface, version, id);
|
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);
|
wl_resource_set_implementation (resource, &meta_wayland_gtk_shell_interface, data, NULL);
|
||||||
|
|
||||||
if (!meta_prefs_get_show_fallback_app_menu ())
|
if (!meta_prefs_get_show_fallback_app_menu ())
|
||||||
|
@ -1,6 +1,14 @@
|
|||||||
<protocol name="gtk">
|
<protocol name="gtk">
|
||||||
|
|
||||||
<interface name="gtk_shell" version="1">
|
<interface name="gtk_shell" version="1">
|
||||||
|
<description summary="gtk specific extensions">
|
||||||
|
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.
|
||||||
|
</description>
|
||||||
|
|
||||||
<enum name="capability">
|
<enum name="capability">
|
||||||
<entry name="global_app_menu" value="1"/>
|
<entry name="global_app_menu" value="1"/>
|
||||||
<entry name="global_menu_bar" value="2"/>
|
<entry name="global_menu_bar" value="2"/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user