[mutter] wayland: Kill clients who try to bind an incompatible gtk_shell version
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] wayland: Kill clients who try to bind an incompatible gtk_shell version
- Date: Thu, 23 Apr 2015 08:37:42 +0000 (UTC)
commit df3b412a254f606a79807e56961b6781fa171c9b
Author: Jonas Ådahl <jadahl gmail com>
Date: Thu Mar 5 18:09:35 2015 +0800
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
src/wayland/meta-wayland-surface.c | 11 +++++++++++
src/wayland/protocol/gtk-shell.xml | 8 ++++++++
2 files changed, 19 insertions(+), 0 deletions(-)
---
diff --git a/src/wayland/meta-wayland-surface.c b/src/wayland/meta-wayland-surface.c
index 16173bf..a189e2f 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 a8a83eb..bed61d6 100644
--- a/src/wayland/protocol/gtk-shell.xml
+++ b/src/wayland/protocol/gtk-shell.xml
@@ -1,6 +1,14 @@
<protocol name="gtk">
<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">
<entry name="global_app_menu" value="1"/>
<entry name="global_menu_bar" value="2"/>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]