summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fixesproto.pc.in2
-rw-r--r--fixesproto.txt57
-rw-r--r--include/X11/extensions/xfixesproto.h34
-rw-r--r--include/X11/extensions/xfixeswire.h14
4 files changed, 104 insertions, 3 deletions
diff --git a/fixesproto.pc.in b/fixesproto.pc.in
index 5274728..05917d8 100644
--- a/fixesproto.pc.in
+++ b/fixesproto.pc.in
@@ -3,6 +3,6 @@ includedir=@includedir@
Name: FixesProto
Description: X Fixes extension headers
-Version: 5.0
+Version: 6.0
Cflags: -I${includedir}
Requires: xextproto >= 7.0.99.1
diff --git a/fixesproto.txt b/fixesproto.txt
index ff083bc..28a6270 100644
--- a/fixesproto.txt
+++ b/fixesproto.txt
@@ -640,6 +640,63 @@ DestroyPointerBarrier
Errors: Barrier
+************* XFIXES VERSION 6 OR BETTER ***********
+
+13. Disconnect mode
+
+The X11 server is capable of terminating itself once all X11 clients are
+gone.
+
+Yet, in a typical user session, there are a number of X11 clients running
+continuously (e.g. Xsettings daemon, IBus, etc.). Those always-running
+clients will prevent the X11 server from terminating, because the actual
+number of X11 clients will never drop to 0.
+
+Disconnect mode allows the X11 clients themselves to specify that they
+should not be accounted for when checking the remaining clients prior
+to terminate the X11 server.
+
+This can be particularly useful for Wayland compositors which are able to
+start Xwayland on demand, as this allows Xwayland to terminate automatically
+when the relevant X11 clients have quit.
+
+13.1 Types
+
+ XFixesClientDisconnectFlags
+
+ XFixesClientDisconnectFlagDefault: 0
+ XFixesClientDisconnectFlagTerminate: 1 << 0
+
+ XFixesClientDisconnectFlagDefault is the default behavior for
+ regular clients, i.e. the X11 server won't terminate as long as such
+ clients are still connected.
+
+ XFixesClientDisconnectFlagTerminate indicates to the X11 server that
+ it can ignore the client and terminate itself even though the client
+ is still connected to the X11 server.
+
+13.2 Requests
+
+SetClientDisconnectMode
+
+ disconnect-mode: CARD32
+
+ Sets the disconnect mode for the client.
+
+ The disconnect-mode is a bit mask of XFixesClientDisconnectFlags.
+
+
+GetClientDisconnectMode
+
+ Gets the disconnect mode for the client.
+
+ ->
+
+ disconnect-mode: CARD32
+
+ The disconnect-mode is a bit mask of XFixesClientDisconnectFlags.
+
+
99. Future compatibility
This extension is not expected to remain fixed. Future changes will
diff --git a/include/X11/extensions/xfixesproto.h b/include/X11/extensions/xfixesproto.h
index b18b306..96c1b21 100644
--- a/include/X11/extensions/xfixesproto.h
+++ b/include/X11/extensions/xfixesproto.h
@@ -532,6 +532,40 @@ typedef struct {
#define sz_xXFixesDestroyPointerBarrierReq 8
+/*************** Version 6.0 ******************/
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length;
+ CARD32 disconnect_mode;
+} xXFixesSetClientDisconnectModeReq;
+
+#define sz_xXFixesSetClientDisconnectModeReq 8
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length;
+} xXFixesGetClientDisconnectModeReq;
+
+#define sz_xXFixesGetClientDisconnectModeReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad0;
+ CARD16 sequenceNumber;
+ CARD32 length;
+ CARD32 disconnect_mode;
+ CARD32 pad1;
+ CARD32 pad2;
+ CARD32 pad3;
+ CARD32 pad4;
+ CARD32 pad5;
+} xXFixesGetClientDisconnectModeReply;
+
+#define sz_xXFixesGetClientDisconnectModeReply 32
+
#undef Barrier
#undef Region
#undef Picture
diff --git a/include/X11/extensions/xfixeswire.h b/include/X11/extensions/xfixeswire.h
index 432349a..f6953e5 100644
--- a/include/X11/extensions/xfixeswire.h
+++ b/include/X11/extensions/xfixeswire.h
@@ -48,7 +48,7 @@
#define _XFIXESWIRE_H_
#define XFIXES_NAME "XFIXES"
-#define XFIXES_MAJOR 5
+#define XFIXES_MAJOR 6
#define XFIXES_MINOR 0
/*************** Version 1 ******************/
@@ -89,8 +89,11 @@
/*************** Version 5 ******************/
#define X_XFixesCreatePointerBarrier 31
#define X_XFixesDestroyPointerBarrier 32
+/*************** Version 6 ******************/
+#define X_XFixesSetClientDisconnectMode 33
+#define X_XFixesGetClientDisconnectMode 34
-#define XFixesNumberRequests (X_XFixesDestroyPointerBarrier+1)
+#define XFixesNumberRequests (X_XFixesGetClientDisconnectMode+1)
/* Selection events share one event number */
#define XFixesSelectionNotify 0
@@ -136,4 +139,11 @@
#define BarrierNegativeX (1L << 2)
#define BarrierNegativeY (1L << 3)
+/*************** Version 6 ******************/
+
+/* The default server behaviour */
+#define XFixesClientDisconnectFlagDefault 0
+/* The server may disconnect this client to shut down */
+#define XFixesClientDisconnectFlagTerminate (1L << 0)
+
#endif /* _XFIXESWIRE_H_ */