libweston-desktop: Implement xdg_shell_v6

Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
Acked-by: Giulio Camuffo <giulio.camuffo@kdab.com>

Differential Revision: https://phabricator.freedesktop.org/D1210
diff --git a/libweston-desktop/libweston-desktop.c b/libweston-desktop/libweston-desktop.c
index 4583ede..0ee1139 100644
--- a/libweston-desktop/libweston-desktop.c
+++ b/libweston-desktop/libweston-desktop.c
@@ -40,6 +40,7 @@
 	struct weston_compositor *compositor;
 	struct weston_desktop_api api;
 	void *user_data;
+	struct wl_global *xdg_shell_v6;
 	struct wl_global *xdg_shell_v5;
 	struct wl_global *wl_shell;
 };
@@ -69,6 +70,13 @@
 		MIN(sizeof(struct weston_desktop_api), api->struct_size);
 	memcpy(&desktop->api, api, desktop->api.struct_size);
 
+	desktop->xdg_shell_v6 =
+		weston_desktop_xdg_shell_v6_create(desktop, display);
+	if (desktop->xdg_shell_v6 == NULL) {
+		weston_desktop_destroy(desktop);
+		return NULL;
+	}
+
 	desktop->xdg_shell_v5 =
 		weston_desktop_xdg_shell_v5_create(desktop, display);
 	if (desktop->xdg_shell_v5 == NULL) {
@@ -98,6 +106,8 @@
 		wl_global_destroy(desktop->wl_shell);
 	if (desktop->xdg_shell_v5 != NULL)
 		wl_global_destroy(desktop->xdg_shell_v5);
+	if (desktop->xdg_shell_v6 != NULL)
+		wl_global_destroy(desktop->xdg_shell_v6);
 
 	free(desktop);
 }