From ad6412624ef6dc4d7548fe16c254c4166ffa7198 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Fri, 29 Jul 2022 09:46:34 +1000 Subject: 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 Reviewed-by: Olivier Fourdan --- include/X11/extensions/meson.build | 1 + include/X11/extensions/xwaylandproto.h | 63 ++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 include/X11/extensions/xwaylandproto.h (limited to 'include') 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 + +#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 -- cgit v1.2.3