diff --git a/clients/simple-egl.c b/clients/simple-egl.c
index 63b3aa12..ca1c2aab 100644
--- a/clients/simple-egl.c
+++ b/clients/simple-egl.c
@@ -717,6 +717,12 @@ static const struct xdg_shell_listener xdg_shell_listener = {
xdg_shell_ping,
};
+#define XDG_VERSION 2 /* The version of xdg-shell that we implement */
+#ifdef static_assert
+static_assert(XDG_VERSION == XDG_SHELL_VERSION_CURRENT,
+ "Interface version doesn't match implementation version");
+#endif
+
static void
registry_handle_global(void *data, struct wl_registry *registry,
uint32_t name, const char *interface, uint32_t version)
@@ -731,7 +737,7 @@ registry_handle_global(void *data, struct wl_registry *registry,
d->shell = wl_registry_bind(registry, name,
&xdg_shell_interface, 1);
xdg_shell_add_listener(d->shell, &xdg_shell_listener, d);
- xdg_shell_use_unstable_version(d->shell, 1);
+ xdg_shell_use_unstable_version(d->shell, XDG_VERSION);
} else if (strcmp(interface, "wl_seat") == 0) {
d->seat = wl_registry_bind(registry, name,
&wl_seat_interface, 1);
diff --git a/clients/simple-shm.c b/clients/simple-shm.c
index 820e8a2d..2dbe7cb5 100644
--- a/clients/simple-shm.c
+++ b/clients/simple-shm.c
@@ -331,6 +331,12 @@ static const struct xdg_shell_listener xdg_shell_listener = {
xdg_shell_ping,
};
+#define XDG_VERSION 2 /* The version of xdg-shell that we implement */
+#ifdef static_assert
+static_assert(XDG_VERSION == XDG_SHELL_VERSION_CURRENT,
+ "Interface version doesn't match implementation version");
+#endif
+
static void
registry_handle_global(void *data, struct wl_registry *registry,
uint32_t id, const char *interface, uint32_t version)
@@ -344,7 +350,7 @@ registry_handle_global(void *data, struct wl_registry *registry,
} else if (strcmp(interface, "xdg_shell") == 0) {
d->shell = wl_registry_bind(registry,
id, &xdg_shell_interface, 1);
- xdg_shell_use_unstable_version(d->shell, 1);
+ xdg_shell_use_unstable_version(d->shell, XDG_VERSION);
xdg_shell_add_listener(d->shell, &xdg_shell_listener, d);
} else if (strcmp(interface, "wl_shm") == 0) {
d->shm = wl_registry_bind(registry,
diff --git a/clients/window.c b/clients/window.c
index 93aa3680..400b16c1 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -5019,6 +5019,12 @@ static const struct xdg_shell_listener xdg_shell_listener = {
xdg_shell_ping,
};
+#define XDG_VERSION 2 /* The version of xdg-shell that we implement */
+#ifdef static_assert
+static_assert(XDG_VERSION == XDG_SHELL_VERSION_CURRENT,
+ "Interface version doesn't match implementation version");
+#endif
+
static void
registry_handle_global(void *data, struct wl_registry *registry, uint32_t id,
const char *interface, uint32_t version)
@@ -5050,7 +5056,7 @@ registry_handle_global(void *data, struct wl_registry *registry, uint32_t id,
} else if (strcmp(interface, "xdg_shell") == 0) {
d->xdg_shell = wl_registry_bind(registry, id,
&xdg_shell_interface, 1);
- xdg_shell_use_unstable_version(d->xdg_shell, XDG_SHELL_VERSION_CURRENT);
+ xdg_shell_use_unstable_version(d->xdg_shell, XDG_VERSION);
xdg_shell_add_listener(d->xdg_shell, &xdg_shell_listener, d);
} else if (strcmp(interface, "text_cursor_position") == 0) {
d->text_cursor_position =
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 2a82a1d3..8c8e4eba 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -3635,7 +3635,7 @@ xdg_shell_unversioned_dispatch(const void *implementation,
return 0;
}
-#define XDG_SERVER_VERSION 1
+#define XDG_SERVER_VERSION 2
static_assert(XDG_SERVER_VERSION == XDG_SHELL_VERSION_CURRENT,
"shell implementation doesn't match protocol version");
diff --git a/protocol/xdg-shell.xml b/protocol/xdg-shell.xml
index d122ff5e..ef755b72 100644
--- a/protocol/xdg-shell.xml
+++ b/protocol/xdg-shell.xml
@@ -43,7 +43,7 @@
Use this enum to check the protocol version, and it will be updated
automatically.
-
+