summaryrefslogtreecommitdiff
path: root/include/X11
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2022-07-29 09:46:34 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2022-08-05 09:51:54 +1000
commitad6412624ef6dc4d7548fe16c254c4166ffa7198 (patch)
treeca8c6ba8ca5740c68a5c5f8454af79c22772dfa7 /include/X11
parenta3f847b75025a57b64967d08a299bc752c488aee (diff)
Add the XWAYLAND extension
This extension exists to serve one purpose: reliably identifying Xwayland. Previous attempts at doing so included querying root window properties, output names or input device names. All these attempts are somewhat unreliable. Instead, let's use an extension - where that extension is present we have an Xwayland server. Clients should never need to do anything but check whether the extension exists through XQueryExtension/XListExtensions. This extension provides a single QueryVersion request only, and that is only to provide future compatibility if we ever need anything other than "this extension exists" functionality. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Olivier Fourdan <ofourdan@redhat.com>
Diffstat (limited to 'include/X11')
-rw-r--r--include/X11/extensions/meson.build1
-rw-r--r--include/X11/extensions/xwaylandproto.h63
2 files changed, 64 insertions, 0 deletions
diff --git a/include/X11/extensions/meson.build b/include/X11/extensions/meson.build
index d1ac281..9c91f22 100644
--- a/include/X11/extensions/meson.build
+++ b/include/X11/extensions/meson.build
@@ -87,6 +87,7 @@ install_headers(
'XvMC.h',
'XvMCproto.h',
'Xvproto.h',
+ 'xwaylandproto.h',
subdir : 'X11/extensions'
)
diff --git a/include/X11/extensions/xwaylandproto.h b/include/X11/extensions/xwaylandproto.h
new file mode 100644
index 0000000..49f048d
--- /dev/null
+++ b/include/X11/extensions/xwaylandproto.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright © 2022 Red Hat, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. The copyright holders make no representations
+ * about the suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifndef _XWAYLAND_PROTO_H_
+#define _XWAYLAND_PROTO_H_
+
+#include <X11/Xproto.h>
+
+#define XWAYLAND_EXTENSION_NAME "XWAYLAND"
+#define XWAYLAND_EXTENSION_MAJOR 1
+#define XWAYLAND_EXTENSION_MINOR 0
+
+/* Request opcodes */
+#define X_XwlQueryVersion 0
+
+#define XwlNumberRequests 1
+#define XwlNumberErrors 0
+#define XwlNumberEvents 0
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xwlReqType;
+ CARD16 length;
+ CARD16 majorVersion;
+ CARD16 minorVersion;
+} xXwlQueryVersionReq;
+#define sz_xXwlQueryVersionReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BYTE pad1;
+ CARD16 sequenceNumber;
+ CARD32 length;
+ CARD16 majorVersion;
+ CARD16 minorVersion;
+ CARD32 pad2;
+ CARD32 pad3;
+ CARD32 pad4;
+ CARD32 pad5;
+ CARD32 pad6;
+} xXwlQueryVersionReply;
+#define sz_xXwlQueryVersionReply 32
+
+#endif