aboutsummaryrefslogtreecommitdiff
path: root/X11/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'X11/extensions')
-rw-r--r--X11/extensions/MITMisc.h120
-rw-r--r--X11/extensions/XEVI.h125
-rw-r--r--X11/extensions/XI2proto.h5
-rw-r--r--X11/extensions/XKBrules.h3
-rw-r--r--X11/extensions/XLbx.h205
-rw-r--r--X11/extensions/XShm.h296
-rw-r--r--X11/extensions/Xag.h204
-rw-r--r--X11/extensions/Xcup.h127
-rw-r--r--X11/extensions/Xdbe.h274
-rw-r--r--X11/extensions/Xext.h110
-rw-r--r--X11/extensions/Xge.h11
-rw-r--r--X11/extensions/Xinerama.h74
-rw-r--r--X11/extensions/Xrender.h528
-rw-r--r--X11/extensions/bigreqstr.h4
-rw-r--r--X11/extensions/configure.ac38
-rw-r--r--X11/extensions/dpms.h120
-rw-r--r--X11/extensions/extutil.h382
-rw-r--r--X11/extensions/fixesproto.txt1322
-rw-r--r--X11/extensions/lbxbuf.h51
-rw-r--r--X11/extensions/lbxbufstr.h45
-rw-r--r--X11/extensions/lbximage.h151
-rw-r--r--X11/extensions/multibuf.h530
-rw-r--r--X11/extensions/panoramiXext.h85
-rw-r--r--X11/extensions/randr.h370
-rw-r--r--X11/extensions/randrproto.h1848
-rw-r--r--X11/extensions/randrproto.txt5246
-rw-r--r--X11/extensions/recordstr.h6
-rw-r--r--X11/extensions/security.h188
-rw-r--r--X11/extensions/shape.h332
-rw-r--r--X11/extensions/sync.h844
-rw-r--r--X11/extensions/xcmiscstr.h4
-rw-r--r--X11/extensions/xfixesproto.h1102
-rw-r--r--X11/extensions/xfixeswire.h278
-rw-r--r--X11/extensions/xtestext1.h410
34 files changed, 7593 insertions, 7845 deletions
diff --git a/X11/extensions/MITMisc.h b/X11/extensions/MITMisc.h
index 975700e01..c6b7fefc1 100644
--- a/X11/extensions/MITMisc.h
+++ b/X11/extensions/MITMisc.h
@@ -1,66 +1,54 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-/* RANDOM CRUFT! THIS HAS NO OFFICIAL X CONSORTIUM OR X PROJECT TEAM BLESSING */
-
-/* $Xorg: MITMisc.h,v 1.4 2001/02/09 02:03:23 xorgcvs Exp $ */
-
-#ifndef _XMITMISC_H_
-#define _XMITMISC_H_
-
-#include <X11/Xfuncproto.h>
-
-#define X_MITSetBugMode 0
-#define X_MITGetBugMode 1
-
-#define MITMiscNumberEvents 0
-
-#define MITMiscNumberErrors 0
-
-#ifndef _MITMISC_SERVER_
-
-_XFUNCPROTOBEGIN
-
-Bool XMITMiscQueryExtension(
- Display* /* dpy */,
- int* /* event_basep */,
- int* /* error_basep */
-);
-
-Status XMITMiscSetBugMode(
- Display* /* dpy */,
- Bool /* onOff */
-);
-
-Bool XMITMiscGetBugMode(
- Display* /* dpy */
-);
-
-_XFUNCPROTOEND
-
-#endif
-
-#endif
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+********************************************************/
+
+/* RANDOM CRUFT! THIS HAS NO OFFICIAL X CONSORTIUM OR X PROJECT TEAM BLESSING */
+
+#ifndef _XMITMISC_H_
+#define _XMITMISC_H_
+
+#include <X11/Xfuncproto.h>
+#include <X11/extensions/mitmiscconst.h>
+
+_XFUNCPROTOBEGIN
+
+Bool XMITMiscQueryExtension(
+ Display* /* dpy */,
+ int* /* event_basep */,
+ int* /* error_basep */
+);
+
+Status XMITMiscSetBugMode(
+ Display* /* dpy */,
+ Bool /* onOff */
+);
+
+Bool XMITMiscGetBugMode(
+ Display* /* dpy */
+);
+
+_XFUNCPROTOEND
+
+#endif
diff --git a/X11/extensions/XEVI.h b/X11/extensions/XEVI.h
index d8e37ff4f..49132d1de 100644
--- a/X11/extensions/XEVI.h
+++ b/X11/extensions/XEVI.h
@@ -1,64 +1,61 @@
-/* $Xorg: XEVI.h,v 1.3 2000/08/18 04:05:44 coskrey Exp $ */
-/************************************************************
-Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, 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 Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS 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.
-********************************************************/
-/* $XFree86$ */
-
-#ifndef _XEVI_H_
-#define _XEVI_H_
-#include <X11/Xfuncproto.h>
-#define X_EVIQueryVersion 0
-#define X_EVIGetVisualInfo 1
-#define XEVI_TRANSPARENCY_NONE 0
-#define XEVI_TRANSPARENCY_PIXEL 1
-#define XEVI_TRANSPARENCY_MASK 2
-#ifndef _XEVI_SERVER_
-typedef struct {
- VisualID core_visual_id;
- int screen;
- int level;
- unsigned int transparency_type;
- unsigned int transparency_value;
- unsigned int min_hw_colormaps;
- unsigned int max_hw_colormaps;
- unsigned int num_colormap_conflicts;
- VisualID* colormap_conflicts;
-} ExtendedVisualInfo;
-_XFUNCPROTOBEGIN
-Bool XeviQueryExtension(
- Display* /* dpy */
-);
-Status XeviQueryVersion(
- Display* /* dpy */,
- int* /* majorVersion */,
- int* /* minorVersion */
-);
-Status XeviGetVisualInfo(
- Display* /* dpy */,
- VisualID* /* visual_query */,
- int /* nVisual_query */,
- ExtendedVisualInfo** /* extendedVisualInfo_return */,
- int* /* nInfo_return */
-);
-_XFUNCPROTOEND
-#endif
-#endif
+/************************************************************
+Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, 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 Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS 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 _XEVI_H_
+#define _XEVI_H_
+#include <X11/Xfuncproto.h>
+#include <X11/extensions/EVI.h>
+
+typedef struct {
+ VisualID core_visual_id;
+ int screen;
+ int level;
+ unsigned int transparency_type;
+ unsigned int transparency_value;
+ unsigned int min_hw_colormaps;
+ unsigned int max_hw_colormaps;
+ unsigned int num_colormap_conflicts;
+ VisualID* colormap_conflicts;
+} ExtendedVisualInfo;
+
+_XFUNCPROTOBEGIN
+
+Bool XeviQueryExtension(
+ Display* /* dpy */
+);
+Status XeviQueryVersion(
+ Display* /* dpy */,
+ int* /* majorVersion */,
+ int* /* minorVersion */
+);
+Status XeviGetVisualInfo(
+ Display* /* dpy */,
+ VisualID* /* visual_query */,
+ int /* nVisual_query */,
+ ExtendedVisualInfo** /* extendedVisualInfo_return */,
+ int* /* nInfo_return */
+);
+
+_XFUNCPROTOEND
+
+#endif
diff --git a/X11/extensions/XI2proto.h b/X11/extensions/XI2proto.h
index 2fd91ebf1..0b3bcc2f6 100644
--- a/X11/extensions/XI2proto.h
+++ b/X11/extensions/XI2proto.h
@@ -102,6 +102,11 @@
* COMMON STRUCTS *
* *
*************************************************************************************/
+#ifdef _MSC_VER
+typedef int int32_t;
+typedef unsigned uint32_t;
+#endif
+
/** Fixed point 16.16 */
typedef int32_t FP1616;
diff --git a/X11/extensions/XKBrules.h b/X11/extensions/XKBrules.h
index 0d77ca323..91ec51099 100644
--- a/X11/extensions/XKBrules.h
+++ b/X11/extensions/XKBrules.h
@@ -181,7 +181,7 @@ extern void XkbRF_Free(
#define _XKB_RF_NAMES_PROP_MAXLEN 1024
#ifndef XKB_IN_SERVER
-
+#ifndef _MSC_VER
extern Bool XkbRF_GetNamesProp(
Display * /* dpy */,
char ** /* rules_file_rtrn */,
@@ -195,6 +195,7 @@ extern Bool XkbRF_SetNamesProp(
);
#endif
+#endif
_XFUNCPROTOEND
diff --git a/X11/extensions/XLbx.h b/X11/extensions/XLbx.h
index 01d44f090..94153343a 100644
--- a/X11/extensions/XLbx.h
+++ b/X11/extensions/XLbx.h
@@ -1,155 +1,50 @@
-/* $Xorg: XLbx.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ */
-/*
- * Copyright 1992 Network Computing Devices
- *
- * 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 NCD. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. NCD. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
- * 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.
- *
- */
-/* $XFree86: xc/include/extensions/XLbx.h,v 1.3 2002/10/16 01:59:55 dawes Exp $ */
-
-#ifndef _XLBX_H_
-#define _XLBX_H_
-
-#include <X11/Xfuncproto.h>
-
-/*
- * NOTE: any changes or additions to the opcodes needs to be reflected
- * in the lbxCacheable array in Xserver/lbx/lbxmain.c
- */
-
-#define X_LbxQueryVersion 0
-#define X_LbxStartProxy 1
-#define X_LbxStopProxy 2
-#define X_LbxSwitch 3
-#define X_LbxNewClient 4
-#define X_LbxCloseClient 5
-#define X_LbxModifySequence 6
-#define X_LbxAllowMotion 7
-#define X_LbxIncrementPixel 8
-#define X_LbxDelta 9
-#define X_LbxGetModifierMapping 10
-#define X_LbxInvalidateTag 12
-#define X_LbxPolyPoint 13
-#define X_LbxPolyLine 14
-#define X_LbxPolySegment 15
-#define X_LbxPolyRectangle 16
-#define X_LbxPolyArc 17
-#define X_LbxFillPoly 18
-#define X_LbxPolyFillRectangle 19
-#define X_LbxPolyFillArc 20
-#define X_LbxGetKeyboardMapping 21
-#define X_LbxQueryFont 22
-#define X_LbxChangeProperty 23
-#define X_LbxGetProperty 24
-#define X_LbxTagData 25
-
-#define X_LbxCopyArea 26
-#define X_LbxCopyPlane 27
-#define X_LbxPolyText8 28
-#define X_LbxPolyText16 29
-#define X_LbxImageText8 30
-#define X_LbxImageText16 31
-
-#define X_LbxQueryExtension 32
-#define X_LbxPutImage 33
-#define X_LbxGetImage 34
-
-#define X_LbxBeginLargeRequest 35
-#define X_LbxLargeRequestData 36
-#define X_LbxEndLargeRequest 37
-
-#define X_LbxInternAtoms 38
-#define X_LbxGetWinAttrAndGeom 39
-
-#define X_LbxGrabCmap 40
-#define X_LbxReleaseCmap 41
-#define X_LbxAllocColor 42
-
-#define X_LbxSync 43
-
-#define LbxNumberReqs 44
-
-
-#define LbxEvent 0
-#define LbxQuickMotionDeltaEvent 1
-#define LbxNumberEvents 2
-
-/* This is always the master client */
-#define LbxMasterClientIndex 0
-
-/* LbxEvent lbxType sub-fields */
-#define LbxSwitchEvent 0
-#define LbxCloseEvent 1
-#define LbxDeltaEvent 2
-#define LbxInvalidateTagEvent 3
-#define LbxSendTagDataEvent 4
-#define LbxListenToOne 5
-#define LbxListenToAll 6
-#define LbxMotionDeltaEvent 7
-#define LbxReleaseCmapEvent 8
-#define LbxFreeCellsEvent 9
-
-/*
- * Lbx image compression methods
- *
- * No compression is always assigned the value of 0.
- *
- * The rest of the compression method opcodes are assigned dynamically
- * at option negotiation time.
- */
-
-#define LbxImageCompressNone 0
-
-
-#define BadLbxClient 0
-#define LbxNumberErrors (BadLbxClient + 1)
-
-/* tagged data types */
-#define LbxTagTypeModmap 1
-#define LbxTagTypeKeymap 2
-#define LbxTagTypeProperty 3
-#define LbxTagTypeFont 4
-#define LbxTagTypeConnInfo 5
-
-#ifndef _XLBX_SERVER_
-
-#include <X11/Xdefs.h>
-#include <X11/Xlib.h>
-
-_XFUNCPROTOBEGIN
-
-Bool XLbxQueryExtension(
- Display* /* dpy */,
- int* /* requestp */,
- int* /* event_basep */,
- int* /* error_basep */
-);
-
-Bool XLbxQueryVersion(
- Display* /* dpy */,
- int* /* majorVersion */,
- int* /* minorVersion */
-);
-
-int XLbxGetEventBase(Display *dpy);
-
-_XFUNCPROTOEND
-
-#endif
-
-#endif
+/*
+ * Copyright 1992 Network Computing Devices
+ *
+ * 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 NCD. not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. NCD. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
+ * 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 _XLBX_H_
+#define _XLBX_H_
+
+#include <X11/Xfuncproto.h>
+#include <X11/Xdefs.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/lbx.h>
+
+_XFUNCPROTOBEGIN
+
+Bool XLbxQueryExtension(
+ Display* /* dpy */,
+ int* /* requestp */,
+ int* /* event_basep */,
+ int* /* error_basep */
+);
+
+Bool XLbxQueryVersion(
+ Display* /* dpy */,
+ int* /* majorVersion */,
+ int* /* minorVersion */
+);
+
+int XLbxGetEventBase(Display *dpy);
+
+_XFUNCPROTOEND
+
+#endif
diff --git a/X11/extensions/XShm.h b/X11/extensions/XShm.h
index 4ae14ca8b..daeef3e32 100644
--- a/X11/extensions/XShm.h
+++ b/X11/extensions/XShm.h
@@ -1,161 +1,135 @@
-/* $XFree86: xc/include/extensions/XShm.h,v 1.11 2003/04/03 15:11:07 dawes Exp $ */
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
-
-/* $Xorg: XShm.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $ */
-
-#ifndef _XSHM_H_
-#define _XSHM_H_
-
-#include <X11/Xfuncproto.h>
-
-#define X_ShmQueryVersion 0
-#define X_ShmAttach 1
-#define X_ShmDetach 2
-#define X_ShmPutImage 3
-#define X_ShmGetImage 4
-#define X_ShmCreatePixmap 5
-
-#define ShmCompletion 0
-#define ShmNumberEvents (ShmCompletion + 1)
-
-#define BadShmSeg 0
-#define ShmNumberErrors (BadShmSeg + 1)
-
-typedef unsigned long ShmSeg;
-
-#ifndef _XSHM_SERVER_
-typedef struct {
- int type; /* of event */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came frome a SendEvent request */
- Display *display; /* Display the event was read from */
- Drawable drawable; /* drawable of request */
- int major_code; /* ShmReqCode */
- int minor_code; /* X_ShmPutImage */
- ShmSeg shmseg; /* the ShmSeg used in the request */
- unsigned long offset; /* the offset into ShmSeg used in the request */
-} XShmCompletionEvent;
-
-typedef struct {
- ShmSeg shmseg; /* resource id */
- int shmid; /* kernel id */
- char *shmaddr; /* address in client */
- Bool readOnly; /* how the server should attach it */
-} XShmSegmentInfo;
-
-_XFUNCPROTOBEGIN
-
-Bool XShmQueryExtension(
- Display* /* dpy */
-);
-
-int XShmGetEventBase(
- Display* /* dpy */
-);
-
-Bool XShmQueryVersion(
- Display* /* dpy */,
- int* /* majorVersion */,
- int* /* minorVersion */,
- Bool* /* sharedPixmaps */
-);
-
-int XShmPixmapFormat(
- Display* /* dpy */
-);
-
-Status XShmAttach(
- Display* /* dpy */,
- XShmSegmentInfo* /* shminfo */
-);
-
-Status XShmDetach(
- Display* /* dpy */,
- XShmSegmentInfo* /* shminfo */
-);
-
-Status XShmPutImage(
- Display* /* dpy */,
- Drawable /* d */,
- GC /* gc */,
- XImage* /* image */,
- int /* src_x */,
- int /* src_y */,
- int /* dst_x */,
- int /* dst_y */,
- unsigned int /* src_width */,
- unsigned int /* src_height */,
- Bool /* send_event */
-);
-
-Status XShmGetImage(
- Display* /* dpy */,
- Drawable /* d */,
- XImage* /* image */,
- int /* x */,
- int /* y */,
- unsigned long /* plane_mask */
-);
-
-XImage *XShmCreateImage(
- Display* /* dpy */,
- Visual* /* visual */,
- unsigned int /* depth */,
- int /* format */,
- char* /* data */,
- XShmSegmentInfo* /* shminfo */,
- unsigned int /* width */,
- unsigned int /* height */
-);
-
-Pixmap XShmCreatePixmap(
- Display* /* dpy */,
- Drawable /* d */,
- char* /* data */,
- XShmSegmentInfo* /* shminfo */,
- unsigned int /* width */,
- unsigned int /* height */,
- unsigned int /* depth */
-);
-
-_XFUNCPROTOEND
-
-#else /* _XSHM_SERVER_ */
-
-#include "screenint.h"
-#include "pixmap.h"
-#include "gc.h"
-
-extern void ShmRegisterFbFuncs(
- ScreenPtr /* pScreen */
-);
-
-#endif
-
-#endif
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+********************************************************/
+
+/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
+
+#ifndef _XSHM_H_
+#define _XSHM_H_
+
+#include <X11/Xfuncproto.h>
+#include <X11/extensions/shm.h>
+
+#ifndef _XSHM_SERVER_
+typedef unsigned long ShmSeg;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came frome a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Drawable drawable; /* drawable of request */
+ int major_code; /* ShmReqCode */
+ int minor_code; /* X_ShmPutImage */
+ ShmSeg shmseg; /* the ShmSeg used in the request */
+ unsigned long offset; /* the offset into ShmSeg used in the request */
+} XShmCompletionEvent;
+
+typedef struct {
+ ShmSeg shmseg; /* resource id */
+ int shmid; /* kernel id */
+ char *shmaddr; /* address in client */
+ Bool readOnly; /* how the server should attach it */
+} XShmSegmentInfo;
+
+_XFUNCPROTOBEGIN
+
+Bool XShmQueryExtension(
+ Display* /* dpy */
+);
+
+int XShmGetEventBase(
+ Display* /* dpy */
+);
+
+Bool XShmQueryVersion(
+ Display* /* dpy */,
+ int* /* majorVersion */,
+ int* /* minorVersion */,
+ Bool* /* sharedPixmaps */
+);
+
+int XShmPixmapFormat(
+ Display* /* dpy */
+);
+
+Status XShmAttach(
+ Display* /* dpy */,
+ XShmSegmentInfo* /* shminfo */
+);
+
+Status XShmDetach(
+ Display* /* dpy */,
+ XShmSegmentInfo* /* shminfo */
+);
+
+Status XShmPutImage(
+ Display* /* dpy */,
+ Drawable /* d */,
+ GC /* gc */,
+ XImage* /* image */,
+ int /* src_x */,
+ int /* src_y */,
+ int /* dst_x */,
+ int /* dst_y */,
+ unsigned int /* src_width */,
+ unsigned int /* src_height */,
+ Bool /* send_event */
+);
+
+Status XShmGetImage(
+ Display* /* dpy */,
+ Drawable /* d */,
+ XImage* /* image */,
+ int /* x */,
+ int /* y */,
+ unsigned long /* plane_mask */
+);
+
+XImage *XShmCreateImage(
+ Display* /* dpy */,
+ Visual* /* visual */,
+ unsigned int /* depth */,
+ int /* format */,
+ char* /* data */,
+ XShmSegmentInfo* /* shminfo */,
+ unsigned int /* width */,
+ unsigned int /* height */
+);
+
+Pixmap XShmCreatePixmap(
+ Display* /* dpy */,
+ Drawable /* d */,
+ char* /* data */,
+ XShmSegmentInfo* /* shminfo */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int /* depth */
+);
+
+_XFUNCPROTOEND
+#endif /* _XSHM_SERVER_ */
+
+#endif
diff --git a/X11/extensions/Xag.h b/X11/extensions/Xag.h
index 815f2b9f9..dfc2e7036 100644
--- a/X11/extensions/Xag.h
+++ b/X11/extensions/Xag.h
@@ -1,114 +1,90 @@
-/* $XFree86: xc/include/extensions/Xag.h,v 1.5 2001/12/17 20:52:24 dawes Exp $ */
-/*
-Copyright 1996, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-*/
-/* $Xorg: Xag.h,v 1.5 2001/02/09 02:03:24 xorgcvs Exp $ */
-
-#ifndef _XAG_H_
-#define _XAG_H_
-
-#include <X11/Xfuncproto.h>
-
-#define X_XagQueryVersion 0
-#define X_XagCreate 1
-#define X_XagDestroy 2
-#define X_XagGetAttr 3
-#define X_XagQuery 4
-#define X_XagCreateAssoc 5
-#define X_XagDestroyAssoc 6
-
-#define XagBadAppGroup 0
-#define XagNumberErrors (XagBadAppGroup + 1)
-
-#define XagNsingleScreen 7
-#define XagNdefaultRoot 1
-#define XagNrootVisual 2
-#define XagNdefaultColormap 3
-#define XagNblackPixel 4
-#define XagNwhitePixel 5
-#define XagNappGroupLeader 6
-
-#ifndef _XAG_SERVER_
-
-#include <stdarg.h>
-
-_XFUNCPROTOBEGIN
-
-typedef XID XAppGroup;
-
-Bool XagQueryVersion(
- Display* /* dpy */,
- int* /* major_version */,
- int* /* minor_version */
-);
-
-Status XagCreateEmbeddedApplicationGroup(
- Display* /* dpy */,
- VisualID /* root_visual */,
- Colormap /* default_colormap */,
- unsigned long /* black_pixel */,
- unsigned long /* white_pixel */,
- XAppGroup* /* app_group_return */
-);
-
-Status XagCreateNonembeddedApplicationGroup(
- Display* /* dpy */,
- XAppGroup* /* app_group_return */
-);
-
-Status XagDestroyApplicationGroup(
- Display* /* dpy */,
- XAppGroup /* app_group */
-);
-
-Status XagGetApplicationGroupAttributes(
- Display* /* dpy */,
- XAppGroup /* app_group */,
- ...
-);
-
-Status XagQueryApplicationGroup(
- Display* /* dpy */,
- XID /* resource_base */,
- XAppGroup* /* app_group_ret */
-);
-
-Status XagCreateAssociation(
- Display* /* dpy */,
- Window* /* window_ret */,
- void* /* system_window */
-);
-
-Status XagDestroyAssociation(
- Display* /* dpy */,
- Window /* window */
-);
-
-_XFUNCPROTOEND
-
-#endif /* _XAG_SERVER_ */
-
-#endif /* _XAG_H_ */
-
+/*
+Copyright 1996, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+*/
+
+#ifndef _XAG_H_
+#define _XAG_H_
+
+#include <X11/extensions/ag.h>
+#include <X11/Xfuncproto.h>
+
+#include <stdarg.h>
+
+_XFUNCPROTOBEGIN
+
+typedef XID XAppGroup;
+
+Bool XagQueryVersion(
+ Display* /* dpy */,
+ int* /* major_version */,
+ int* /* minor_version */
+);
+
+Status XagCreateEmbeddedApplicationGroup(
+ Display* /* dpy */,
+ VisualID /* root_visual */,
+ Colormap /* default_colormap */,
+ unsigned long /* black_pixel */,
+ unsigned long /* white_pixel */,
+ XAppGroup* /* app_group_return */
+);
+
+Status XagCreateNonembeddedApplicationGroup(
+ Display* /* dpy */,
+ XAppGroup* /* app_group_return */
+);
+
+Status XagDestroyApplicationGroup(
+ Display* /* dpy */,
+ XAppGroup /* app_group */
+);
+
+Status XagGetApplicationGroupAttributes(
+ Display* /* dpy */,
+ XAppGroup /* app_group */,
+ ...
+);
+
+Status XagQueryApplicationGroup(
+ Display* /* dpy */,
+ XID /* resource_base */,
+ XAppGroup* /* app_group_ret */
+);
+
+Status XagCreateAssociation(
+ Display* /* dpy */,
+ Window* /* window_ret */,
+ void* /* system_window */
+);
+
+Status XagDestroyAssociation(
+ Display* /* dpy */,
+ Window /* window */
+);
+
+_XFUNCPROTOEND
+
+#endif /* _XAG_H_ */
+
diff --git a/X11/extensions/Xcup.h b/X11/extensions/Xcup.h
index b1df039e6..8d69575b1 100644
--- a/X11/extensions/Xcup.h
+++ b/X11/extensions/Xcup.h
@@ -1,69 +1,58 @@
-/* $Xorg: Xcup.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $ */
-/*
-
-Copyright 1987, 1988, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-/* $XFree86$ */
-
-#ifndef _XCUP_H_
-#define _XCUP_H_
-
-#include <X11/Xfuncproto.h>
-
-#define X_XcupQueryVersion 0
-#define X_XcupGetReservedColormapEntries 1
-#define X_XcupStoreColors 2
-
-#define XcupNumberErrors 0
-
-#ifndef _XCUP_SERVER_
-
-_XFUNCPROTOBEGIN
-
-Bool XcupQueryVersion(
- Display* /* dpy */,
- int* /* major_version */,
- int* /* minor_version */
-);
-
-Status XcupGetReservedColormapEntries(
- Display* /* dpy */,
- int /* screen */,
- XColor** /* colors_out */,
- int* /* ncolors */
-);
-
-Status XcupStoreColors(
- Display* /* dpy */,
- Colormap /* colormap */,
- XColor* /* colors */,
- int /* ncolors */
-);
-
-_XFUNCPROTOEND
-
-#endif /* _XCUP_SERVER_ */
-
-#endif /* _XCUP_H_ */
-
+/*
+
+Copyright 1987, 1988, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifndef _XCUP_H_
+#define _XCUP_H_
+
+#include <X11/Xfuncproto.h>
+#include <X11/extensions/cup.h>
+
+_XFUNCPROTOBEGIN
+
+Bool XcupQueryVersion(
+ Display* /* dpy */,
+ int* /* major_version */,
+ int* /* minor_version */
+);
+
+Status XcupGetReservedColormapEntries(
+ Display* /* dpy */,
+ int /* screen */,
+ XColor** /* colors_out */,
+ int* /* ncolors */
+);
+
+Status XcupStoreColors(
+ Display* /* dpy */,
+ Colormap /* colormap */,
+ XColor* /* colors */,
+ int /* ncolors */
+);
+
+_XFUNCPROTOEND
+
+#endif /* _XCUP_H_ */
+
diff --git a/X11/extensions/Xdbe.h b/X11/extensions/Xdbe.h
index f9205a228..5ac72aa82 100644
--- a/X11/extensions/Xdbe.h
+++ b/X11/extensions/Xdbe.h
@@ -1,136 +1,138 @@
-/* $Xorg: Xdbe.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ */
-/******************************************************************************
- *
- * Copyright (c) 1994, 1995 Hewlett-Packard Company
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the Hewlett-Packard
- * Company shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization from the Hewlett-Packard Company.
- *
- * Header file for Xlib-related DBE
- *
- *****************************************************************************/
-/* $XFree86: xc/include/extensions/Xdbe.h,v 3.2 2001/08/01 00:44:35 tsi Exp $ */
-
-#ifndef XDBE_H
-#define XDBE_H
-
-
-/* INCLUDES */
-
-#include <X11/Xfuncproto.h>
-#include <X11/extensions/Xdbeproto.h>
-
-
-/* DEFINES */
-
-/* Errors */
-#define XdbeBadBuffer 0
-
-
-/* TYPEDEFS */
-
-typedef Drawable XdbeBackBuffer;
-
-typedef unsigned char XdbeSwapAction;
-
-typedef struct
-{
- Window swap_window; /* window for which to swap buffers */
- XdbeSwapAction swap_action; /* swap action to use for swap_window */
-}
-XdbeSwapInfo;
-
-typedef struct
-{
- Window window; /* window that buffer belongs to */
-}
-XdbeBackBufferAttributes;
-
-typedef struct
-{
- int type;
- Display *display; /* display the event was read from */
- XdbeBackBuffer buffer; /* resource id */
- unsigned long serial; /* serial number of failed request */
- unsigned char error_code; /* error base + XdbeBadBuffer */
- unsigned char request_code; /* major opcode of failed request */
- unsigned char minor_code; /* minor opcode of failed request */
-}
-XdbeBufferError;
-
-/* _XFUNCPROTOBEGIN and _XFUNCPROTOEND are defined as noops
- * (for non-C++ builds) in X11/Xfuncproto.h.
- */
-_XFUNCPROTOBEGIN
-
-extern Status XdbeQueryExtension(
- Display* /* dpy */,
- int* /* major_version_return */,
- int* /* minor_version_return */
-);
-
-extern XdbeBackBuffer XdbeAllocateBackBufferName(
- Display* /* dpy */,
- Window /* window */,
- XdbeSwapAction /* swap_action */
-);
-
-extern Status XdbeDeallocateBackBufferName(
- Display* /* dpy */,
- XdbeBackBuffer /* buffer */
-);
-
-extern Status XdbeSwapBuffers(
- Display* /* dpy */,
- XdbeSwapInfo* /* swap_info */,
- int /* num_windows */
-);
-
-extern Status XdbeBeginIdiom(
- Display* /* dpy */
-);
-
-extern Status XdbeEndIdiom(
- Display* /* dpy */
-);
-
-extern XdbeScreenVisualInfo *XdbeGetVisualInfo(
- Display* /* dpy */,
- Drawable* /* screen_specifiers */,
- int* /* num_screens */
-);
-
-extern void XdbeFreeVisualInfo(
- XdbeScreenVisualInfo* /* visual_info */
-);
-
-extern XdbeBackBufferAttributes *XdbeGetBackBufferAttributes(
- Display* /* dpy */,
- XdbeBackBuffer /* buffer */
-);
-
-_XFUNCPROTOEND
-
-#endif /* XDBE_H */
-
+/******************************************************************************
+ *
+ * Copyright (c) 1994, 1995 Hewlett-Packard Company
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of the Hewlett-Packard
+ * Company shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization from the Hewlett-Packard Company.
+ *
+ * Header file for Xlib-related DBE
+ *
+ *****************************************************************************/
+
+#ifndef XDBE_H
+#define XDBE_H
+
+#include <X11/Xfuncproto.h>
+#include <X11/extensions/dbe.h>
+
+typedef struct
+{
+ VisualID visual; /* one visual ID that supports double-buffering */
+ int depth; /* depth of visual in bits */
+ int perflevel; /* performance level of visual */
+}
+XdbeVisualInfo;
+
+typedef struct
+{
+ int count; /* number of items in visual_depth */
+ XdbeVisualInfo *visinfo; /* list of visuals & depths for scrn */
+}
+XdbeScreenVisualInfo;
+
+
+typedef Drawable XdbeBackBuffer;
+
+typedef unsigned char XdbeSwapAction;
+
+typedef struct
+{
+ Window swap_window; /* window for which to swap buffers */
+ XdbeSwapAction swap_action; /* swap action to use for swap_window */
+}
+XdbeSwapInfo;
+
+typedef struct
+{
+ Window window; /* window that buffer belongs to */
+}
+XdbeBackBufferAttributes;
+
+typedef struct
+{
+ int type;
+ Display *display; /* display the event was read from */
+ XdbeBackBuffer buffer; /* resource id */
+ unsigned long serial; /* serial number of failed request */
+ unsigned char error_code; /* error base + XdbeBadBuffer */
+ unsigned char request_code; /* major opcode of failed request */
+ unsigned char minor_code; /* minor opcode of failed request */
+}
+XdbeBufferError;
+
+/* _XFUNCPROTOBEGIN and _XFUNCPROTOEND are defined as noops
+ * (for non-C++ builds) in X11/Xfuncproto.h.
+ */
+_XFUNCPROTOBEGIN
+
+extern Status XdbeQueryExtension(
+ Display* /* dpy */,
+ int* /* major_version_return */,
+ int* /* minor_version_return */
+);
+
+extern XdbeBackBuffer XdbeAllocateBackBufferName(
+ Display* /* dpy */,
+ Window /* window */,
+ XdbeSwapAction /* swap_action */
+);
+
+extern Status XdbeDeallocateBackBufferName(
+ Display* /* dpy */,
+ XdbeBackBuffer /* buffer */
+);
+
+extern Status XdbeSwapBuffers(
+ Display* /* dpy */,
+ XdbeSwapInfo* /* swap_info */,
+ int /* num_windows */
+);
+
+extern Status XdbeBeginIdiom(
+ Display* /* dpy */
+);
+
+extern Status XdbeEndIdiom(
+ Display* /* dpy */
+);
+
+extern XdbeScreenVisualInfo *XdbeGetVisualInfo(
+ Display* /* dpy */,
+ Drawable* /* screen_specifiers */,
+ int* /* num_screens */
+);
+
+extern void XdbeFreeVisualInfo(
+ XdbeScreenVisualInfo* /* visual_info */
+);
+
+extern XdbeBackBufferAttributes *XdbeGetBackBufferAttributes(
+ Display* /* dpy */,
+ XdbeBackBuffer /* buffer */
+);
+
+_XFUNCPROTOEND
+
+#endif /* XDBE_H */
+
diff --git a/X11/extensions/Xext.h b/X11/extensions/Xext.h
index 5b62c8b2d..c7c5723e2 100644
--- a/X11/extensions/Xext.h
+++ b/X11/extensions/Xext.h
@@ -1,57 +1,53 @@
-/*
- * $Xorg: Xext.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $
- *
-Copyright 1989, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- */
-/* $XFree86: xc/include/extensions/Xext.h,v 1.4 2001/12/14 19:53:28 dawes Exp $ */
-
-#ifndef _XEXT_H_
-#define _XEXT_H_
-
-#include <X11/Xfuncproto.h>
-
-_XFUNCPROTOBEGIN
-
-extern int (*XSetExtensionErrorHandler(
- int (*handler)(
- Display *,
- char *,
- char *
- )
-))(
- Display *,
- char *,
- char *
-);
-
-extern int XMissingExtension(
- Display* /* dpy */,
- _Xconst char* /* ext_name */
-);
-
-_XFUNCPROTOEND
-
-#define X_EXTENSION_UNKNOWN "unknown"
-#define X_EXTENSION_MISSING "missing"
-
-#endif /* _XEXT_H_ */
+/*
+ *
+Copyright 1989, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ */
+
+#ifndef _XEXT_H_
+#define _XEXT_H_
+
+#include <X11/Xfuncproto.h>
+
+_XFUNCPROTOBEGIN
+
+typedef int (*XextErrorHandler) (
+ Display * /* dpy */,
+ _Xconst char* /* ext_name */,
+ _Xconst char* /* reason */
+);
+
+extern XextErrorHandler XSetExtensionErrorHandler(
+ XextErrorHandler /* handler */
+);
+
+extern int XMissingExtension(
+ Display* /* dpy */,
+ _Xconst char* /* ext_name */
+);
+
+_XFUNCPROTOEND
+
+#define X_EXTENSION_UNKNOWN "unknown"
+#define X_EXTENSION_MISSING "missing"
+
+#endif /* _XEXT_H_ */
diff --git a/X11/extensions/Xge.h b/X11/extensions/Xge.h
index 84fa250da..51382ffd0 100644
--- a/X11/extensions/Xge.h
+++ b/X11/extensions/Xge.h
@@ -38,12 +38,15 @@ _XFUNCPROTOBEGIN
/**
* Generic Event mask.
* To be used whenever a list of masks per extension has to be provided.
+ *
+ * But, don't actually use the CARD{8,16,32} types. We can't get them them
+ * defined here without polluting the namespace.
*/
typedef struct {
- CARD8 extension;
- CARD8 pad0;
- CARD16 pad1;
- CARD32 evmask;
+ unsigned char extension;
+ unsigned char pad0;
+ unsigned short pad1;
+ unsigned int evmask;
} XGenericEventMask;
Bool XGEQueryExtension(Display* dpy, int *event_basep, int *err_basep);
diff --git a/X11/extensions/Xinerama.h b/X11/extensions/Xinerama.h
new file mode 100644
index 000000000..666f52a78
--- /dev/null
+++ b/X11/extensions/Xinerama.h
@@ -0,0 +1,74 @@
+/*
+
+Copyright 2003 The Open Group
+
+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.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifndef _Xinerama_h
+#define _Xinerama_h
+
+#include <X11/Xlib.h>
+
+typedef struct {
+ int screen_number;
+ short x_org;
+ short y_org;
+ short width;
+ short height;
+} XineramaScreenInfo;
+
+_XFUNCPROTOBEGIN
+
+Bool XineramaQueryExtension (
+ Display *dpy,
+ int *event_base,
+ int *error_base
+);
+
+Status XineramaQueryVersion(
+ Display *dpy,
+ int *major_versionp,
+ int *minor_versionp
+);
+
+Bool XineramaIsActive(Display *dpy);
+
+
+/*
+ Returns the number of heads and a pointer to an array of
+ structures describing the position and size of the individual
+ heads. Returns NULL and number = 0 if Xinerama is not active.
+
+ Returned array should be freed with XFree().
+*/
+
+XineramaScreenInfo *
+XineramaQueryScreens(
+ Display *dpy,
+ int *number
+);
+
+_XFUNCPROTOEND
+
+#endif /* _Xinerama_h */
+
diff --git a/X11/extensions/Xrender.h b/X11/extensions/Xrender.h
new file mode 100644
index 000000000..5248e99bd
--- /dev/null
+++ b/X11/extensions/Xrender.h
@@ -0,0 +1,528 @@
+/*
+ *
+ * Copyright © 2000 SuSE, 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 SuSE not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. SuSE makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
+ * 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.
+ *
+ * Author: Keith Packard, SuSE, Inc.
+ */
+
+#ifndef _XRENDER_H_
+#define _XRENDER_H_
+
+#include <X11/Xlib.h>
+#include <X11/Xfuncproto.h>
+#include <X11/Xosdefs.h>
+#include <X11/Xutil.h>
+
+#include <X11/extensions/render.h>
+
+typedef struct {
+ short red;
+ short redMask;
+ short green;
+ short greenMask;
+ short blue;
+ short blueMask;
+ short alpha;
+ short alphaMask;
+} XRenderDirectFormat;
+
+typedef struct {
+ PictFormat id;
+ int type;
+ int depth;
+ XRenderDirectFormat direct;
+ Colormap colormap;
+} XRenderPictFormat;
+
+#define PictFormatID (1 << 0)
+#define PictFormatType (1 << 1)
+#define PictFormatDepth (1 << 2)
+#define PictFormatRed (1 << 3)
+#define PictFormatRedMask (1 << 4)
+#define PictFormatGreen (1 << 5)
+#define PictFormatGreenMask (1 << 6)
+#define PictFormatBlue (1 << 7)
+#define PictFormatBlueMask (1 << 8)
+#define PictFormatAlpha (1 << 9)
+#define PictFormatAlphaMask (1 << 10)
+#define PictFormatColormap (1 << 11)
+
+typedef struct _XRenderPictureAttributes {
+ int repeat;
+ Picture alpha_map;
+ int alpha_x_origin;
+ int alpha_y_origin;
+ int clip_x_origin;
+ int clip_y_origin;
+ Pixmap clip_mask;
+ Bool graphics_exposures;
+ int subwindow_mode;
+ int poly_edge;
+ int poly_mode;
+ Atom dither;
+ Bool component_alpha;
+} XRenderPictureAttributes;
+
+typedef struct {
+ unsigned short red;
+ unsigned short green;
+ unsigned short blue;
+ unsigned short alpha;
+} XRenderColor;
+
+typedef struct _XGlyphInfo {
+ unsigned short width;
+ unsigned short height;
+ short x;
+ short y;
+ short xOff;
+ short yOff;
+} XGlyphInfo;
+
+typedef struct _XGlyphElt8 {
+ GlyphSet glyphset;
+ _Xconst char *chars;
+ int nchars;
+ int xOff;
+ int yOff;
+} XGlyphElt8;
+
+typedef struct _XGlyphElt16 {
+ GlyphSet glyphset;
+ _Xconst unsigned short *chars;
+ int nchars;
+ int xOff;
+ int yOff;
+} XGlyphElt16;
+
+typedef struct _XGlyphElt32 {
+ GlyphSet glyphset;
+ _Xconst unsigned int *chars;
+ int nchars;
+ int xOff;
+ int yOff;
+} XGlyphElt32;
+
+typedef double XDouble;
+
+typedef struct _XPointDouble {
+ XDouble x, y;
+} XPointDouble;
+
+#define XDoubleToFixed(f) ((XFixed) ((f) * 65536))
+#define XFixedToDouble(f) (((XDouble) (f)) / 65536)
+
+typedef int XFixed;
+
+typedef struct _XPointFixed {
+ XFixed x, y;
+} XPointFixed;
+
+typedef struct _XLineFixed {
+ XPointFixed p1, p2;
+} XLineFixed;
+
+typedef struct _XTriangle {
+ XPointFixed p1, p2, p3;
+} XTriangle;
+
+typedef struct _XCircle {
+ XFixed x;
+ XFixed y;
+ XFixed radius;
+} XCircle;
+
+typedef struct _XTrapezoid {
+ XFixed top, bottom;
+ XLineFixed left, right;
+} XTrapezoid;
+
+typedef struct _XTransform {
+ XFixed matrix[3][3];
+} XTransform;
+
+typedef struct _XFilters {
+ int nfilter;
+ char **filter;
+ int nalias;
+ short *alias;
+} XFilters;
+
+typedef struct _XIndexValue {
+ unsigned long pixel;
+ unsigned short red, green, blue, alpha;
+} XIndexValue;
+
+typedef struct _XAnimCursor {
+ Cursor cursor;
+ unsigned long delay;
+} XAnimCursor;
+
+typedef struct _XSpanFix {
+ XFixed left, right, y;
+} XSpanFix;
+
+typedef struct _XTrap {
+ XSpanFix top, bottom;
+} XTrap;
+
+typedef struct _XLinearGradient {
+ XPointFixed p1;
+ XPointFixed p2;
+} XLinearGradient;
+
+typedef struct _XRadialGradient {
+ XCircle inner;
+ XCircle outer;
+} XRadialGradient;
+
+typedef struct _XConicalGradient {
+ XPointFixed center;
+ XFixed angle; /* in degrees */
+} XConicalGradient;
+
+_XFUNCPROTOBEGIN
+
+Bool XRenderQueryExtension (Display *dpy, int *event_basep, int *error_basep);
+
+Status XRenderQueryVersion (Display *dpy,
+ int *major_versionp,
+ int *minor_versionp);
+
+Status XRenderQueryFormats (Display *dpy);
+
+int XRenderQuerySubpixelOrder (Display *dpy, int screen);
+
+Bool XRenderSetSubpixelOrder (Display *dpy, int screen, int subpixel);
+
+XRenderPictFormat *
+XRenderFindVisualFormat (Display *dpy, _Xconst Visual *visual);
+
+XRenderPictFormat *
+XRenderFindFormat (Display *dpy,
+ unsigned long mask,
+ _Xconst XRenderPictFormat *templ,
+ int count);
+
+#define PictStandardARGB32 0
+#define PictStandardRGB24 1
+#define PictStandardA8 2
+#define PictStandardA4 3
+#define PictStandardA1 4
+#define PictStandardNUM 5
+
+XRenderPictFormat *
+XRenderFindStandardFormat (Display *dpy,
+ int format);
+
+XIndexValue *
+XRenderQueryPictIndexValues(Display *dpy,
+ _Xconst XRenderPictFormat *format,
+ int *num);
+
+Picture
+XRenderCreatePicture (Display *dpy,
+ Drawable drawable,
+ _Xconst XRenderPictFormat *format,
+ unsigned long valuemask,
+ _Xconst XRenderPictureAttributes *attributes);
+
+void
+XRenderChangePicture (Display *dpy,
+ Picture picture,
+ unsigned long valuemask,
+ _Xconst XRenderPictureAttributes *attributes);
+
+void
+XRenderSetPictureClipRectangles (Display *dpy,
+ Picture picture,
+ int xOrigin,
+ int yOrigin,
+ _Xconst XRectangle *rects,
+ int n);
+
+void
+XRenderSetPictureClipRegion (Display *dpy,
+ Picture picture,
+ Region r);
+
+void
+XRenderSetPictureTransform (Display *dpy,
+ Picture picture,
+ XTransform *transform);
+
+void
+XRenderFreePicture (Display *dpy,
+ Picture picture);
+
+void
+XRenderComposite (Display *dpy,
+ int op,
+ Picture src,
+ Picture mask,
+ Picture dst,
+ int src_x,
+ int src_y,
+ int mask_x,
+ int mask_y,
+ int dst_x,
+ int dst_y,
+ unsigned int width,
+ unsigned int height);
+
+GlyphSet
+XRenderCreateGlyphSet (Display *dpy, _Xconst XRenderPictFormat *format);
+
+GlyphSet
+XRenderReferenceGlyphSet (Display *dpy, GlyphSet existing);
+
+void
+XRenderFreeGlyphSet (Display *dpy, GlyphSet glyphset);
+
+void
+XRenderAddGlyphs (Display *dpy,
+ GlyphSet glyphset,
+ _Xconst Glyph *gids,
+ _Xconst XGlyphInfo *glyphs,
+ int nglyphs,
+ _Xconst char *images,
+ int nbyte_images);
+
+void
+XRenderFreeGlyphs (Display *dpy,
+ GlyphSet glyphset,
+ _Xconst Glyph *gids,
+ int nglyphs);
+
+void
+XRenderCompositeString8 (Display *dpy,
+ int op,
+ Picture src,
+ Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ GlyphSet glyphset,
+ int xSrc,
+ int ySrc,
+ int xDst,
+ int yDst,
+ _Xconst char *string,
+ int nchar);
+
+void
+XRenderCompositeString16 (Display *dpy,
+ int op,
+ Picture src,
+ Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ GlyphSet glyphset,
+ int xSrc,
+ int ySrc,
+ int xDst,
+ int yDst,
+ _Xconst unsigned short *string,
+ int nchar);
+
+void
+XRenderCompositeString32 (Display *dpy,
+ int op,
+ Picture src,
+ Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ GlyphSet glyphset,
+ int xSrc,
+ int ySrc,
+ int xDst,
+ int yDst,
+ _Xconst unsigned int *string,
+ int nchar);
+
+void
+XRenderCompositeText8 (Display *dpy,
+ int op,
+ Picture src,
+ Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ int xSrc,
+ int ySrc,
+ int xDst,
+ int yDst,
+ _Xconst XGlyphElt8 *elts,
+ int nelt);
+
+void
+XRenderCompositeText16 (Display *dpy,
+ int op,
+ Picture src,
+ Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ int xSrc,
+ int ySrc,
+ int xDst,
+ int yDst,
+ _Xconst XGlyphElt16 *elts,
+ int nelt);
+
+void
+XRenderCompositeText32 (Display *dpy,
+ int op,
+ Picture src,
+ Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ int xSrc,
+ int ySrc,
+ int xDst,
+ int yDst,
+ _Xconst XGlyphElt32 *elts,
+ int nelt);
+
+void
+XRenderFillRectangle (Display *dpy,
+ int op,
+ Picture dst,
+ _Xconst XRenderColor *color,
+ int x,
+ int y,
+ unsigned int width,
+ unsigned int height);
+
+void
+XRenderFillRectangles (Display *dpy,
+ int op,
+ Picture dst,
+ _Xconst XRenderColor *color,
+ _Xconst XRectangle *rectangles,
+ int n_rects);
+
+void
+XRenderCompositeTrapezoids (Display *dpy,
+ int op,
+ Picture src,
+ Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ int xSrc,
+ int ySrc,
+ _Xconst XTrapezoid *traps,
+ int ntrap);
+
+void
+XRenderCompositeTriangles (Display *dpy,
+ int op,
+ Picture src,
+ Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ int xSrc,
+ int ySrc,
+ _Xconst XTriangle *triangles,
+ int ntriangle);
+
+void
+XRenderCompositeTriStrip (Display *dpy,
+ int op,
+ Picture src,
+ Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ int xSrc,
+ int ySrc,
+ _Xconst XPointFixed *points,
+ int npoint);
+
+void
+XRenderCompositeTriFan (Display *dpy,
+ int op,
+ Picture src,
+ Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ int xSrc,
+ int ySrc,
+ _Xconst XPointFixed *points,
+ int npoint);
+
+void
+XRenderCompositeDoublePoly (Display *dpy,
+ int op,
+ Picture src,
+ Picture dst,
+ _Xconst XRenderPictFormat *maskFormat,
+ int xSrc,
+ int ySrc,
+ int xDst,
+ int yDst,
+ _Xconst XPointDouble *fpoints,
+ int npoints,
+ int winding);
+Status
+XRenderParseColor(Display *dpy,
+ char *spec,
+ XRenderColor *def);
+
+Cursor
+XRenderCreateCursor (Display *dpy,
+ Picture source,
+ unsigned int x,
+ unsigned int y);
+
+XFilters *
+XRenderQueryFilters (Display *dpy, Drawable drawable);
+
+void
+XRenderSetPictureFilter (Display *dpy,
+ Picture picture,
+ const char *filter,
+ XFixed *params,
+ int nparams);
+
+Cursor
+XRenderCreateAnimCursor (Display *dpy,
+ int ncursor,
+ XAnimCursor *cursors);
+
+
+void
+XRenderAddTraps (Display *dpy,
+ Picture picture,
+ int xOff,
+ int yOff,
+ _Xconst XTrap *traps,
+ int ntrap);
+
+Picture XRenderCreateSolidFill (Display *dpy,
+ const XRenderColor *color);
+
+Picture XRenderCreateLinearGradient (Display *dpy,
+ const XLinearGradient *gradient,
+ const XFixed *stops,
+ const XRenderColor *colors,
+ int nstops);
+
+Picture XRenderCreateRadialGradient (Display *dpy,
+ const XRadialGradient *gradient,
+ const XFixed *stops,
+ const XRenderColor *colors,
+ int nstops);
+
+Picture XRenderCreateConicalGradient (Display *dpy,
+ const XConicalGradient *gradient,
+ const XFixed *stops,
+ const XRenderColor *colors,
+ int nstops);
+
+_XFUNCPROTOEND
+
+#endif /* _XRENDER_H_ */
diff --git a/X11/extensions/bigreqstr.h b/X11/extensions/bigreqstr.h
index 0a023dbf1..df43f46de 100644
--- a/X11/extensions/bigreqstr.h
+++ b/X11/extensions/bigreqstr.h
@@ -1,3 +1,3 @@
-#warning "bigreqstr.h is obsolete and may be removed in the future."
-#warning "include <X11/extensions/bigreqsproto.h> for the protocol defines."
+#pragma message("bigreqstr.h is obsolete and may be removed in the future.")
+#pragma message("include <X11/extensions/bigreqsproto.h> for the protocol defines.")
#include <X11/extensions/bigreqsproto.h>
diff --git a/X11/extensions/configure.ac b/X11/extensions/configure.ac
index a12f7f452..4e1c34bdd 100644
--- a/X11/extensions/configure.ac
+++ b/X11/extensions/configure.ac
@@ -1,19 +1,19 @@
-AC_PREREQ([2.60])
-AC_INIT([XExtProto], [7.2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
-AM_INIT_AUTOMAKE([foreign dist-bzip2])
-AM_MAINTAINER_MODE
-
-# Require xorg-macros minimum of 1.12 for DocBook external references
-m4_ifndef([XORG_MACROS_VERSION],
- [m4_fatal([must install xorg-macros 1.12 or later before running autoconf/autogen])])
-XORG_MACROS_VERSION(1.12)
-XORG_DEFAULT_OPTIONS
-XORG_ENABLE_SPECS
-XORG_WITH_XMLTO(0.0.22)
-XORG_WITH_FOP
-XORG_WITH_XSLTPROC
-XORG_CHECK_SGML_DOCTOOLS(1.7)
-
-AC_OUTPUT([Makefile
- specs/Makefile
- xextproto.pc])
+AC_PREREQ([2.60])
+AC_INIT([XExtProto], [7.2.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
+AM_INIT_AUTOMAKE([foreign dist-bzip2])
+AM_MAINTAINER_MODE
+
+# Require xorg-macros minimum of 1.12 for DocBook external references
+m4_ifndef([XORG_MACROS_VERSION],
+ [m4_fatal([must install xorg-macros 1.12 or later before running autoconf/autogen])])
+XORG_MACROS_VERSION(1.12)
+XORG_DEFAULT_OPTIONS
+XORG_ENABLE_SPECS
+XORG_WITH_XMLTO(0.0.22)
+XORG_WITH_FOP
+XORG_WITH_XSLTPROC
+XORG_CHECK_SGML_DOCTOOLS(1.7)
+
+AC_OUTPUT([Makefile
+ specs/Makefile
+ xextproto.pc])
diff --git a/X11/extensions/dpms.h b/X11/extensions/dpms.h
index 7555f4ab6..b57007bda 100644
--- a/X11/extensions/dpms.h
+++ b/X11/extensions/dpms.h
@@ -1,67 +1,53 @@
-/* $Xorg: dpms.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ */
-/*****************************************************************
-
-Copyright (c) 1996 Digital Equipment Corporation, Maynard, Massachusetts.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
-BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of Digital Equipment Corporation
-shall not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from Digital
-Equipment Corporation.
-
-******************************************************************/
-/* $XFree86: xc/include/extensions/dpms.h,v 3.4 2000/03/15 16:51:51 tsi Exp $ */
-
-#ifndef _X11_EXTENSIONS_DPMS_H
-#define _X11_EXTENSIONS_DPMS_H 1
-
-/*
- * HISTORY
- */
-/*
- * @(#)RCSfile: dpms.h,v Revision: 1.1.4.2 (DEC) Date: 1995/11/21 19:34:17
- */
-
-
-#define DPMSModeOn 0
-#define DPMSModeStandby 1
-#define DPMSModeSuspend 2
-#define DPMSModeOff 3
-
-#ifndef DPMS_SERVER
-
-#include <X11/X.h>
-#include <X11/Xmd.h>
-
-_XFUNCPROTOBEGIN
-
-extern Bool DPMSQueryExtension(Display *, int *, int *);
-extern Status DPMSGetVersion(Display *, int *, int *);
-extern Bool DPMSCapable(Display *);
-extern Status DPMSSetTimeouts(Display *, CARD16, CARD16, CARD16);
-extern Bool DPMSGetTimeouts(Display *, CARD16 *, CARD16 *, CARD16 *);
-extern Status DPMSEnable(Display *);
-extern Status DPMSDisable(Display *);
-extern Status DPMSForceLevel(Display *, CARD16);
-extern Status DPMSInfo(Display *, CARD16 *, BOOL *);
-
-_XFUNCPROTOEND
-#endif /* !DPMS_SERVER */
-#endif /* !_X11_EXTENSIONS_DPMS_H */
-
+/*****************************************************************
+
+Copyright (c) 1996 Digital Equipment Corporation, Maynard, Massachusetts.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
+BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Digital Equipment Corporation
+shall not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from Digital
+Equipment Corporation.
+
+******************************************************************/
+
+#ifndef _X11_EXTENSIONS_DPMS_H
+#define _X11_EXTENSIONS_DPMS_H 1
+
+#include <X11/X.h>
+#include <X11/Xmd.h>
+#include <X11/extensions/dpmsconst.h>
+
+#ifndef DPMS_SERVER
+_XFUNCPROTOBEGIN
+
+extern Bool DPMSQueryExtension(Display *, int *, int *);
+extern Status DPMSGetVersion(Display *, int *, int *);
+extern Bool DPMSCapable(Display *);
+extern Status DPMSSetTimeouts(Display *, CARD16, CARD16, CARD16);
+extern Bool DPMSGetTimeouts(Display *, CARD16 *, CARD16 *, CARD16 *);
+extern Status DPMSEnable(Display *);
+extern Status DPMSDisable(Display *);
+extern Status DPMSForceLevel(Display *, CARD16);
+extern Status DPMSInfo(Display *, CARD16 *, BOOL *);
+
+_XFUNCPROTOEND
+#endif
+
+#endif /* !_X11_EXTENSIONS_DPMS_H */
+
diff --git a/X11/extensions/extutil.h b/X11/extensions/extutil.h
index 825d81e93..dd05a6580 100644
--- a/X11/extensions/extutil.h
+++ b/X11/extensions/extutil.h
@@ -1,192 +1,190 @@
-/*
- * $Xorg: extutil.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $
- *
-Copyright 1989, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- *
- * Author: Jim Fulton, MIT The Open Group
- *
- * Xlib Extension-Writing Utilities
- *
- * This package contains utilities for writing the client API for various
- * protocol extensions. THESE INTERFACES ARE NOT PART OF THE X STANDARD AND
- * ARE SUBJECT TO CHANGE!
- */
-/* $XFree86: xc/include/extensions/extutil.h,v 1.9 2001/12/14 19:53:28 dawes Exp $ */
-
-#ifndef _EXTUTIL_H_
-#define _EXTUTIL_H_
-
-#include <X11/extensions/Xext.h>
-
-/*
- * We need to keep a list of open displays since the Xlib display list isn't
- * public. We also have to per-display info in a separate block since it isn't
- * stored directly in the Display structure.
- */
-typedef struct _XExtDisplayInfo {
- struct _XExtDisplayInfo *next; /* keep a linked list */
- Display *display; /* which display this is */
- XExtCodes *codes; /* the extension protocol codes */
- XPointer data; /* extra data for extension to use */
-} XExtDisplayInfo;
-
-typedef struct _XExtensionInfo {
- XExtDisplayInfo *head; /* start of list */
- XExtDisplayInfo *cur; /* most recently used */
- int ndisplays; /* number of displays */
-} XExtensionInfo;
-
-typedef struct _XExtensionHooks {
- int (*create_gc)(
- Display* /* display */,
- GC /* gc */,
- XExtCodes* /* codes */
-);
- int (*copy_gc)(
- Display* /* display */,
- GC /* gc */,
- XExtCodes* /* codes */
-);
- int (*flush_gc)(
- Display* /* display */,
- GC /* gc */,
- XExtCodes* /* codes */
-);
- int (*free_gc)(
- Display* /* display */,
- GC /* gc */,
- XExtCodes* /* codes */
-);
- int (*create_font)(
- Display* /* display */,
- XFontStruct* /* fs */,
- XExtCodes* /* codes */
-);
- int (*free_font)(
- Display* /* display */,
- XFontStruct* /* fs */,
- XExtCodes* /* codes */
-);
- int (*close_display)(
- Display* /* display */,
- XExtCodes* /* codes */
-);
- Bool (*wire_to_event)(
- Display* /* display */,
- XEvent* /* re */,
- xEvent* /* event */
-);
- Status (*event_to_wire)(
- Display* /* display */,
- XEvent* /* re */,
- xEvent* /* event */
-);
- int (*error)(
- Display* /* display */,
- xError* /* err */,
- XExtCodes* /* codes */,
- int* /* ret_code */
-);
- char *(*error_string)(
- Display* /* display */,
- int /* code */,
- XExtCodes* /* codes */,
- char* /* buffer */,
- int /* nbytes */
-);
-} XExtensionHooks;
-
-extern XExtensionInfo *XextCreateExtension(
- void
-);
-extern void XextDestroyExtension(
- XExtensionInfo* /* info */
-);
-extern XExtDisplayInfo *XextAddDisplay(
- XExtensionInfo* /* extinfo */,
- Display* /* dpy */,
- char* /* ext_name */,
- XExtensionHooks* /* hooks */,
- int /* nevents */,
- XPointer /* data */
-);
-extern int XextRemoveDisplay(
- XExtensionInfo* /* extinfo */,
- Display* /* dpy */
-);
-extern XExtDisplayInfo *XextFindDisplay(
- XExtensionInfo* /* extinfo */,
- Display* /* dpy */
-);
-
-#define XextHasExtension(i) ((i) && ((i)->codes))
-#define XextCheckExtension(dpy,i,name,val) \
- if (!XextHasExtension(i)) { XMissingExtension (dpy, name); return val; }
-#define XextSimpleCheckExtension(dpy,i,name) \
- if (!XextHasExtension(i)) { XMissingExtension (dpy, name); return; }
-
-
-/*
- * helper macros to generate code that is common to all extensions; caller
- * should prefix it with static if extension source is in one file; this
- * could be a utility function, but have to stack 6 unused arguments for
- * something that is called many, many times would be bad.
- */
-#define XEXT_GENERATE_FIND_DISPLAY(proc,extinfo,extname,hooks,nev,data) \
-XExtDisplayInfo *proc (Display *dpy) \
-{ \
- XExtDisplayInfo *dpyinfo; \
- if (!extinfo) { if (!(extinfo = XextCreateExtension())) return NULL; } \
- if (!(dpyinfo = XextFindDisplay (extinfo, dpy))) \
- dpyinfo = XextAddDisplay (extinfo,dpy,extname,hooks,nev,data); \
- return dpyinfo; \
-}
-
-#define XEXT_FIND_DISPLAY_PROTO(proc) \
- XExtDisplayInfo *proc(Display *dpy)
-
-#define XEXT_GENERATE_CLOSE_DISPLAY(proc,extinfo) \
-int proc (Display *dpy, XExtCodes *codes) \
-{ \
- return XextRemoveDisplay (extinfo, dpy); \
-}
-
-#define XEXT_CLOSE_DISPLAY_PROTO(proc) \
- int proc(Display *dpy, XExtCodes *codes)
-
-#define XEXT_GENERATE_ERROR_STRING(proc,extname,nerr,errl) \
-char *proc (Display *dpy, int code, XExtCodes *codes, char *buf, int n) \
-{ \
- code -= codes->first_error; \
- if (code >= 0 && code < nerr) { \
- char tmp[256]; \
- sprintf (tmp, "%s.%d", extname, code); \
- XGetErrorDatabaseText (dpy, "XProtoError", tmp, errl[code], buf, n); \
- return buf; \
- } \
- return (char *)0; \
-}
-
-#define XEXT_ERROR_STRING_PROTO(proc) \
- char *proc(Display *dpy, int code, XExtCodes *codes, char *buf, int n)
-#endif
+/*
+ *
+Copyright 1989, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ *
+ * Author: Jim Fulton, MIT The Open Group
+ *
+ * Xlib Extension-Writing Utilities
+ *
+ * This package contains utilities for writing the client API for various
+ * protocol extensions. THESE INTERFACES ARE NOT PART OF THE X STANDARD AND
+ * ARE SUBJECT TO CHANGE!
+ */
+
+#ifndef _EXTUTIL_H_
+#define _EXTUTIL_H_
+
+#include <X11/extensions/Xext.h>
+
+/*
+ * We need to keep a list of open displays since the Xlib display list isn't
+ * public. We also have to per-display info in a separate block since it isn't
+ * stored directly in the Display structure.
+ */
+typedef struct _XExtDisplayInfo {
+ struct _XExtDisplayInfo *next; /* keep a linked list */
+ Display *display; /* which display this is */
+ XExtCodes *codes; /* the extension protocol codes */
+ XPointer data; /* extra data for extension to use */
+} XExtDisplayInfo;
+
+typedef struct _XExtensionInfo {
+ XExtDisplayInfo *head; /* start of list */
+ XExtDisplayInfo *cur; /* most recently used */
+ int ndisplays; /* number of displays */
+} XExtensionInfo;
+
+typedef struct _XExtensionHooks {
+ int (*create_gc)(
+ Display* /* display */,
+ GC /* gc */,
+ XExtCodes* /* codes */
+);
+ int (*copy_gc)(
+ Display* /* display */,
+ GC /* gc */,
+ XExtCodes* /* codes */
+);
+ int (*flush_gc)(
+ Display* /* display */,
+ GC /* gc */,
+ XExtCodes* /* codes */
+);
+ int (*free_gc)(
+ Display* /* display */,
+ GC /* gc */,
+ XExtCodes* /* codes */
+);
+ int (*create_font)(
+ Display* /* display */,
+ XFontStruct* /* fs */,
+ XExtCodes* /* codes */
+);
+ int (*free_font)(
+ Display* /* display */,
+ XFontStruct* /* fs */,
+ XExtCodes* /* codes */
+);
+ int (*close_display)(
+ Display* /* display */,
+ XExtCodes* /* codes */
+);
+ Bool (*wire_to_event)(
+ Display* /* display */,
+ XEvent* /* re */,
+ xEvent* /* event */
+);
+ Status (*event_to_wire)(
+ Display* /* display */,
+ XEvent* /* re */,
+ xEvent* /* event */
+);
+ int (*error)(
+ Display* /* display */,
+ xError* /* err */,
+ XExtCodes* /* codes */,
+ int* /* ret_code */
+);
+ char *(*error_string)(
+ Display* /* display */,
+ int /* code */,
+ XExtCodes* /* codes */,
+ char* /* buffer */,
+ int /* nbytes */
+);
+} XExtensionHooks;
+
+extern XExtensionInfo *XextCreateExtension(
+ void
+);
+extern void XextDestroyExtension(
+ XExtensionInfo* /* info */
+);
+extern XExtDisplayInfo *XextAddDisplay(
+ XExtensionInfo* /* extinfo */,
+ Display* /* dpy */,
+ char* /* ext_name */,
+ XExtensionHooks* /* hooks */,
+ int /* nevents */,
+ XPointer /* data */
+);
+extern int XextRemoveDisplay(
+ XExtensionInfo* /* extinfo */,
+ Display* /* dpy */
+);
+extern XExtDisplayInfo *XextFindDisplay(
+ XExtensionInfo* /* extinfo */,
+ Display* /* dpy */
+);
+
+#define XextHasExtension(i) ((i) && ((i)->codes))
+#define XextCheckExtension(dpy,i,name,val) \
+ if (!XextHasExtension(i)) { XMissingExtension (dpy, name); return val; }
+#define XextSimpleCheckExtension(dpy,i,name) \
+ if (!XextHasExtension(i)) { XMissingExtension (dpy, name); return; }
+
+
+/*
+ * helper macros to generate code that is common to all extensions; caller
+ * should prefix it with static if extension source is in one file; this
+ * could be a utility function, but have to stack 6 unused arguments for
+ * something that is called many, many times would be bad.
+ */
+#define XEXT_GENERATE_FIND_DISPLAY(proc,extinfo,extname,hooks,nev,data) \
+XExtDisplayInfo *proc (Display *dpy) \
+{ \
+ XExtDisplayInfo *dpyinfo; \
+ if (!extinfo) { if (!(extinfo = XextCreateExtension())) return NULL; } \
+ if (!(dpyinfo = XextFindDisplay (extinfo, dpy))) \
+ dpyinfo = XextAddDisplay (extinfo,dpy,extname,hooks,nev,data); \
+ return dpyinfo; \
+}
+
+#define XEXT_FIND_DISPLAY_PROTO(proc) \
+ XExtDisplayInfo *proc(Display *dpy)
+
+#define XEXT_GENERATE_CLOSE_DISPLAY(proc,extinfo) \
+int proc (Display *dpy, XExtCodes *codes) \
+{ \
+ return XextRemoveDisplay (extinfo, dpy); \
+}
+
+#define XEXT_CLOSE_DISPLAY_PROTO(proc) \
+ int proc(Display *dpy, XExtCodes *codes)
+
+#define XEXT_GENERATE_ERROR_STRING(proc,extname,nerr,errl) \
+char *proc (Display *dpy, int code, XExtCodes *codes, char *buf, int n) \
+{ \
+ code -= codes->first_error; \
+ if (code >= 0 && code < nerr) { \
+ char tmp[256]; \
+ sprintf (tmp, "%s.%d", extname, code); \
+ XGetErrorDatabaseText (dpy, "XProtoError", tmp, errl[code], buf, n); \
+ return buf; \
+ } \
+ return (char *)0; \
+}
+
+#define XEXT_ERROR_STRING_PROTO(proc) \
+ char *proc(Display *dpy, int code, XExtCodes *codes, char *buf, int n)
+#endif
diff --git a/X11/extensions/fixesproto.txt b/X11/extensions/fixesproto.txt
index 5903ac9ef..27477094a 100644
--- a/X11/extensions/fixesproto.txt
+++ b/X11/extensions/fixesproto.txt
@@ -1,661 +1,661 @@
- The XFIXES Extension
- Version 5.0
- Document Revision 1
- 2010-11-15
- Keith Packard
- keithp@keithp.com
-
-1. Introduction
-
-X applications have often needed to work around various shortcomings in the
-core X window system. This extension is designed to provide the minimal
-server-side support necessary to eliminate problems caused by these
-workarounds.
-
-2. Acknowledgements
-
-This extension is a direct result of requests made by application
-developers, in particular,
-
- + Owen Taylor for describing the issues raised with the XEMBED
- mechanisms and SaveSet processing and his initial extension
- to handle this issue, and for pointer barriers
-
- + Bill Haneman for the design for cursor image tracking.
-
- + Havoc Pennington
-
- + Fredrik Höglund for cursor names
-
- + Deron Johnson for cursor visibility
-
-3. Basic Premise
-
-Requests in this extension may seem to wander all over the map of X server
-capabilities, but they are tied by a simple rule -- resolving issues raised
-by application interaction with core protocol mechanisms that cannot be
-adequately worked around on the client side of the wire.
-
-4. Extension initialization
-
-The client must negotiate the version of the extension before executing
-extension requests. Behavior of the server is undefined otherwise.
-
-QueryVersion
-
- client-major-version: CARD32
- client-minor-version: CARD32
-
- ->
-
- major-version: CARD32
- minor-version: CARD32
-
- The client sends the highest supported version to the server and
- the server sends the highest version it supports, but no higher than
- the requested version. Major versions changes can introduce
- new requests, minor version changes introduce only adjustments to
- existing requests or backward compatible changes. It is
- the clients responsibility to ensure that the server supports
- a version which is compatible with its expectations.
-
-************* XFIXES VERSION 1 OR BETTER ***********
-
-5. Save Set processing changes
-
-Embedding one application within another provides a way of unifying
-disparate documents and views within a single framework. From the X
-protocol perspective, this appears similar to nested window managers; the
-embedding application "manages" the embedded windows much as a window
-manager does for top-level windows. To protect the embedded application
-from embedding application failure, it is reasonable to use the core SaveSet
-mechanism so that embedding application failure causes embedded windows to
-be preserved instead of destroyed.
-
-The core save set mechanism defines the target for each save set member
-window as the nearest enclosing window not owned by the terminating client.
-For embedding applications, this nearest window is usually the window
-manager frame. The problem here is that the window manager will not
-generally expect to receive and correctly manage new windows appearing within
-that window by the save set mechanism, and will instead destroy the frame
-window in response to the client window destruction. This causes the
-embedded window to be destroyed.
-
-An easy fix for this problem is to change the target of the save set member
-to a window which won't be affected by the underlying window destruction.
-XFIXES chooses the root window as the target.
-
-Having embedded windows suddenly appear at the top level can confuse users,
-so XFIXES also lets the client select whether the window should end up
-unmapped after the save set processing instead of unconditionally making
-them be mapped.
-
-5.1 Requests
-
-ChangeSaveSet
-
- window: Window
- mode: { Insert, Delete }
- target: { Nearest, Root }
- map: { Map, Unmap }
-
- ChangeSaveSet is an extension of the core protocol ChangeSaveSet
- request. As in that request, mode specifies whether the indicated
- window is inserted or deleted from the save-set. Target specifies
- whether the window is reparented to the nearest non-client window as
- in the core protocol, or reparented to the root window. Map
- specifies whether the window is mapped as in the core protocol or
- unmapped.
-
-6. Selection Tracking
-
-Applications wishing to monitor the contents of current selections must
-poll for selection changes. XFIXES improves this by providing an event
-delivered whenever the selection ownership changes.
-
-6.1 Types
-
- SELECTIONEVENT { SetSelectionOwner,
- SelectionWindowDestroy,
- SelectionClientClose }
-
-6.1 Events
-
-SelectionNotify
-
- subtype: SELECTIONEVENT
- window: Window
- owner: Window
- selection: Atom
- timestamp: Timestamp
- selection-timestamp: Timestamp
-
-6.2 Requests
-
-SelectSelectionInput
-
- window: Window
- selection: Atom
- event-mask: SETofSELECTIONEVENT
-
- Selects for events to be delivered to window when various causes of
- ownership of selection occur. Subtype indicates the cause of the
- selection ownership change. Owner is set to the current selection
- owner, or None. Timestamp indicates the time the event was
- generated while selection-timestamp indicates the timestamp used to
- own the selection.
-
-7. Cursor Image Monitoring
-
-Mirroring the screen contents is easily done with the core protocol or VNC
-addons, except for the current cursor image. There is no way using the core
-protocol to discover which cursor image is currently displayed. The
-cursor image often contains significant semantic content about the user
-interface. XFIXES provides a simple mechanism to discover when the cursor
-image changes and to fetch the current cursor image.
-
-As the current cursor may or may not have any XID associated with it, there
-is no stable name available. Instead, XFIXES returns only the image of the
-current cursor and provides a way to identify cursor images to avoid
-refetching the image each time it changes to a previously seen cursor.
-
-7.1 Types
- CURSOREVENT { DisplayCursor }
-
-7.2 Events
-
-CursorNotify
-
- subtype: CURSOREVENT
- window: Window
- cursor-serial: CARD32
- timestamp: Timestamp
- name: Atom (Version 2 only)
-
-7.3 Requests
-
-SelectCursorInput
-
- window: Window
- event-mask: SETofCURSOREVENT
-
- This request directs cursor change events to the named window.
- Events will be delivered irrespective of the screen on which they
- occur. Subtype indicates the cause of the cursor image change
- (there is only one subtype at present). Cursor-serial is a number
- assigned to the cursor image which identifies the image. Cursors
- with different serial numbers may have different images. Timestamp
- is the time of the cursor change.
-
- Servers supporting the X Input Extension Version 2.0 or higher only
- notify the clients of cursor change events for the ClientPointer, not
- of any other master pointer (see Section 4.4. in the XI2 protocol
- specificiation).
-
-GetCursorImage
-
- ->
-
- x: INT16
- y: INT16
- width: CARD16
- height: CARD16
- x-hot: CARD16
- y-hot: CARD16
- cursor-serial: CARD32
- cursor-image: LISTofCARD32
-
- GetCursorImage returns the image of the current cursor. X and y are
- the current cursor position. Width and height are the size of the
- cursor image. X-hot and y-hot mark the hotspot within the cursor
- image. Cursor-serial provides the number assigned to this cursor
- image, this same serial number will be reported in a CursorNotify
- event if this cursor image is redisplayed in the future.
-
- The cursor image itself is returned as a single image at 32 bits per
- pixel with 8 bits of alpha in the most significant 8 bits of the
- pixel followed by 8 bits each of red, green and finally 8 bits of
- blue in the least significant 8 bits. The color components are
- pre-multiplied with the alpha component.
-
-************* XFIXES VERSION 2 OR BETTER ***********
-
-8. Region Objects
-
-The core protocol doesn't expose regions as a primitive object and this
-makes many operations more complicated than they really need to be. Adding
-region objects simplifies expose handling, the Shape extension and other
-operations. These operations are also designed to support a separate
-extension, the X Damage Extension.
-
-8.1 Types
-
- Region: XID
- WINDOW_REGION_KIND: { Bounding, Clip }
-
-8.2 Errors
-
- Region The specified region is invalid
-
-8.3 Requests
-
-CreateRegion
-
- region: REGION
- rects: LISTofRECTANGLE
-
- Creates a region initialized to the specified list of rectangles.
- The rectangles may be specified in any order, their union becomes
- the region. The core protocol allows applications to specify an
- order for the rectangles, but it turns out to be just as hard to
- verify the rectangles are actually in that order as it is to simply
- ignore the ordering information and union them together. Hence,
- this request dispenses with the ordering information.
-
- Errors: IDChoice
-
-CreateRegionFromBitmap
-
- region: REGION
- bitmap: PIXMAP
-
- Creates a region initialized to the set of 'one' pixels in bitmap
- (which must be depth 1, else Match error).
-
- Errors: Pixmap, IDChoice, Match
-
-CreateRegionFromWindow
-
- window: Window
- kind: WINDOW_REGION_KIND
- region: Region
-
- Creates a region initialized to the specified window region. See the
- Shape extension for the definition of Bounding and Clip regions.
-
- Errors: Window, IDChoice, Value
-
-CreateRegionFromGC
-
- gc: GContext
- region: Region
-
- Creates a region initialized from the clip list of the specified
- GContext.
-
- Errors: GContext, IDChoice
-
-CreateRegionFromPicture
-
- picture: Picture
- region: Region
-
-
- Creates a region initialized from the clip list of the specified
- Picture.
-
- Errors: Picture, IDChoice
-
-DestroyRegion
-
- region: Region
-
- Destroys the specified region.
-
- Errors: Region
-
-SetRegion
-
- region: Region
- rects: LISTofRECTANGLE
-
- This replaces the current contents of region with the region formed
- by the union of rects.
-
-CopyRegion
- source: Region
- destination: Region
-
- This replaces the contents of destination with the contents of
- source.
-
-UnionRegion
-IntersectRegion
-SubtractRegion
-
- source1: Region
- source2: Region
- destination: Region
-
- Combines source1 and source2, placing the result in destination.
- Destination may be the same as either source1 or source2.
-
- Errors: Region, Value
-
-InvertRegion
-
- source: Region
- bounds: RECTANGLE
- destination: Region
-
- The source region is subtracted from the region specified by
- bounds. The result is placed in destination, replacing its contents.
-
- Errors: Region
-
-TranslateRegion
-
- region: Region
- dx, dy: INT16
-
- The region is translated by dx, dy in place.
-
- Errors: Region
-
-RegionExtents
-
- source: Region
- destination: Region
-
- The extents of the source region are placed in the destination
-
-FetchRegion
-
- region: Region
- ->
- extents: RECTANGLE
- rectangles: LISTofRECTANGLE
-
- The region is returned as a list of rectangles in YX-banded order.
-
- Errors: Region
-
-SetGCClipRegion
-
- gc: GCONTEXT
- clip-x-origin, clip-y-origin: INT16
- region: Region or None
-
- This request changes clip-mask in gc to the specified region and
- sets the clip origin. Output will be clipped to remain contained
- within the region. The clip origin is interpreted relative to the
- origin of whatever destination drawable is specified in a graphics
- request. The region is interpreted relative to the clip origin.
- Future changes to region have no effect on the gc clip-mask.
-
- Errors: GContext, Region
-
-SetWindowShapeRegion
-
- dest: Window
- destKind: SHAPE_KIND
- xOff, yOff: INT16
- region: Region or None
-
- This request sets the specified (by destKind) Shape extension region
- of the window to region, offset by xOff and yOff. Future changes to
- region have no effect on the window shape.
-
- Errors: Window, Value, Region
-
-SetPictureClipRegion
-
- picture: Picture
- clip-x-origin, clip-y-origin: INT16
- region: Region or None
-
- This request changes clip-mask in picture to the specified region
- and sets the clip origin. Input and output will be clipped to
- remain contained within the region. The clip origin is interpreted
- relative to the origin of the drawable associated with picture. The
- region is interpreted relative to the clip origin. Future changes
- to region have no effect on the picture clip-mask.
-
- Errors: Picture, Region
-
-9. Cursor Names
-
-Attaching names to cursors permits some abstract semantic content to be
-associated with specific cursor images. Reflecting those names back to
-applications allows that semantic content to be related to the user through
-non-visual means.
-
-9.1 Events
-
-CursorNotify
-
- subtype: CURSOREVENT
- window: Window
- cursor-serial: CARD32
- timestamp: Timestamp
- name: Atom or None
-
- In Version 2 of the XFIXES protocol, this event adds the atom
- of any name associated with the current cursor (else None).
-
-9.2 Requests
-
-SetCursorName
-
- cursor: CURSOR
- name: LISTofCARD8
-
- This request interns name as an atom and sets that atom as the name
- of cursor.
-
- Errors: Cursor
-
-GetCursorName
-
- cursor: CURSOR
- ->
- atom: ATOM or None
- name: LISTofCARD8
-
- This request returns the name and atom of cursor. If no name is
- set, atom is None and name is empty.
-
- Errors: Cursor
-
-GetCursorImageAndName
-
- ->
-
- x: INT16
- y: INT16
- width: CARD16
- height: CARD16
- x-hot: CARD16
- y-hot: CARD16
- cursor-serial: CARD32
- cursor-atom: ATOM
- cursor-name: LISTofCARD8
- cursor-image: LISTofCARD32
-
- This is similar to GetCursorImage except for including both
- the atom and name of the current cursor.
-
-ChangeCursor
-
- source, destination: CURSOR
-
- This request replaces all references to the destination with a
- reference to source. Any existing uses of the destination cursor
- object will now show the source cursor image.
-
-ChangeCursorByName
-
- src: CURSOR
- name: LISTofCARD8
-
- This request replaces the contents of all cursors with the specified
- name with the src cursor.
-
-************* XFIXES VERSION 3 OR BETTER ***********
-
-10. Region Expansion
-
-This update provides another operation on the region objects defined in
-Section 8 of this document.
-
-10.1 Requests
-
-ExpandRegion
- source: REGION
- destination: REGION
- left, right, top, bottom: CARD16
-
- Creates destination region containing the area specified by
- expanding each rectangle in the source region by the specified
- number of pixels to the left, right, top and bottom.
-
-************* XFIXES VERSION 4 OR BETTER ***********
-
-11. Cursor Visibility
-
-Composite managers may want to render the cursor themselves instead of
-relying on the X server sprite drawing, this provides a way for them to
-do so without getting a double cursor image.
-
-11.1 Requests
-
-HideCursor
-
- window: WINDOW
-
- A client sends this request to indicate that it wants the
- cursor image to be hidden (i.e. to not be displayed) when
- the sprite is inside the specified window, or one of its
- subwindows. If the sprite is inside a window for which one
- or more active clients have requested cursor hiding then the
- cursor image will not be displayed.
-
- Note that even though cursor hiding causes the cursor image
- to be invisible, CursorNotify events will still be sent
- normally, as if the cursor image were visible.
-
- If, during a grab, one or more active clients have requested
- cursor hiding for grab window, or one of its ancestors, the
- cursor image of the grab cursor will not be displayed during
- the lifetime of that grab.
-
- When a client with outstanding cursor hiding requests
- terminates its connection these requests will be deleted.
-
- Servers supporting the X Input Extension Version 2.0 or higher hide
- all visible cursors in response to a HideCursor request. If a master
- pointer is created while the cursors are hidden, this master pointer's
- cursor will be hidden as well.
-
-ShowCursor
-
- window: WINDOW
-
- A client sends this request to indicate that it wants the
- cursor image to be displayed when the sprite is inside the
- specified window, or one of its subwindows. If the sprite
- is inside a window for which no active clients have requested
- cursor hiding then the cursor image for that window will be
- displayed. In other words, if a client calls HideCursor for
- a specified window, or window subtree, this request reverses
- the effects of the HideCursor request.
-
- If the client has made no outstanding HideCursor requests
- a BadMatch error is generated.
-
- Servers supporting the X Input Extension Version 2.0 or higher show
- all visible cursors in response to a ShowCursor request.
-
-************* XFIXES VERSION 5 OR BETTER ***********
-
-12. Pointer Barriers
-
-Compositing managers and desktop environments may have UI elements in
-particular screen locations such that for a single-headed display they
-correspond to easy targets according to Fitt's Law, for example, the top
-left corner. For a multi-headed environment these corners should still be
-semi-impermeable. Pointer barriers allow the application to define
-additional constraint on cursor motion so that these areas behave as
-expected even in the face of multiple displays.
-
-Absolute positioning devices like touchscreens do not obey pointer barriers.
-There's no advantage to target acquisition to do so, since on a touchscreen
-all points are in some sense equally large, whereas for a relative
-positioning device the edges and corners are infinitely large.
-
-WarpPointer and similar requests do not obey pointer barriers, for
-essentially the same reason.
-
-12.1 Types
-
- BARRIER: XID
-
- BarrierDirections
-
- BarrierPositiveX: 1 << 0
- BarrierPositiveY: 1 << 1
- BarrierNegativeX: 1 << 2
- BarrierNegativeY: 1 << 3
-
-12.2 Errors
-
- Barrier
-
-12.3 Requests
-
-CreatePointerBarrier
-
- barrier: BARRIER
- drawable: DRAWABLE
- x1, y2, x2, y2: INT16
- directions: CARD32
- devices: LISTofDEVICEID
-
- Creates a pointer barrier along the line specified by the given
- coordinates on the screen associated with the given drawable. The
- barrier has no spatial extent; it is simply a line along the left
- or top edge of the specified pixels. Barrier coordinates are in
- screen space.
-
- The coordinates must be axis aligned, either x1 == x2, or
- y1 == y2, but not both. The varying coordinates may be specified
- in any order. For x1 == x2, either y1 > y2 or y1 < y2 is valid.
- If the coordinates are not valid BadValue is generated.
-
- Motion is allowed through the barrier in the directions specified:
- setting the BarrierPositiveX bit allows travel through the barrier
- in the positive X direction, etc. Nonsensical values (forbidding Y
- axis travel through a vertical barrier, for example) and excess set
- bits are ignored.
-
- If the server supports the X Input Extension version 2 or higher,
- the devices element names a set of master device to apply the
- barrier to. If XIAllDevices or XIAllMasterDevices are given, the
- barrier applies to all master devices. If a slave device is named,
- BadDevice is generated; this does not apply to slave devices named
- implicitly by XIAllDevices. Naming a device multiple times is
- legal, and is treated as though it were named only once. If a
- device is removed, the barrier continues to apply to the remaining
- devices, but will not apply to any future device with the same ID
- as the removed device. Nothing special happens when all matching
- devices are removed; barriers must be explicitly destroyed.
-
- Errors: IDChoice, Window, Value, Device
-
-DestroyPointerBarrier
-
- barrier: BARRIER
-
- Destroys the named barrier.
-
- Errors: Barrier
-
-99. Future compatibility
-
-This extension is not expected to remain fixed. Future changes will
-strive to remain compatible if at all possible. The X server will always
-support version 1 of the extension protocol if requested by a client.
-
-Additions to the protocol will always by marked by minor version number
-changes so that applications will be able to detect what requests are
-supported.
+ The XFIXES Extension
+ Version 5.0
+ Document Revision 1
+ 2010-11-15
+ Keith Packard
+ keithp@keithp.com
+
+1. Introduction
+
+X applications have often needed to work around various shortcomings in the
+core X window system. This extension is designed to provide the minimal
+server-side support necessary to eliminate problems caused by these
+workarounds.
+
+2. Acknowledgements
+
+This extension is a direct result of requests made by application
+developers, in particular,
+
+ + Owen Taylor for describing the issues raised with the XEMBED
+ mechanisms and SaveSet processing and his initial extension
+ to handle this issue, and for pointer barriers
+
+ + Bill Haneman for the design for cursor image tracking.
+
+ + Havoc Pennington
+
+ + Fredrik Höglund for cursor names
+
+ + Deron Johnson for cursor visibility
+
+3. Basic Premise
+
+Requests in this extension may seem to wander all over the map of X server
+capabilities, but they are tied by a simple rule -- resolving issues raised
+by application interaction with core protocol mechanisms that cannot be
+adequately worked around on the client side of the wire.
+
+4. Extension initialization
+
+The client must negotiate the version of the extension before executing
+extension requests. Behavior of the server is undefined otherwise.
+
+QueryVersion
+
+ client-major-version: CARD32
+ client-minor-version: CARD32
+
+ ->
+
+ major-version: CARD32
+ minor-version: CARD32
+
+ The client sends the highest supported version to the server and
+ the server sends the highest version it supports, but no higher than
+ the requested version. Major versions changes can introduce
+ new requests, minor version changes introduce only adjustments to
+ existing requests or backward compatible changes. It is
+ the clients responsibility to ensure that the server supports
+ a version which is compatible with its expectations.
+
+************* XFIXES VERSION 1 OR BETTER ***********
+
+5. Save Set processing changes
+
+Embedding one application within another provides a way of unifying
+disparate documents and views within a single framework. From the X
+protocol perspective, this appears similar to nested window managers; the
+embedding application "manages" the embedded windows much as a window
+manager does for top-level windows. To protect the embedded application
+from embedding application failure, it is reasonable to use the core SaveSet
+mechanism so that embedding application failure causes embedded windows to
+be preserved instead of destroyed.
+
+The core save set mechanism defines the target for each save set member
+window as the nearest enclosing window not owned by the terminating client.
+For embedding applications, this nearest window is usually the window
+manager frame. The problem here is that the window manager will not
+generally expect to receive and correctly manage new windows appearing within
+that window by the save set mechanism, and will instead destroy the frame
+window in response to the client window destruction. This causes the
+embedded window to be destroyed.
+
+An easy fix for this problem is to change the target of the save set member
+to a window which won't be affected by the underlying window destruction.
+XFIXES chooses the root window as the target.
+
+Having embedded windows suddenly appear at the top level can confuse users,
+so XFIXES also lets the client select whether the window should end up
+unmapped after the save set processing instead of unconditionally making
+them be mapped.
+
+5.1 Requests
+
+ChangeSaveSet
+
+ window: Window
+ mode: { Insert, Delete }
+ target: { Nearest, Root }
+ map: { Map, Unmap }
+
+ ChangeSaveSet is an extension of the core protocol ChangeSaveSet
+ request. As in that request, mode specifies whether the indicated
+ window is inserted or deleted from the save-set. Target specifies
+ whether the window is reparented to the nearest non-client window as
+ in the core protocol, or reparented to the root window. Map
+ specifies whether the window is mapped as in the core protocol or
+ unmapped.
+
+6. Selection Tracking
+
+Applications wishing to monitor the contents of current selections must
+poll for selection changes. XFIXES improves this by providing an event
+delivered whenever the selection ownership changes.
+
+6.1 Types
+
+ SELECTIONEVENT { SetSelectionOwner,
+ SelectionWindowDestroy,
+ SelectionClientClose }
+
+6.1 Events
+
+SelectionNotify
+
+ subtype: SELECTIONEVENT
+ window: Window
+ owner: Window
+ selection: Atom
+ timestamp: Timestamp
+ selection-timestamp: Timestamp
+
+6.2 Requests
+
+SelectSelectionInput
+
+ window: Window
+ selection: Atom
+ event-mask: SETofSELECTIONEVENT
+
+ Selects for events to be delivered to window when various causes of
+ ownership of selection occur. Subtype indicates the cause of the
+ selection ownership change. Owner is set to the current selection
+ owner, or None. Timestamp indicates the time the event was
+ generated while selection-timestamp indicates the timestamp used to
+ own the selection.
+
+7. Cursor Image Monitoring
+
+Mirroring the screen contents is easily done with the core protocol or VNC
+addons, except for the current cursor image. There is no way using the core
+protocol to discover which cursor image is currently displayed. The
+cursor image often contains significant semantic content about the user
+interface. XFIXES provides a simple mechanism to discover when the cursor
+image changes and to fetch the current cursor image.
+
+As the current cursor may or may not have any XID associated with it, there
+is no stable name available. Instead, XFIXES returns only the image of the
+current cursor and provides a way to identify cursor images to avoid
+refetching the image each time it changes to a previously seen cursor.
+
+7.1 Types
+ CURSOREVENT { DisplayCursor }
+
+7.2 Events
+
+CursorNotify
+
+ subtype: CURSOREVENT
+ window: Window
+ cursor-serial: CARD32
+ timestamp: Timestamp
+ name: Atom (Version 2 only)
+
+7.3 Requests
+
+SelectCursorInput
+
+ window: Window
+ event-mask: SETofCURSOREVENT
+
+ This request directs cursor change events to the named window.
+ Events will be delivered irrespective of the screen on which they
+ occur. Subtype indicates the cause of the cursor image change
+ (there is only one subtype at present). Cursor-serial is a number
+ assigned to the cursor image which identifies the image. Cursors
+ with different serial numbers may have different images. Timestamp
+ is the time of the cursor change.
+
+ Servers supporting the X Input Extension Version 2.0 or higher only
+ notify the clients of cursor change events for the ClientPointer, not
+ of any other master pointer (see Section 4.4. in the XI2 protocol
+ specificiation).
+
+GetCursorImage
+
+ ->
+
+ x: INT16
+ y: INT16
+ width: CARD16
+ height: CARD16
+ x-hot: CARD16
+ y-hot: CARD16
+ cursor-serial: CARD32
+ cursor-image: LISTofCARD32
+
+ GetCursorImage returns the image of the current cursor. X and y are
+ the current cursor position. Width and height are the size of the
+ cursor image. X-hot and y-hot mark the hotspot within the cursor
+ image. Cursor-serial provides the number assigned to this cursor
+ image, this same serial number will be reported in a CursorNotify
+ event if this cursor image is redisplayed in the future.
+
+ The cursor image itself is returned as a single image at 32 bits per
+ pixel with 8 bits of alpha in the most significant 8 bits of the
+ pixel followed by 8 bits each of red, green and finally 8 bits of
+ blue in the least significant 8 bits. The color components are
+ pre-multiplied with the alpha component.
+
+************* XFIXES VERSION 2 OR BETTER ***********
+
+8. Region Objects
+
+The core protocol doesn't expose regions as a primitive object and this
+makes many operations more complicated than they really need to be. Adding
+region objects simplifies expose handling, the Shape extension and other
+operations. These operations are also designed to support a separate
+extension, the X Damage Extension.
+
+8.1 Types
+
+ Region: XID
+ WINDOW_REGION_KIND: { Bounding, Clip }
+
+8.2 Errors
+
+ Region The specified region is invalid
+
+8.3 Requests
+
+CreateRegion
+
+ region: REGION
+ rects: LISTofRECTANGLE
+
+ Creates a region initialized to the specified list of rectangles.
+ The rectangles may be specified in any order, their union becomes
+ the region. The core protocol allows applications to specify an
+ order for the rectangles, but it turns out to be just as hard to
+ verify the rectangles are actually in that order as it is to simply
+ ignore the ordering information and union them together. Hence,
+ this request dispenses with the ordering information.
+
+ Errors: IDChoice
+
+CreateRegionFromBitmap
+
+ region: REGION
+ bitmap: PIXMAP
+
+ Creates a region initialized to the set of 'one' pixels in bitmap
+ (which must be depth 1, else Match error).
+
+ Errors: Pixmap, IDChoice, Match
+
+CreateRegionFromWindow
+
+ window: Window
+ kind: WINDOW_REGION_KIND
+ region: Region
+
+ Creates a region initialized to the specified window region. See the
+ Shape extension for the definition of Bounding and Clip regions.
+
+ Errors: Window, IDChoice, Value
+
+CreateRegionFromGC
+
+ gc: GContext
+ region: Region
+
+ Creates a region initialized from the clip list of the specified
+ GContext.
+
+ Errors: GContext, IDChoice
+
+CreateRegionFromPicture
+
+ picture: Picture
+ region: Region
+
+
+ Creates a region initialized from the clip list of the specified
+ Picture.
+
+ Errors: Picture, IDChoice
+
+DestroyRegion
+
+ region: Region
+
+ Destroys the specified region.
+
+ Errors: Region
+
+SetRegion
+
+ region: Region
+ rects: LISTofRECTANGLE
+
+ This replaces the current contents of region with the region formed
+ by the union of rects.
+
+CopyRegion
+ source: Region
+ destination: Region
+
+ This replaces the contents of destination with the contents of
+ source.
+
+UnionRegion
+IntersectRegion
+SubtractRegion
+
+ source1: Region
+ source2: Region
+ destination: Region
+
+ Combines source1 and source2, placing the result in destination.
+ Destination may be the same as either source1 or source2.
+
+ Errors: Region, Value
+
+InvertRegion
+
+ source: Region
+ bounds: RECTANGLE
+ destination: Region
+
+ The source region is subtracted from the region specified by
+ bounds. The result is placed in destination, replacing its contents.
+
+ Errors: Region
+
+TranslateRegion
+
+ region: Region
+ dx, dy: INT16
+
+ The region is translated by dx, dy in place.
+
+ Errors: Region
+
+RegionExtents
+
+ source: Region
+ destination: Region
+
+ The extents of the source region are placed in the destination
+
+FetchRegion
+
+ region: Region
+ ->
+ extents: RECTANGLE
+ rectangles: LISTofRECTANGLE
+
+ The region is returned as a list of rectangles in YX-banded order.
+
+ Errors: Region
+
+SetGCClipRegion
+
+ gc: GCONTEXT
+ clip-x-origin, clip-y-origin: INT16
+ region: Region or None
+
+ This request changes clip-mask in gc to the specified region and
+ sets the clip origin. Output will be clipped to remain contained
+ within the region. The clip origin is interpreted relative to the
+ origin of whatever destination drawable is specified in a graphics
+ request. The region is interpreted relative to the clip origin.
+ Future changes to region have no effect on the gc clip-mask.
+
+ Errors: GContext, Region
+
+SetWindowShapeRegion
+
+ dest: Window
+ destKind: SHAPE_KIND
+ xOff, yOff: INT16
+ region: Region or None
+
+ This request sets the specified (by destKind) Shape extension region
+ of the window to region, offset by xOff and yOff. Future changes to
+ region have no effect on the window shape.
+
+ Errors: Window, Value, Region
+
+SetPictureClipRegion
+
+ picture: Picture
+ clip-x-origin, clip-y-origin: INT16
+ region: Region or None
+
+ This request changes clip-mask in picture to the specified region
+ and sets the clip origin. Input and output will be clipped to
+ remain contained within the region. The clip origin is interpreted
+ relative to the origin of the drawable associated with picture. The
+ region is interpreted relative to the clip origin. Future changes
+ to region have no effect on the picture clip-mask.
+
+ Errors: Picture, Region
+
+9. Cursor Names
+
+Attaching names to cursors permits some abstract semantic content to be
+associated with specific cursor images. Reflecting those names back to
+applications allows that semantic content to be related to the user through
+non-visual means.
+
+9.1 Events
+
+CursorNotify
+
+ subtype: CURSOREVENT
+ window: Window
+ cursor-serial: CARD32
+ timestamp: Timestamp
+ name: Atom or None
+
+ In Version 2 of the XFIXES protocol, this event adds the atom
+ of any name associated with the current cursor (else None).
+
+9.2 Requests
+
+SetCursorName
+
+ cursor: CURSOR
+ name: LISTofCARD8
+
+ This request interns name as an atom and sets that atom as the name
+ of cursor.
+
+ Errors: Cursor
+
+GetCursorName
+
+ cursor: CURSOR
+ ->
+ atom: ATOM or None
+ name: LISTofCARD8
+
+ This request returns the name and atom of cursor. If no name is
+ set, atom is None and name is empty.
+
+ Errors: Cursor
+
+GetCursorImageAndName
+
+ ->
+
+ x: INT16
+ y: INT16
+ width: CARD16
+ height: CARD16
+ x-hot: CARD16
+ y-hot: CARD16
+ cursor-serial: CARD32
+ cursor-atom: ATOM
+ cursor-name: LISTofCARD8
+ cursor-image: LISTofCARD32
+
+ This is similar to GetCursorImage except for including both
+ the atom and name of the current cursor.
+
+ChangeCursor
+
+ source, destination: CURSOR
+
+ This request replaces all references to the destination with a
+ reference to source. Any existing uses of the destination cursor
+ object will now show the source cursor image.
+
+ChangeCursorByName
+
+ src: CURSOR
+ name: LISTofCARD8
+
+ This request replaces the contents of all cursors with the specified
+ name with the src cursor.
+
+************* XFIXES VERSION 3 OR BETTER ***********
+
+10. Region Expansion
+
+This update provides another operation on the region objects defined in
+Section 8 of this document.
+
+10.1 Requests
+
+ExpandRegion
+ source: REGION
+ destination: REGION
+ left, right, top, bottom: CARD16
+
+ Creates destination region containing the area specified by
+ expanding each rectangle in the source region by the specified
+ number of pixels to the left, right, top and bottom.
+
+************* XFIXES VERSION 4 OR BETTER ***********
+
+11. Cursor Visibility
+
+Composite managers may want to render the cursor themselves instead of
+relying on the X server sprite drawing, this provides a way for them to
+do so without getting a double cursor image.
+
+11.1 Requests
+
+HideCursor
+
+ window: WINDOW
+
+ A client sends this request to indicate that it wants the
+ cursor image to be hidden (i.e. to not be displayed) when
+ the sprite is inside the specified window, or one of its
+ subwindows. If the sprite is inside a window for which one
+ or more active clients have requested cursor hiding then the
+ cursor image will not be displayed.
+
+ Note that even though cursor hiding causes the cursor image
+ to be invisible, CursorNotify events will still be sent
+ normally, as if the cursor image were visible.
+
+ If, during a grab, one or more active clients have requested
+ cursor hiding for grab window, or one of its ancestors, the
+ cursor image of the grab cursor will not be displayed during
+ the lifetime of that grab.
+
+ When a client with outstanding cursor hiding requests
+ terminates its connection these requests will be deleted.
+
+ Servers supporting the X Input Extension Version 2.0 or higher hide
+ all visible cursors in response to a HideCursor request. If a master
+ pointer is created while the cursors are hidden, this master pointer's
+ cursor will be hidden as well.
+
+ShowCursor
+
+ window: WINDOW
+
+ A client sends this request to indicate that it wants the
+ cursor image to be displayed when the sprite is inside the
+ specified window, or one of its subwindows. If the sprite
+ is inside a window for which no active clients have requested
+ cursor hiding then the cursor image for that window will be
+ displayed. In other words, if a client calls HideCursor for
+ a specified window, or window subtree, this request reverses
+ the effects of the HideCursor request.
+
+ If the client has made no outstanding HideCursor requests
+ a BadMatch error is generated.
+
+ Servers supporting the X Input Extension Version 2.0 or higher show
+ all visible cursors in response to a ShowCursor request.
+
+************* XFIXES VERSION 5 OR BETTER ***********
+
+12. Pointer Barriers
+
+Compositing managers and desktop environments may have UI elements in
+particular screen locations such that for a single-headed display they
+correspond to easy targets according to Fitt's Law, for example, the top
+left corner. For a multi-headed environment these corners should still be
+semi-impermeable. Pointer barriers allow the application to define
+additional constraint on cursor motion so that these areas behave as
+expected even in the face of multiple displays.
+
+Absolute positioning devices like touchscreens do not obey pointer barriers.
+There's no advantage to target acquisition to do so, since on a touchscreen
+all points are in some sense equally large, whereas for a relative
+positioning device the edges and corners are infinitely large.
+
+WarpPointer and similar requests do not obey pointer barriers, for
+essentially the same reason.
+
+12.1 Types
+
+ BARRIER: XID
+
+ BarrierDirections
+
+ BarrierPositiveX: 1 << 0
+ BarrierPositiveY: 1 << 1
+ BarrierNegativeX: 1 << 2
+ BarrierNegativeY: 1 << 3
+
+12.2 Errors
+
+ Barrier
+
+12.3 Requests
+
+CreatePointerBarrier
+
+ barrier: BARRIER
+ drawable: DRAWABLE
+ x1, y2, x2, y2: INT16
+ directions: CARD32
+ devices: LISTofDEVICEID
+
+ Creates a pointer barrier along the line specified by the given
+ coordinates on the screen associated with the given drawable. The
+ barrier has no spatial extent; it is simply a line along the left
+ or top edge of the specified pixels. Barrier coordinates are in
+ screen space.
+
+ The coordinates must be axis aligned, either x1 == x2, or
+ y1 == y2, but not both. The varying coordinates may be specified
+ in any order. For x1 == x2, either y1 > y2 or y1 < y2 is valid.
+ If the coordinates are not valid BadValue is generated.
+
+ Motion is allowed through the barrier in the directions specified:
+ setting the BarrierPositiveX bit allows travel through the barrier
+ in the positive X direction, etc. Nonsensical values (forbidding Y
+ axis travel through a vertical barrier, for example) and excess set
+ bits are ignored.
+
+ If the server supports the X Input Extension version 2 or higher,
+ the devices element names a set of master device to apply the
+ barrier to. If XIAllDevices or XIAllMasterDevices are given, the
+ barrier applies to all master devices. If a slave device is named,
+ BadDevice is generated; this does not apply to slave devices named
+ implicitly by XIAllDevices. Naming a device multiple times is
+ legal, and is treated as though it were named only once. If a
+ device is removed, the barrier continues to apply to the remaining
+ devices, but will not apply to any future device with the same ID
+ as the removed device. Nothing special happens when all matching
+ devices are removed; barriers must be explicitly destroyed.
+
+ Errors: IDChoice, Window, Value, Device
+
+DestroyPointerBarrier
+
+ barrier: BARRIER
+
+ Destroys the named barrier.
+
+ Errors: Barrier
+
+99. Future compatibility
+
+This extension is not expected to remain fixed. Future changes will
+strive to remain compatible if at all possible. The X server will always
+support version 1 of the extension protocol if requested by a client.
+
+Additions to the protocol will always by marked by minor version number
+changes so that applications will be able to detect what requests are
+supported.
diff --git a/X11/extensions/lbxbuf.h b/X11/extensions/lbxbuf.h
deleted file mode 100644
index 63983df16..000000000
--- a/X11/extensions/lbxbuf.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* $Xorg: lbxbuf.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ */
-/*
- * Copyright 1988, 1989, 1990, 1994 Network Computing Devices, 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 Network Computing Devices, Inc. not be
- * used in advertising or publicity pertaining to distribution of this
- * software without specific, written prior permission.
- *
- * THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC.,
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
- * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL NETWORK
- * COMPUTING DEVICES, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
- * SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE,
- * DATA, OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND
- * REGARDLESS OF WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- */
-
-#ifndef _BUFFER_H_
-#define _BUFFER_H_
-
-#define INBUFFER_SIZE (1 << 13) /* 8K */
-#define OUTBUFFER_SIZE (1 << 12) /* 4K */
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-typedef struct _zlibbuffer *ZlibBufferPtr;
-
-#include <X11/Xfuncproto.h>
-
-_XFUNCPROTOBEGIN
-
-extern int InitZlibBuffer(ZlibBufferPtr b, int size);
-extern void FreeZlibBuffer(ZlibBufferPtr b);
-extern char *ReserveOutBuf(ZlibBufferPtr outbuf, int outlen);
-
-_XFUNCPROTOEND
-
-#endif /* _BUFFER_H_ */
diff --git a/X11/extensions/lbxbufstr.h b/X11/extensions/lbxbufstr.h
deleted file mode 100644
index e1a06f633..000000000
--- a/X11/extensions/lbxbufstr.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* $Xorg: lbxbufstr.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ */
-/*
- * Copyright 1988, 1989, 1990, 1994 Network Computing Devices, 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 Network Computing Devices, Inc. not be
- * used in advertising or publicity pertaining to distribution of this
- * software without specific, written prior permission.
- *
- * THIS SOFTWARE IS PROVIDED `AS-IS'. NETWORK COMPUTING DEVICES, INC.,
- * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
- * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NONINFRINGEMENT. IN NO EVENT SHALL NETWORK
- * COMPUTING DEVICES, INC., BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING
- * SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE,
- * DATA, OR PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND
- * REGARDLESS OF WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- */
-/* $XFree86$ */
-
-#ifndef _BUFFERSTR_H_
-#define _BUFFERSTR_H_
-
-#include <X11/extensions/lbxbuf.h>
-
-/*
- * ZLIB Input/Output buffer
- */
-typedef struct _zlibbuffer {
- char *bufbase;
- char *bufend;
- char *bufptr;
- int bufcnt;
-} ZlibBuffer;
-
-#define BYTES_AVAIL(inbuf, len) \
- (((inbuf)->bufcnt >= (len)) ? (inbuf)->bufptr : NULL)
-
-#endif /* _BUFFERSTR_H_ */
diff --git a/X11/extensions/lbximage.h b/X11/extensions/lbximage.h
deleted file mode 100644
index 10627cf29..000000000
--- a/X11/extensions/lbximage.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/* $Xorg: lbximage.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $ */
-
-/******************************************************************************
-
-Copyright 1994, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-******************************************************************************/
-/* $XFree86: xc/include/extensions/lbximage.h,v 1.4 2001/12/20 19:28:54 tsi Exp $ */
-
-#ifndef _LBX_IMAGE_H_
-#define _LBX_IMAGE_H_
-
-#include <X11/Xfuncproto.h>
-
-_XFUNCPROTOBEGIN
-
-typedef struct _LbxBitmapCompMethod {
-
- char *methodName;
- int inited;
- int methodOpCode; /* to be filled on reply from server */
-
- int (*compInit)(
- void
- );
-
- int (*compFunc)(
- unsigned char * /* inbuf */,
- unsigned char * /* outbuf */,
- int /* outbufSize */,
- int /* image_bytes */,
- int /* pixels_per_line */,
- int /* padded_bytes_per_scanline */,
- int /* reverse_bits */,
- int * /* bytesCompressed */
- );
-
- int (*decompFunc)(
- unsigned char * /* inbuf */,
- unsigned char * /* outbuf */,
- int /* image_bytes */,
- int /* pixels_per_line */,
- int /* padded_bytes_per_scanline */,
- int /* reverse_bits */
- );
-
-} LbxBitmapCompMethod;
-
-
-#define LBX_MAX_DEPTHS 5
-
-typedef struct _LbxPixmapCompMethod {
-
- char *methodName;
- unsigned formatMask;
- int depthCount;
- int depths[LBX_MAX_DEPTHS];
- int inited;
- int methodOpCode; /* to be filled on reply from server */
-
- int (*compInit)(
- void
- );
-
- int (*compFunc)(
- char * /* inbuf */,
- char * /* outbuf */,
- int /* outbufSize */,
- int /* format */,
- int /* depth */,
- int /* num_scan_lines */,
- int /* scan_line_size */,
- int * /* bytesCompressed */
- );
-
- int (*decompFunc)(
- char * /* inbuf */,
- char * /* outbuf */,
- int /* num_scan_lines */,
- int /* scan_line_size */
- );
-
-} LbxPixmapCompMethod;
-
-
-extern int LbxImageEncodePackBits (
-char * /* inbuf */,
-char * /* outbuf */,
-int /* outbufSize */,
-int /* format */,
-int /* depth */,
-int /* num_scan_lines */,
-int /* scan_line_size */,
-int * /* bytesCompressed */
-);
-
-extern int LbxImageEncodeFaxG42D (
-unsigned char * /* inbuf */,
-unsigned char * /* outbuf */,
-int /* outbufSize */,
-int /* image_bytes */,
-int /* pixels_per_line */,
-int /* padded_bytes_per_scanline */,
-int /* reverse_bits */,
-int * /* bytesCompressed */
-);
-
-extern int LbxImageDecodePackBits (
-char * /* inbuf */,
-char * /* outbuf */,
-int /* num_scan_lines */,
-int /* scan_line_size */
-);
-
-extern int LbxImageDecodeFaxG42D (
-unsigned char * /* inbuf */,
-unsigned char * /* outbuf */,
-int /* image_bytes */,
-int /* pixels_per_line */,
-int /* padded_bytes_per_scanline */,
-int /* reverse_bits */
-);
-
-_XFUNCPROTOEND
-
-#define LBX_IMAGE_COMPRESS_SUCCESS 0
-#define LBX_IMAGE_COMPRESS_NO_SUPPORT 1
-#define LBX_IMAGE_COMPRESS_BAD_MALLOC 2
-#define LBX_IMAGE_COMPRESS_NOT_WORTH_IT 3
-
-#endif /* _LBX_IMAGE_H_ */
diff --git a/X11/extensions/multibuf.h b/X11/extensions/multibuf.h
index 96b4c3b14..d2f805ee7 100644
--- a/X11/extensions/multibuf.h
+++ b/X11/extensions/multibuf.h
@@ -1,317 +1,213 @@
-/*
- * $Xorg: multibuf.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $
- *
-Copyright 1989, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- */
-
-/* $XFree86: xc/include/extensions/multibuf.h,v 3.4 2001/12/14 19:53:28 dawes Exp $ */
-
-#ifndef _MULTIBUF_H_
-#define _MULTIBUF_H_
-
-#include <X11/Xfuncproto.h>
-
-#define MULTIBUFFER_PROTOCOL_NAME "Multi-Buffering"
-
-#define MULTIBUFFER_MAJOR_VERSION 1 /* current version numbers */
-#define MULTIBUFFER_MINOR_VERSION 1 /* has ClearImageBufferArea */
-
-#define X_MbufGetBufferVersion 0
-#define X_MbufCreateImageBuffers 1
-#define X_MbufDestroyImageBuffers 2
-#define X_MbufDisplayImageBuffers 3
-#define X_MbufSetMBufferAttributes 4
-#define X_MbufGetMBufferAttributes 5
-#define X_MbufSetBufferAttributes 6
-#define X_MbufGetBufferAttributes 7
-#define X_MbufGetBufferInfo 8
-#define X_MbufCreateStereoWindow 9
-#define X_MbufClearImageBufferArea 10
-
-/*
- * update_action field
- */
-#define MultibufferUpdateActionUndefined 0
-#define MultibufferUpdateActionBackground 1
-#define MultibufferUpdateActionUntouched 2
-#define MultibufferUpdateActionCopied 3
-
-/*
- * update_hint field
- */
-#define MultibufferUpdateHintFrequent 0
-#define MultibufferUpdateHintIntermittent 1
-#define MultibufferUpdateHintStatic 2
-
-/*
- * valuemask fields
- */
-#define MultibufferWindowUpdateHint (1L << 0)
-#define MultibufferBufferEventMask (1L << 0)
-
-/*
- * mono vs. stereo and left vs. right
- */
-#define MultibufferModeMono 0
-#define MultibufferModeStereo 1
-#define MultibufferSideMono 0
-#define MultibufferSideLeft 1
-#define MultibufferSideRight 2
-
-/*
- * clobber state
- */
-#define MultibufferUnclobbered 0
-#define MultibufferPartiallyClobbered 1
-#define MultibufferFullyClobbered 2
-
-/*
- * event stuff
- */
-#define MultibufferClobberNotifyMask 0x02000000
-#define MultibufferUpdateNotifyMask 0x04000000
-
-#define MultibufferClobberNotify 0
-#define MultibufferUpdateNotify 1
-#define MultibufferNumberEvents (MultibufferUpdateNotify + 1)
-
-#define MultibufferBadBuffer 0
-#define MultibufferNumberErrors (MultibufferBadBuffer + 1)
-
-
-#ifndef _MULTIBUF_SERVER_
-/*
- * Extra definitions that will only be needed in the client
- */
-typedef XID Multibuffer;
-
-typedef struct {
- int type; /* of event */
- unsigned long serial; /* # of last request processed by server */
- int send_event; /* true if this came frome a SendEvent request */
- Display *display; /* Display the event was read from */
- Multibuffer buffer; /* buffer of event */
- int state; /* see Clobbered constants above */
-} XmbufClobberNotifyEvent;
-
-typedef struct {
- int type; /* of event */
- unsigned long serial; /* # of last request processed by server */
- int send_event; /* true if this came frome a SendEvent request */
- Display *display; /* Display the event was read from */
- Multibuffer buffer; /* buffer of event */
-} XmbufUpdateNotifyEvent;
-
-
-/*
- * per-window attributes that can be got
- */
-typedef struct {
- int displayed_index; /* which buffer is being displayed */
- int update_action; /* Undefined, Background, Untouched, Copied */
- int update_hint; /* Frequent, Intermittent, Static */
- int window_mode; /* Mono, Stereo */
- int nbuffers; /* Number of buffers */
- Multibuffer *buffers; /* Buffers */
-} XmbufWindowAttributes;
-
-/*
- * per-window attributes that can be set
- */
-typedef struct {
- int update_hint; /* Frequent, Intermittent, Static */
-} XmbufSetWindowAttributes;
-
-
-/*
- * per-buffer attributes that can be got
- */
-typedef struct {
- Window window; /* which window this belongs to */
- unsigned long event_mask; /* events that have been selected */
- int buffer_index; /* which buffer is this */
- int side; /* Mono, Left, Right */
-} XmbufBufferAttributes;
-
-/*
- * per-buffer attributes that can be set
- */
-typedef struct {
- unsigned long event_mask; /* events that have been selected */
-} XmbufSetBufferAttributes;
-
-
-/*
- * per-screen buffer info (there will be lists of them)
- */
-typedef struct {
- VisualID visualid; /* visual usuable at this depth */
- int max_buffers; /* most buffers for this visual */
- int depth; /* depth of buffers to be created */
-} XmbufBufferInfo;
-
-_XFUNCPROTOBEGIN
-
-extern Bool XmbufQueryExtension(
- Display* /* dpy */,
- int* /* event_base_return */,
- int* /* error_base_return */
-);
-
-extern Status XmbufGetVersion(
- Display* /* dpy */,
- int* /* major_version_return */,
- int* /* minor_version_return */
-);
-
-extern int XmbufCreateBuffers(
- Display* /* dpy */,
- Window /* w */,
- int /* count */,
- int /* update_action */,
- int /* update_hint */,
- Multibuffer* /* buffers */
-);
-
-extern void XmbufDestroyBuffers(
- Display* /* dpy */,
- Window /* window */
-);
-
-extern void XmbufDisplayBuffers(
- Display* /* dpy */,
- int /* count */,
- Multibuffer* /* buffers */,
- int /* min_delay */,
- int /* max_delay */
-);
-
-extern Status XmbufGetWindowAttributes(
- Display* /* dpy */,
- Window /* w */,
- XmbufWindowAttributes* /* attr */
-);
-
-extern void XmbufChangeWindowAttributes(
- Display* /* dpy */,
- Window /* w */,
- unsigned long /* valuemask */,
- XmbufSetWindowAttributes* /* attr */
-);
-
-extern Status XmbufGetBufferAttributes(
- Display* /* dpy */,
- Multibuffer /* b */,
- XmbufBufferAttributes* /* attr */
-);
-
-extern void XmbufChangeBufferAttributes(
- Display* /* dpy */,
- Multibuffer /* b */,
- unsigned long /* valuemask */,
- XmbufSetBufferAttributes* /* attr */
-);
-
-extern Status XmbufGetScreenInfo(
- Display* /* dpy */,
- Drawable /* d */,
- int* /* nmono_return */,
- XmbufBufferInfo** /* mono_info_return */,
- int* /* nstereo_return */,
- XmbufBufferInfo** /* stereo_info_return */
-);
-
-extern Window XmbufCreateStereoWindow(
- Display* /* dpy */,
- Window /* parent */,
- int /* x */,
- int /* y */,
- unsigned int /* width */,
- unsigned int /* height */,
- unsigned int /* border_width */,
- int /* depth */,
- unsigned int /* class */,
- Visual* /* visual */,
- unsigned long /* valuemask */,
- XSetWindowAttributes* /* attr */,
- Multibuffer* /* leftp */,
- Multibuffer* /* rightp */
-);
-
-extern void XmbufClearBufferArea(
- Display* /* dpy */,
- Multibuffer /* buffer */,
- int /* x */,
- int /* y */,
- unsigned int /* width */,
- unsigned int /* height */,
- Bool /* exposures */
-);
-
-_XFUNCPROTOEND
-
-#else
-
-#include "scrnintstr.h"
-
-typedef Bool (* mbInitFunc)();
-
-struct _mbufScreen; /* declared in multibufst.h */
-
-extern void RegisterMultibufferInit(
- ScreenPtr /* pScreen */,
- Bool (* /* bufMultibufferInit */)(
- ScreenPtr /* pScreen */,
- struct _mbufScreen * /* pMBScreen */
- )
-);
-
-struct xMbufBufferInfo; /* declared in multibufst.h */
-
-extern void RegisterDoubleBufferHardware(
- ScreenPtr /* pScreen */,
- int /* nInfo */,
- struct xMbufBufferInfo * /* pInfo */,
- DevUnion * /* frameBuffer */,
- DevUnion /* selectPlane */,
- void (* /* CopyBufferBitsFunc */ )(),
- void (* /* DrawSelectPlaneFunc */ )()
-);
-
-extern int CreateImageBuffers (
- WindowPtr /* pWin */,
- int /* nbuf */,
- XID * /* ids */,
- int /* action */,
- int /* hint */
-);
-extern void DestroyImageBuffers (
- WindowPtr /* pWin */
-);
-extern int DisplayImageBuffers (
- XID * /* ids */,
- int /* nbuf */
-);
-
-#endif /* _MULTIBUF_SERVER_ */
-#endif /* _MULTIBUF_H_ */
+/*
+ *
+Copyright 1989, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ */
+
+#ifndef _MULTIBUF_H_
+#define _MULTIBUF_H_
+
+#include <X11/Xfuncproto.h>
+
+#include <X11/extensions/multibufconst.h>
+
+#if !defined(UNIXCPP) || defined(ANSICPP)
+#define MbufGetReq(name,req,info) GetReq (name, req); \
+ req->reqType = info->codes->major_opcode; \
+ req->mbufReqType = X_##name;
+#else
+#define MbufGetReq(name,req,info) GetReq (name, req); \
+ req->reqType = info->codes->major_opcode; \
+ req->mbufReqType = X_/**/name;
+#endif
+
+/*
+ * Extra definitions that will only be needed in the client
+ */
+typedef XID Multibuffer;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came frome a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Multibuffer buffer; /* buffer of event */
+ int state; /* see Clobbered constants above */
+} XmbufClobberNotifyEvent;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came frome a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Multibuffer buffer; /* buffer of event */
+} XmbufUpdateNotifyEvent;
+
+
+/*
+ * per-window attributes that can be got
+ */
+typedef struct {
+ int displayed_index; /* which buffer is being displayed */
+ int update_action; /* Undefined, Background, Untouched, Copied */
+ int update_hint; /* Frequent, Intermittent, Static */
+ int window_mode; /* Mono, Stereo */
+ int nbuffers; /* Number of buffers */
+ Multibuffer *buffers; /* Buffers */
+} XmbufWindowAttributes;
+
+/*
+ * per-window attributes that can be set
+ */
+typedef struct {
+ int update_hint; /* Frequent, Intermittent, Static */
+} XmbufSetWindowAttributes;
+
+
+/*
+ * per-buffer attributes that can be got
+ */
+typedef struct {
+ Window window; /* which window this belongs to */
+ unsigned long event_mask; /* events that have been selected */
+ int buffer_index; /* which buffer is this */
+ int side; /* Mono, Left, Right */
+} XmbufBufferAttributes;
+
+/*
+ * per-buffer attributes that can be set
+ */
+typedef struct {
+ unsigned long event_mask; /* events that have been selected */
+} XmbufSetBufferAttributes;
+
+
+/*
+ * per-screen buffer info (there will be lists of them)
+ */
+typedef struct {
+ VisualID visualid; /* visual usuable at this depth */
+ int max_buffers; /* most buffers for this visual */
+ int depth; /* depth of buffers to be created */
+} XmbufBufferInfo;
+
+_XFUNCPROTOBEGIN
+
+extern Bool XmbufQueryExtension(
+ Display* /* dpy */,
+ int* /* event_base_return */,
+ int* /* error_base_return */
+);
+
+extern Status XmbufGetVersion(
+ Display* /* dpy */,
+ int* /* major_version_return */,
+ int* /* minor_version_return */
+);
+
+extern int XmbufCreateBuffers(
+ Display* /* dpy */,
+ Window /* w */,
+ int /* count */,
+ int /* update_action */,
+ int /* update_hint */,
+ Multibuffer* /* buffers */
+);
+
+extern void XmbufDestroyBuffers(
+ Display* /* dpy */,
+ Window /* window */
+);
+
+extern void XmbufDisplayBuffers(
+ Display* /* dpy */,
+ int /* count */,
+ Multibuffer* /* buffers */,
+ int /* min_delay */,
+ int /* max_delay */
+);
+
+extern Status XmbufGetWindowAttributes(
+ Display* /* dpy */,
+ Window /* w */,
+ XmbufWindowAttributes* /* attr */
+);
+
+extern void XmbufChangeWindowAttributes(
+ Display* /* dpy */,
+ Window /* w */,
+ unsigned long /* valuemask */,
+ XmbufSetWindowAttributes* /* attr */
+);
+
+extern Status XmbufGetBufferAttributes(
+ Display* /* dpy */,
+ Multibuffer /* b */,
+ XmbufBufferAttributes* /* attr */
+);
+
+extern void XmbufChangeBufferAttributes(
+ Display* /* dpy */,
+ Multibuffer /* b */,
+ unsigned long /* valuemask */,
+ XmbufSetBufferAttributes* /* attr */
+);
+
+extern Status XmbufGetScreenInfo(
+ Display* /* dpy */,
+ Drawable /* d */,
+ int* /* nmono_return */,
+ XmbufBufferInfo** /* mono_info_return */,
+ int* /* nstereo_return */,
+ XmbufBufferInfo** /* stereo_info_return */
+);
+
+extern Window XmbufCreateStereoWindow(
+ Display* /* dpy */,
+ Window /* parent */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int /* border_width */,
+ int /* depth */,
+ unsigned int /* class */,
+ Visual* /* visual */,
+ unsigned long /* valuemask */,
+ XSetWindowAttributes* /* attr */,
+ Multibuffer* /* leftp */,
+ Multibuffer* /* rightp */
+);
+
+extern void XmbufClearBufferArea(
+ Display* /* dpy */,
+ Multibuffer /* buffer */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ Bool /* exposures */
+);
+
+_XFUNCPROTOEND
+
+#endif /* _MULTIBUF_H_ */
diff --git a/X11/extensions/panoramiXext.h b/X11/extensions/panoramiXext.h
new file mode 100644
index 000000000..aacc4fc43
--- /dev/null
+++ b/X11/extensions/panoramiXext.h
@@ -0,0 +1,85 @@
+/*****************************************************************
+Copyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
+BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Digital Equipment Corporation
+shall not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from Digital
+Equipment Corporation.
+******************************************************************/
+/*
+ * PanoramiX definitions
+ */
+
+/* THIS IS NOT AN X PROJECT TEAM SPECIFICATION */
+
+#ifndef _panoramiXext_h
+#define _panoramiXext_h
+
+#include <X11/Xfuncproto.h>
+
+typedef struct {
+ Window window; /* PanoramiX window - may not exist */
+ int screen;
+ int State; /* PanoramiXOff, PanoramiXOn */
+ int width; /* width of this screen */
+ int height; /* height of this screen */
+ int ScreenCount; /* real physical number of screens */
+ XID eventMask; /* selected events for this client */
+} XPanoramiXInfo;
+
+_XFUNCPROTOBEGIN
+
+extern Bool XPanoramiXQueryExtension (
+ Display * /* dpy */,
+ int * /* event_base_return */,
+ int * /* error_base_return */
+);
+
+extern Status XPanoramiXQueryVersion(
+ Display * /* dpy */,
+ int * /* major_version_return */,
+ int * /* minor_version_return */
+);
+
+extern XPanoramiXInfo *XPanoramiXAllocInfo (
+ void
+);
+
+extern Status XPanoramiXGetState (
+ Display * /* dpy */,
+ Drawable /* drawable */,
+ XPanoramiXInfo * /* panoramiX_info */
+);
+
+extern Status XPanoramiXGetScreenCount (
+ Display * /* dpy */,
+ Drawable /* drawable */,
+ XPanoramiXInfo * /* panoramiX_info */
+);
+
+extern Status XPanoramiXGetScreenSize (
+ Display * /* dpy */,
+ Drawable /* drawable */,
+ int /* screen_num */,
+ XPanoramiXInfo * /* panoramiX_info */
+);
+
+_XFUNCPROTOEND
+
+#endif /* _panoramiXext_h */
diff --git a/X11/extensions/randr.h b/X11/extensions/randr.h
index 41aedd5de..a22e8e815 100644
--- a/X11/extensions/randr.h
+++ b/X11/extensions/randr.h
@@ -1,185 +1,185 @@
-/*
- * Copyright © 2000 Compaq Computer Corporation
- * Copyright © 2002 Hewlett Packard Company
- * Copyright © 2006 Intel Corporation
- * Copyright © 2008 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.
- *
- * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
- * Keith Packard, Intel Corporation
- */
-
-#ifndef _RANDR_H_
-#define _RANDR_H_
-
-typedef unsigned short Rotation;
-typedef unsigned short SizeID;
-typedef unsigned short SubpixelOrder;
-typedef unsigned short Connection;
-typedef unsigned short XRandrRotation;
-typedef unsigned short XRandrSizeID;
-typedef unsigned short XRandrSubpixelOrder;
-typedef unsigned long XRandrModeFlags;
-
-#define RANDR_NAME "RANDR"
-#define RANDR_MAJOR 1
-#define RANDR_MINOR 4
-
-#define RRNumberErrors 3
-#define RRNumberEvents 2
-#define RRNumberRequests 37
-
-#define X_RRQueryVersion 0
-/* we skip 1 to make old clients fail pretty immediately */
-#define X_RROldGetScreenInfo 1
-#define X_RR1_0SetScreenConfig 2
-/* V1.0 apps share the same set screen config request id */
-#define X_RRSetScreenConfig 2
-#define X_RROldScreenChangeSelectInput 3
-/* 3 used to be ScreenChangeSelectInput; deprecated */
-#define X_RRSelectInput 4
-#define X_RRGetScreenInfo 5
-
-/* V1.2 additions */
-#define X_RRGetScreenSizeRange 6
-#define X_RRSetScreenSize 7
-#define X_RRGetScreenResources 8
-#define X_RRGetOutputInfo 9
-#define X_RRListOutputProperties 10
-#define X_RRQueryOutputProperty 11
-#define X_RRConfigureOutputProperty 12
-#define X_RRChangeOutputProperty 13
-#define X_RRDeleteOutputProperty 14
-#define X_RRGetOutputProperty 15
-#define X_RRCreateMode 16
-#define X_RRDestroyMode 17
-#define X_RRAddOutputMode 18
-#define X_RRDeleteOutputMode 19
-#define X_RRGetCrtcInfo 20
-#define X_RRSetCrtcConfig 21
-#define X_RRGetCrtcGammaSize 22
-#define X_RRGetCrtcGamma 23
-#define X_RRSetCrtcGamma 24
-
-/* V1.3 additions */
-#define X_RRGetScreenResourcesCurrent 25
-#define X_RRSetCrtcTransform 26
-#define X_RRGetCrtcTransform 27
-#define X_RRGetPanning 28
-#define X_RRSetPanning 29
-#define X_RRSetOutputPrimary 30
-#define X_RRGetOutputPrimary 31
-
-#define RRTransformUnit (1L << 0)
-#define RRTransformScaleUp (1L << 1)
-#define RRTransformScaleDown (1L << 2)
-#define RRTransformProjective (1L << 3)
-
-/* V1.4 additions */
-
-#define RR_SetScreenPixmapSize (1 << 0)
-#define RR_SetScreenSize (1 << 1)
-#define RR_SetScreenSizeInMillimeters (1 << 2)
-#define RR_SetScreenCrtcs (1 << 3)
-
-#define RR_SetCrtcPosition (1 << 4)
-#define RR_SetCrtcMode (1 << 5)
-#define RR_SetCrtcRotation (1 << 6)
-#define RR_SetCrtcOutputs (1 << 7)
-#define RR_SetCrtcSpritePositionTransform (1 << 8)
-#define RR_SetCrtcSpriteImageTransform (1 << 9)
-#define RR_SetCrtcPixmap (1 << 10)
-#define RR_SetCrtcPixmapPosition (1 << 11)
-
-#define X_RRQueryScanoutPixmaps 32
-#define X_RRCreateScanoutPixmap 33
-#define X_RRSetCrtcSpriteTransform 34
-#define X_RRGetCrtcSpriteTransform 35
-#define X_RRSetCrtcConfigs 36
-
-/* Event selection bits */
-#define RRScreenChangeNotifyMask (1L << 0)
-/* V1.2 additions */
-#define RRCrtcChangeNotifyMask (1L << 1)
-#define RROutputChangeNotifyMask (1L << 2)
-#define RROutputPropertyNotifyMask (1L << 3)
-
-/* Event codes */
-#define RRScreenChangeNotify 0
-/* V1.2 additions */
-#define RRNotify 1
-/* RRNotify Subcodes */
-#define RRNotify_CrtcChange 0
-#define RRNotify_OutputChange 1
-#define RRNotify_OutputProperty 2
-
-/* used in the rotation field; rotation and reflection in 0.1 proto. */
-#define RR_Rotate_0 1
-#define RR_Rotate_90 2
-#define RR_Rotate_180 4
-#define RR_Rotate_270 8
-
-/* new in 1.0 protocol, to allow reflection of screen */
-
-#define RR_Reflect_X 16
-#define RR_Reflect_Y 32
-
-#define RRSetConfigSuccess 0
-#define RRSetConfigInvalidConfigTime 1
-#define RRSetConfigInvalidTime 2
-#define RRSetConfigFailed 3
-
-/* new in 1.2 protocol */
-
-#define RR_HSyncPositive 0x00000001
-#define RR_HSyncNegative 0x00000002
-#define RR_VSyncPositive 0x00000004
-#define RR_VSyncNegative 0x00000008
-#define RR_Interlace 0x00000010
-#define RR_DoubleScan 0x00000020
-#define RR_CSync 0x00000040
-#define RR_CSyncPositive 0x00000080
-#define RR_CSyncNegative 0x00000100
-#define RR_HSkewPresent 0x00000200
-#define RR_BCast 0x00000400
-#define RR_PixelMultiplex 0x00000800
-#define RR_DoubleClock 0x00001000
-#define RR_ClockDivideBy2 0x00002000
-
-#define RR_Connected 0
-#define RR_Disconnected 1
-#define RR_UnknownConnection 2
-
-#define BadRROutput 0
-#define BadRRCrtc 1
-#define BadRRMode 2
-
-/* Conventional RandR output properties */
-
-#define RR_PROPERTY_BACKLIGHT "Backlight"
-#define RR_PROPERTY_RANDR_EDID "EDID"
-#define RR_PROPERTY_SIGNAL_FORMAT "SignalFormat"
-#define RR_PROPERTY_SIGNAL_PROPERTIES "SignalProperties"
-#define RR_PROPERTY_CONNECTOR_TYPE "ConnectorType"
-#define RR_PROPERTY_CONNECTOR_NUMBER "ConnectorNumber"
-#define RR_PROPERTY_COMPATIBILITY_LIST "CompatibilityList"
-#define RR_PROPERTY_CLONE_LIST "CloneList"
-
-#endif /* _RANDR_H_ */
+/*
+ * Copyright © 2000 Compaq Computer Corporation
+ * Copyright © 2002 Hewlett Packard Company
+ * Copyright © 2006 Intel Corporation
+ * Copyright © 2008 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.
+ *
+ * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
+ * Keith Packard, Intel Corporation
+ */
+
+#ifndef _RANDR_H_
+#define _RANDR_H_
+
+typedef unsigned short Rotation;
+typedef unsigned short SizeID;
+typedef unsigned short SubpixelOrder;
+typedef unsigned short Connection;
+typedef unsigned short XRandrRotation;
+typedef unsigned short XRandrSizeID;
+typedef unsigned short XRandrSubpixelOrder;
+typedef unsigned long XRandrModeFlags;
+
+#define RANDR_NAME "RANDR"
+#define RANDR_MAJOR 1
+#define RANDR_MINOR 4
+
+#define RRNumberErrors 3
+#define RRNumberEvents 2
+#define RRNumberRequests 37
+
+#define X_RRQueryVersion 0
+/* we skip 1 to make old clients fail pretty immediately */
+#define X_RROldGetScreenInfo 1
+#define X_RR1_0SetScreenConfig 2
+/* V1.0 apps share the same set screen config request id */
+#define X_RRSetScreenConfig 2
+#define X_RROldScreenChangeSelectInput 3
+/* 3 used to be ScreenChangeSelectInput; deprecated */
+#define X_RRSelectInput 4
+#define X_RRGetScreenInfo 5
+
+/* V1.2 additions */
+#define X_RRGetScreenSizeRange 6
+#define X_RRSetScreenSize 7
+#define X_RRGetScreenResources 8
+#define X_RRGetOutputInfo 9
+#define X_RRListOutputProperties 10
+#define X_RRQueryOutputProperty 11
+#define X_RRConfigureOutputProperty 12
+#define X_RRChangeOutputProperty 13
+#define X_RRDeleteOutputProperty 14
+#define X_RRGetOutputProperty 15
+#define X_RRCreateMode 16
+#define X_RRDestroyMode 17
+#define X_RRAddOutputMode 18
+#define X_RRDeleteOutputMode 19
+#define X_RRGetCrtcInfo 20
+#define X_RRSetCrtcConfig 21
+#define X_RRGetCrtcGammaSize 22
+#define X_RRGetCrtcGamma 23
+#define X_RRSetCrtcGamma 24
+
+/* V1.3 additions */
+#define X_RRGetScreenResourcesCurrent 25
+#define X_RRSetCrtcTransform 26
+#define X_RRGetCrtcTransform 27
+#define X_RRGetPanning 28
+#define X_RRSetPanning 29
+#define X_RRSetOutputPrimary 30
+#define X_RRGetOutputPrimary 31
+
+#define RRTransformUnit (1L << 0)
+#define RRTransformScaleUp (1L << 1)
+#define RRTransformScaleDown (1L << 2)
+#define RRTransformProjective (1L << 3)
+
+/* V1.4 additions */
+
+#define RR_SetScreenPixmapSize (1 << 0)
+#define RR_SetScreenSize (1 << 1)
+#define RR_SetScreenSizeInMillimeters (1 << 2)
+#define RR_SetScreenCrtcs (1 << 3)
+
+#define RR_SetCrtcPosition (1 << 4)
+#define RR_SetCrtcMode (1 << 5)
+#define RR_SetCrtcRotation (1 << 6)
+#define RR_SetCrtcOutputs (1 << 7)
+#define RR_SetCrtcSpritePositionTransform (1 << 8)
+#define RR_SetCrtcSpriteImageTransform (1 << 9)
+#define RR_SetCrtcPixmap (1 << 10)
+#define RR_SetCrtcPixmapPosition (1 << 11)
+
+#define X_RRQueryScanoutPixmaps 32
+#define X_RRCreateScanoutPixmap 33
+#define X_RRSetCrtcSpriteTransform 34
+#define X_RRGetCrtcSpriteTransform 35
+#define X_RRSetCrtcConfigs 36
+
+/* Event selection bits */
+#define RRScreenChangeNotifyMask (1L << 0)
+/* V1.2 additions */
+#define RRCrtcChangeNotifyMask (1L << 1)
+#define RROutputChangeNotifyMask (1L << 2)
+#define RROutputPropertyNotifyMask (1L << 3)
+
+/* Event codes */
+#define RRScreenChangeNotify 0
+/* V1.2 additions */
+#define RRNotify 1
+/* RRNotify Subcodes */
+#define RRNotify_CrtcChange 0
+#define RRNotify_OutputChange 1
+#define RRNotify_OutputProperty 2
+
+/* used in the rotation field; rotation and reflection in 0.1 proto. */
+#define RR_Rotate_0 1
+#define RR_Rotate_90 2
+#define RR_Rotate_180 4
+#define RR_Rotate_270 8
+
+/* new in 1.0 protocol, to allow reflection of screen */
+
+#define RR_Reflect_X 16
+#define RR_Reflect_Y 32
+
+#define RRSetConfigSuccess 0
+#define RRSetConfigInvalidConfigTime 1
+#define RRSetConfigInvalidTime 2
+#define RRSetConfigFailed 3
+
+/* new in 1.2 protocol */
+
+#define RR_HSyncPositive 0x00000001
+#define RR_HSyncNegative 0x00000002
+#define RR_VSyncPositive 0x00000004
+#define RR_VSyncNegative 0x00000008
+#define RR_Interlace 0x00000010
+#define RR_DoubleScan 0x00000020
+#define RR_CSync 0x00000040
+#define RR_CSyncPositive 0x00000080
+#define RR_CSyncNegative 0x00000100
+#define RR_HSkewPresent 0x00000200
+#define RR_BCast 0x00000400
+#define RR_PixelMultiplex 0x00000800
+#define RR_DoubleClock 0x00001000
+#define RR_ClockDivideBy2 0x00002000
+
+#define RR_Connected 0
+#define RR_Disconnected 1
+#define RR_UnknownConnection 2
+
+#define BadRROutput 0
+#define BadRRCrtc 1
+#define BadRRMode 2
+
+/* Conventional RandR output properties */
+
+#define RR_PROPERTY_BACKLIGHT "Backlight"
+#define RR_PROPERTY_RANDR_EDID "EDID"
+#define RR_PROPERTY_SIGNAL_FORMAT "SignalFormat"
+#define RR_PROPERTY_SIGNAL_PROPERTIES "SignalProperties"
+#define RR_PROPERTY_CONNECTOR_TYPE "ConnectorType"
+#define RR_PROPERTY_CONNECTOR_NUMBER "ConnectorNumber"
+#define RR_PROPERTY_COMPATIBILITY_LIST "CompatibilityList"
+#define RR_PROPERTY_CLONE_LIST "CloneList"
+
+#endif /* _RANDR_H_ */
diff --git a/X11/extensions/randrproto.h b/X11/extensions/randrproto.h
index 00bae2d4a..658a78cca 100644
--- a/X11/extensions/randrproto.h
+++ b/X11/extensions/randrproto.h
@@ -1,924 +1,924 @@
-/*
- * Copyright © 2000 Compaq Computer Corporation
- * Copyright © 2002 Hewlett-Packard Company
- * Copyright © 2006 Intel Corporation
- * Copyright © 2008 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.
- *
- * Author: Jim Gettys, Hewlett-Packard Company, Inc.
- * Keith Packard, Intel Corporation
- */
-
-/* note that RANDR 1.0 is incompatible with version 0.0, or 0.1 */
-/* V1.0 removes depth switching from the protocol */
-#ifndef _XRANDRP_H_
-#define _XRANDRP_H_
-
-#include <X11/extensions/randr.h>
-#include <X11/extensions/renderproto.h>
-
-#define Window CARD32
-#define Drawable CARD32
-#define Font CARD32
-#define Pixmap CARD32
-#define Cursor CARD32
-#define Colormap CARD32
-#define GContext CARD32
-#define Atom CARD32
-#define Time CARD32
-#define KeyCode CARD8
-#define KeySym CARD32
-#define RROutput CARD32
-#define RRMode CARD32
-#define RRCrtc CARD32
-#define RRModeFlags CARD32
-#define PictFormat CARD32
-
-#define Rotation CARD16
-#define SizeID CARD16
-#define SubpixelOrder CARD16
-
-/*
- * data structures
- */
-
-typedef struct {
- CARD16 widthInPixels B16;
- CARD16 heightInPixels B16;
- CARD16 widthInMillimeters B16;
- CARD16 heightInMillimeters B16;
-} xScreenSizes;
-#define sz_xScreenSizes 8
-
-/*
- * requests and replies
- */
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- CARD32 majorVersion B32;
- CARD32 minorVersion B32;
-} xRRQueryVersionReq;
-#define sz_xRRQueryVersionReq 12
-
-typedef struct {
- BYTE type; /* X_Reply */
- BYTE pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 majorVersion B32;
- CARD32 minorVersion B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xRRQueryVersionReply;
-#define sz_xRRQueryVersionReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Window window B32;
-} xRRGetScreenInfoReq;
-#define sz_xRRGetScreenInfoReq 8
-
-/*
- * the xRRScreenInfoReply structure is followed by:
- *
- * the size information
- */
-
-
-typedef struct {
- BYTE type; /* X_Reply */
- BYTE setOfRotations;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Window root B32;
- Time timestamp B32;
- Time configTimestamp B32;
- CARD16 nSizes B16;
- SizeID sizeID B16;
- Rotation rotation B16;
- CARD16 rate B16;
- CARD16 nrateEnts B16;
- CARD16 pad B16;
-} xRRGetScreenInfoReply;
-#define sz_xRRGetScreenInfoReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Drawable drawable B32;
- Time timestamp B32;
- Time configTimestamp B32;
- SizeID sizeID B16;
- Rotation rotation B16;
-} xRR1_0SetScreenConfigReq;
-#define sz_xRR1_0SetScreenConfigReq 20
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Drawable drawable B32;
- Time timestamp B32;
- Time configTimestamp B32;
- SizeID sizeID B16;
- Rotation rotation B16;
- CARD16 rate B16;
- CARD16 pad B16;
-} xRRSetScreenConfigReq;
-#define sz_xRRSetScreenConfigReq 24
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 status;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Time newTimestamp B32;
- Time newConfigTimestamp B32;
- Window root;
- CARD16 subpixelOrder B16;
- CARD16 pad4 B16;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xRRSetScreenConfigReply;
-#define sz_xRRSetScreenConfigReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Window window B32;
- CARD16 enable B16;
- CARD16 pad2 B16;
-} xRRSelectInputReq;
-#define sz_xRRSelectInputReq 12
-
-/*
- * Additions for version 1.2
- */
-
-typedef struct _xRRModeInfo {
- RRMode id B32;
- CARD16 width B16;
- CARD16 height B16;
- CARD32 dotClock B32;
- CARD16 hSyncStart B16;
- CARD16 hSyncEnd B16;
- CARD16 hTotal B16;
- CARD16 hSkew B16;
- CARD16 vSyncStart B16;
- CARD16 vSyncEnd B16;
- CARD16 vTotal B16;
- CARD16 nameLength B16;
- RRModeFlags modeFlags B32;
-} xRRModeInfo;
-#define sz_xRRModeInfo 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Window window B32;
-} xRRGetScreenSizeRangeReq;
-#define sz_xRRGetScreenSizeRangeReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 pad;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 minWidth B16;
- CARD16 minHeight B16;
- CARD16 maxWidth B16;
- CARD16 maxHeight B16;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
-} xRRGetScreenSizeRangeReply;
-#define sz_xRRGetScreenSizeRangeReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Window window B32;
- CARD16 width B16;
- CARD16 height B16;
- CARD32 widthInMillimeters B32;
- CARD32 heightInMillimeters B32;
-} xRRSetScreenSizeReq;
-#define sz_xRRSetScreenSizeReq 20
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Window window B32;
-} xRRGetScreenResourcesReq;
-#define sz_xRRGetScreenResourcesReq 8
-
-typedef struct {
- BYTE type;
- CARD8 pad;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Time timestamp B32;
- Time configTimestamp B32;
- CARD16 nCrtcs B16;
- CARD16 nOutputs B16;
- CARD16 nModes B16;
- CARD16 nbytesNames B16;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
-} xRRGetScreenResourcesReply;
-#define sz_xRRGetScreenResourcesReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RROutput output B32;
- Time configTimestamp B32;
-} xRRGetOutputInfoReq;
-#define sz_xRRGetOutputInfoReq 12
-
-typedef struct {
- BYTE type;
- CARD8 status;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Time timestamp B32;
- RRCrtc crtc B32;
- CARD32 mmWidth B32;
- CARD32 mmHeight B32;
- CARD8 connection;
- CARD8 subpixelOrder;
- CARD16 nCrtcs B16;
- CARD16 nModes B16;
- CARD16 nPreferred B16;
- CARD16 nClones B16;
- CARD16 nameLength B16;
-} xRRGetOutputInfoReply;
-#define sz_xRRGetOutputInfoReply 36
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RROutput output B32;
-} xRRListOutputPropertiesReq;
-#define sz_xRRListOutputPropertiesReq 8
-
-typedef struct {
- BYTE type;
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 nAtoms B16;
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xRRListOutputPropertiesReply;
-#define sz_xRRListOutputPropertiesReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RROutput output B32;
- Atom property B32;
-} xRRQueryOutputPropertyReq;
-#define sz_xRRQueryOutputPropertyReq 12
-
-typedef struct {
- BYTE type;
- BYTE pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- BOOL pending;
- BOOL range;
- BOOL immutable;
- BYTE pad1;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xRRQueryOutputPropertyReply;
-#define sz_xRRQueryOutputPropertyReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RROutput output B32;
- Atom property B32;
- BOOL pending;
- BOOL range;
- CARD16 pad B16;
-} xRRConfigureOutputPropertyReq;
-#define sz_xRRConfigureOutputPropertyReq 16
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RROutput output B32;
- Atom property B32;
- Atom type B32;
- CARD8 format;
- CARD8 mode;
- CARD16 pad;
- CARD32 nUnits B32;
-} xRRChangeOutputPropertyReq;
-#define sz_xRRChangeOutputPropertyReq 24
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RROutput output B32;
- Atom property B32;
-} xRRDeleteOutputPropertyReq;
-#define sz_xRRDeleteOutputPropertyReq 12
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RROutput output B32;
- Atom property B32;
- Atom type B32;
- CARD32 longOffset B32;
- CARD32 longLength B32;
-#ifdef __cplusplus
- BOOL _delete;
-#else
- BOOL delete;
-#endif
- BOOL pending;
- CARD16 pad1 B16;
-} xRRGetOutputPropertyReq;
-#define sz_xRRGetOutputPropertyReq 28
-
-typedef struct {
- BYTE type;
- CARD8 format;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Atom propertyType B32;
- CARD32 bytesAfter B32;
- CARD32 nItems B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
-} xRRGetOutputPropertyReply;
-#define sz_xRRGetOutputPropertyReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Window window B32;
- xRRModeInfo modeInfo;
-} xRRCreateModeReq;
-#define sz_xRRCreateModeReq 40
-
-typedef struct {
- BYTE type;
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- RRMode mode B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xRRCreateModeReply;
-#define sz_xRRCreateModeReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RRMode mode B32;
-} xRRDestroyModeReq;
-#define sz_xRRDestroyModeReq 8
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RROutput output B32;
- RRMode mode B32;
-} xRRAddOutputModeReq;
-#define sz_xRRAddOutputModeReq 12
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RROutput output B32;
- RRMode mode B32;
-} xRRDeleteOutputModeReq;
-#define sz_xRRDeleteOutputModeReq 12
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RRCrtc crtc B32;
- Time configTimestamp B32;
-} xRRGetCrtcInfoReq;
-#define sz_xRRGetCrtcInfoReq 12
-
-typedef struct {
- BYTE type;
- CARD8 status;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Time timestamp B32;
- INT16 x B16;
- INT16 y B16;
- CARD16 width B16;
- CARD16 height B16;
- RRMode mode B32;
- Rotation rotation B16;
- Rotation rotations B16;
- CARD16 nOutput B16;
- CARD16 nPossibleOutput B16;
-} xRRGetCrtcInfoReply;
-#define sz_xRRGetCrtcInfoReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RRCrtc crtc B32;
- Time timestamp B32;
- Time configTimestamp B32;
- INT16 x B16;
- INT16 y B16;
- RRMode mode B32;
- Rotation rotation B16;
- CARD16 pad B16;
-} xRRSetCrtcConfigReq;
-#define sz_xRRSetCrtcConfigReq 28
-
-typedef struct {
- BYTE type;
- CARD8 status;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Time newTimestamp B32;
- CARD32 pad1 B32;
- CARD32 pad2 B16;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xRRSetCrtcConfigReply;
-#define sz_xRRSetCrtcConfigReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RRCrtc crtc B32;
-} xRRGetCrtcGammaSizeReq;
-#define sz_xRRGetCrtcGammaSizeReq 8
-
-typedef struct {
- BYTE type;
- CARD8 status;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 size B16;
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xRRGetCrtcGammaSizeReply;
-#define sz_xRRGetCrtcGammaSizeReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RRCrtc crtc B32;
-} xRRGetCrtcGammaReq;
-#define sz_xRRGetCrtcGammaReq 8
-
-typedef struct {
- BYTE type;
- CARD8 status;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 size B16;
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xRRGetCrtcGammaReply;
-#define sz_xRRGetCrtcGammaReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RRCrtc crtc B32;
- CARD16 size B16;
- CARD16 pad1 B16;
-} xRRSetCrtcGammaReq;
-#define sz_xRRSetCrtcGammaReq 12
-
-/*
- * Additions for V1.3
- */
-
-typedef xRRGetScreenResourcesReq xRRGetScreenResourcesCurrentReq;
-
-#define sz_xRRGetScreenResourcesCurrentReq sz_xRRGetScreenResourcesReq
-
-typedef xRRGetScreenResourcesReply xRRGetScreenResourcesCurrentReply;
-#define sz_xRRGetScreenResourcesCurrentReply sz_xRRGetScreenResourcesReply
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RRCrtc crtc B32;
- xRenderTransform transform;
- CARD16 nbytesFilter; /* number of bytes in filter name */
- CARD16 pad B16;
-} xRRSetCrtcTransformReq;
-
-#define sz_xRRSetCrtcTransformReq 48
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RRCrtc crtc B32;
-} xRRGetCrtcTransformReq;
-
-#define sz_xRRGetCrtcTransformReq 8
-
-typedef struct {
- BYTE type;
- CARD8 status;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- xRenderTransform pendingTransform;
- BYTE hasTransforms;
- CARD8 pad0;
- CARD16 pad1 B16;
- xRenderTransform currentTransform;
- CARD32 pad2 B32;
- CARD16 pendingNbytesFilter B16; /* number of bytes in filter name */
- CARD16 pendingNparamsFilter B16; /* number of filter params */
- CARD16 currentNbytesFilter B16; /* number of bytes in filter name */
- CARD16 currentNparamsFilter B16; /* number of filter params */
-} xRRGetCrtcTransformReply;
-
-#define sz_xRRGetCrtcTransformReply 96
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Window window B32;
- RROutput output B32;
-} xRRSetOutputPrimaryReq;
-#define sz_xRRSetOutputPrimaryReq 12
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Window window B32;
-} xRRGetOutputPrimaryReq;
-#define sz_xRRGetOutputPrimaryReq 8
-
-typedef struct {
- BYTE type;
- CARD8 pad;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- RROutput output B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xRRGetOutputPrimaryReply;
-#define sz_xRRGetOutputPrimaryReply 32
-
-/*
- * Additions for 1.4
- */
-
-typedef struct {
- PictFormat format B32;
- CARD16 maxWidth B16, maxHeight B16;
- Rotation rotations B16;
- CARD16 pad0 B16;
- CARD32 pad1 B32;
-} xRRScanoutPixmapInfo;
-#define sz_xRRScanoutPixmapInfo 16
-
-typedef struct {
- RRCrtc crtc B32;
- CARD32 set B32;
- INT16 x B16, y B16;
- RRMode mode B32;
- Rotation rotation B16;
- CARD16 nOutput B16;
- xRenderTransform spritePositionTransform;
- xRenderTransform spriteImageTransform;
- Pixmap pixmap B32;
- INT16 xPixmap B16, yPixmap B16;
-} xRRCrtcConfig;
-#define sz_xRRCrtcConfig (2*sz_xRenderTransform + 28)
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Drawable drawable B32;
-} xRRQueryScanoutPixmapsReq;
-#define sz_xRRQueryScanoutPixmapsReq 8
-
-typedef struct {
- BYTE type;
- CARD8 pad;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xRRQueryScanoutPixmapsReply;
-#define sz_xRRQueryScanoutPixmapsReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Pixmap pid B32;
- Drawable drawable B32;
- CARD16 width B16, height B16;
- PictFormat format B32;
- Rotation rotations B16;
- CARD16 pad B16;
-} xRRCreateScanoutPixmapReq;
-#define sz_xRRCreateScanoutPixmapReq 24
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RRCrtc crtc B32;
- xRenderTransform positionTransform;
- xRenderTransform imageTransform;
-} xRRSetCrtcSpriteTransformReq;
-#define sz_xRRSetCrtcSpriteTransformReq (2*sz_xRenderTransform + 8)
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RRCrtc crtc B32;
-} xRRGetCrtcSpriteTransformReq;
-#define sz_xRRGetCrtcSpriteTransformReq 8
-
-typedef struct {
- BYTE type;
- CARD8 pad;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- xRenderTransform positionTransform;
- xRenderTransform imageTransform;
-} xRRGetCrtcSpriteTransformReply;
-#define sz_xRRGetCrtcSpriteTransformReply (2*sz_xRenderTransform + 8)
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- Drawable drawable B32;
- CARD32 set B32;
- CARD16 screenPixmapWidth B16, screenPixmapHeight B16;
- CARD16 screenWidth B16, screenHeight B16;
- CARD32 widthInMillimeters B32;
- CARD32 heightInMillimeters B32;
- CARD16 nConfigs B16;
- CARD16 pad0 B16;
- CARD32 pad1 B32;
-} xRRSetCrtcConfigsReq;
-#define sz_xRRSetCrtcConfigsReq 36
-
-typedef struct {
- BYTE type;
- CARD8 status;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B16;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xRRSetCrtcConfigsReply;
-#define sz_xRRSetCrtcConfigsReply 32
-
-/*
- * event
- */
-typedef struct {
- CARD8 type; /* always evBase + ScreenChangeNotify */
- CARD8 rotation; /* new rotation */
- CARD16 sequenceNumber B16;
- Time timestamp B32; /* time screen was changed */
- Time configTimestamp B32; /* time config data was changed */
- Window root B32; /* root window */
- Window window B32; /* window requesting notification */
- SizeID sizeID B16; /* new size ID */
- CARD16 subpixelOrder B16; /* subpixel order */
- CARD16 widthInPixels B16; /* new size */
- CARD16 heightInPixels B16;
- CARD16 widthInMillimeters B16;
- CARD16 heightInMillimeters B16;
-} xRRScreenChangeNotifyEvent;
-#define sz_xRRScreenChangeNotifyEvent 32
-
-typedef struct {
- CARD8 type; /* always evBase + RRNotify */
- CARD8 subCode; /* RRNotify_CrtcChange */
- CARD16 sequenceNumber B16;
- Time timestamp B32; /* time crtc was changed */
- Window window B32; /* window requesting notification */
- RRCrtc crtc B32; /* affected CRTC */
- RRMode mode B32; /* current mode */
- CARD16 rotation B16; /* rotation and reflection */
- CARD16 pad1 B16; /* unused */
- INT16 x B16; /* new location */
- INT16 y B16;
- CARD16 width B16; /* new size */
- CARD16 height B16;
-} xRRCrtcChangeNotifyEvent;
-#define sz_xRRCrtcChangeNotifyEvent 32
-
-typedef struct {
- CARD8 type; /* always evBase + RRNotify */
- CARD8 subCode; /* RRNotify_OutputChange */
- CARD16 sequenceNumber B16;
- Time timestamp B32; /* time output was changed */
- Time configTimestamp B32; /* time config was changed */
- Window window B32; /* window requesting notification */
- RROutput output B32; /* affected output */
- RRCrtc crtc B32; /* current crtc */
- RRMode mode B32; /* current mode */
- CARD16 rotation B16; /* rotation and reflection */
- CARD8 connection; /* connection status */
- CARD8 subpixelOrder; /* subpixel order */
-} xRROutputChangeNotifyEvent;
-#define sz_xRROutputChangeNotifyEvent 32
-
-typedef struct {
- CARD8 type; /* always evBase + RRNotify */
- CARD8 subCode; /* RRNotify_OutputProperty */
- CARD16 sequenceNumber B16;
- Window window B32; /* window requesting notification */
- RROutput output B32; /* affected output */
- Atom atom B32; /* property name */
- Time timestamp B32; /* time crtc was changed */
- CARD8 state; /* NewValue or Deleted */
- CARD8 pad1;
- CARD16 pad2 B16;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xRROutputPropertyNotifyEvent;
-#define sz_xRROutputPropertyNotifyEvent 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RRCrtc crtc B32;
-} xRRGetPanningReq;
-#define sz_xRRGetPanningReq 8
-
-typedef struct {
- BYTE type;
- CARD8 status;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Time timestamp B32;
- CARD16 left B16;
- CARD16 top B16;
- CARD16 width B16;
- CARD16 height B16;
- CARD16 track_left B16;
- CARD16 track_top B16;
- CARD16 track_width B16;
- CARD16 track_height B16;
- INT16 border_left B16;
- INT16 border_top B16;
- INT16 border_right B16;
- INT16 border_bottom B16;
-} xRRGetPanningReply;
-#define sz_xRRGetPanningReply 36
-
-typedef struct {
- CARD8 reqType;
- CARD8 randrReqType;
- CARD16 length B16;
- RRCrtc crtc B32;
- Time timestamp B32;
- CARD16 left B16;
- CARD16 top B16;
- CARD16 width B16;
- CARD16 height B16;
- CARD16 track_left B16;
- CARD16 track_top B16;
- CARD16 track_width B16;
- CARD16 track_height B16;
- INT16 border_left B16;
- INT16 border_top B16;
- INT16 border_right B16;
- INT16 border_bottom B16;
-} xRRSetPanningReq;
-#define sz_xRRSetPanningReq 36
-
-typedef struct {
- BYTE type;
- CARD8 status;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Time newTimestamp B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xRRSetPanningReply;
-#define sz_xRRSetPanningReply 32
-
-#undef PictFormat
-#undef RRModeFlags
-#undef RRCrtc
-#undef RRMode
-#undef RROutput
-#undef RRMode
-#undef RRCrtc
-#undef Drawable
-#undef Window
-#undef Font
-#undef Pixmap
-#undef Cursor
-#undef Colormap
-#undef GContext
-#undef Atom
-#undef Time
-#undef KeyCode
-#undef KeySym
-#undef Rotation
-#undef SizeID
-#undef SubpixelOrder
-
-#endif /* _XRANDRP_H_ */
+/*
+ * Copyright © 2000 Compaq Computer Corporation
+ * Copyright © 2002 Hewlett-Packard Company
+ * Copyright © 2006 Intel Corporation
+ * Copyright © 2008 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.
+ *
+ * Author: Jim Gettys, Hewlett-Packard Company, Inc.
+ * Keith Packard, Intel Corporation
+ */
+
+/* note that RANDR 1.0 is incompatible with version 0.0, or 0.1 */
+/* V1.0 removes depth switching from the protocol */
+#ifndef _XRANDRP_H_
+#define _XRANDRP_H_
+
+#include <X11/extensions/randr.h>
+#include <X11/extensions/renderproto.h>
+
+#define Window CARD32
+#define Drawable CARD32
+#define Font CARD32
+#define Pixmap CARD32
+#define Cursor CARD32
+#define Colormap CARD32
+#define GContext CARD32
+#define Atom CARD32
+#define Time CARD32
+#define KeyCode CARD8
+#define KeySym CARD32
+#define RROutput CARD32
+#define RRMode CARD32
+#define RRCrtc CARD32
+#define RRModeFlags CARD32
+#define PictFormat CARD32
+
+#define Rotation CARD16
+#define SizeID CARD16
+#define SubpixelOrder CARD16
+
+/*
+ * data structures
+ */
+
+typedef struct {
+ CARD16 widthInPixels B16;
+ CARD16 heightInPixels B16;
+ CARD16 widthInMillimeters B16;
+ CARD16 heightInMillimeters B16;
+} xScreenSizes;
+#define sz_xScreenSizes 8
+
+/*
+ * requests and replies
+ */
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ CARD32 majorVersion B32;
+ CARD32 minorVersion B32;
+} xRRQueryVersionReq;
+#define sz_xRRQueryVersionReq 12
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BYTE pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 majorVersion B32;
+ CARD32 minorVersion B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xRRQueryVersionReply;
+#define sz_xRRQueryVersionReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ Window window B32;
+} xRRGetScreenInfoReq;
+#define sz_xRRGetScreenInfoReq 8
+
+/*
+ * the xRRScreenInfoReply structure is followed by:
+ *
+ * the size information
+ */
+
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BYTE setOfRotations;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ Window root B32;
+ Time timestamp B32;
+ Time configTimestamp B32;
+ CARD16 nSizes B16;
+ SizeID sizeID B16;
+ Rotation rotation B16;
+ CARD16 rate B16;
+ CARD16 nrateEnts B16;
+ CARD16 pad B16;
+} xRRGetScreenInfoReply;
+#define sz_xRRGetScreenInfoReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ Drawable drawable B32;
+ Time timestamp B32;
+ Time configTimestamp B32;
+ SizeID sizeID B16;
+ Rotation rotation B16;
+} xRR1_0SetScreenConfigReq;
+#define sz_xRR1_0SetScreenConfigReq 20
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ Drawable drawable B32;
+ Time timestamp B32;
+ Time configTimestamp B32;
+ SizeID sizeID B16;
+ Rotation rotation B16;
+ CARD16 rate B16;
+ CARD16 pad B16;
+} xRRSetScreenConfigReq;
+#define sz_xRRSetScreenConfigReq 24
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 status;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ Time newTimestamp B32;
+ Time newConfigTimestamp B32;
+ Window root;
+ CARD16 subpixelOrder B16;
+ CARD16 pad4 B16;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xRRSetScreenConfigReply;
+#define sz_xRRSetScreenConfigReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ Window window B32;
+ CARD16 enable B16;
+ CARD16 pad2 B16;
+} xRRSelectInputReq;
+#define sz_xRRSelectInputReq 12
+
+/*
+ * Additions for version 1.2
+ */
+
+typedef struct _xRRModeInfo {
+ RRMode id B32;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD32 dotClock B32;
+ CARD16 hSyncStart B16;
+ CARD16 hSyncEnd B16;
+ CARD16 hTotal B16;
+ CARD16 hSkew B16;
+ CARD16 vSyncStart B16;
+ CARD16 vSyncEnd B16;
+ CARD16 vTotal B16;
+ CARD16 nameLength B16;
+ RRModeFlags modeFlags B32;
+} xRRModeInfo;
+#define sz_xRRModeInfo 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ Window window B32;
+} xRRGetScreenSizeRangeReq;
+#define sz_xRRGetScreenSizeRangeReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 minWidth B16;
+ CARD16 minHeight B16;
+ CARD16 maxWidth B16;
+ CARD16 maxHeight B16;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xRRGetScreenSizeRangeReply;
+#define sz_xRRGetScreenSizeRangeReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ Window window B32;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD32 widthInMillimeters B32;
+ CARD32 heightInMillimeters B32;
+} xRRSetScreenSizeReq;
+#define sz_xRRSetScreenSizeReq 20
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ Window window B32;
+} xRRGetScreenResourcesReq;
+#define sz_xRRGetScreenResourcesReq 8
+
+typedef struct {
+ BYTE type;
+ CARD8 pad;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ Time timestamp B32;
+ Time configTimestamp B32;
+ CARD16 nCrtcs B16;
+ CARD16 nOutputs B16;
+ CARD16 nModes B16;
+ CARD16 nbytesNames B16;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+} xRRGetScreenResourcesReply;
+#define sz_xRRGetScreenResourcesReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RROutput output B32;
+ Time configTimestamp B32;
+} xRRGetOutputInfoReq;
+#define sz_xRRGetOutputInfoReq 12
+
+typedef struct {
+ BYTE type;
+ CARD8 status;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ Time timestamp B32;
+ RRCrtc crtc B32;
+ CARD32 mmWidth B32;
+ CARD32 mmHeight B32;
+ CARD8 connection;
+ CARD8 subpixelOrder;
+ CARD16 nCrtcs B16;
+ CARD16 nModes B16;
+ CARD16 nPreferred B16;
+ CARD16 nClones B16;
+ CARD16 nameLength B16;
+} xRRGetOutputInfoReply;
+#define sz_xRRGetOutputInfoReply 36
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RROutput output B32;
+} xRRListOutputPropertiesReq;
+#define sz_xRRListOutputPropertiesReq 8
+
+typedef struct {
+ BYTE type;
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 nAtoms B16;
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xRRListOutputPropertiesReply;
+#define sz_xRRListOutputPropertiesReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RROutput output B32;
+ Atom property B32;
+} xRRQueryOutputPropertyReq;
+#define sz_xRRQueryOutputPropertyReq 12
+
+typedef struct {
+ BYTE type;
+ BYTE pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ BOOL pending;
+ BOOL range;
+ BOOL immutable;
+ BYTE pad1;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xRRQueryOutputPropertyReply;
+#define sz_xRRQueryOutputPropertyReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RROutput output B32;
+ Atom property B32;
+ BOOL pending;
+ BOOL range;
+ CARD16 pad B16;
+} xRRConfigureOutputPropertyReq;
+#define sz_xRRConfigureOutputPropertyReq 16
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RROutput output B32;
+ Atom property B32;
+ Atom type B32;
+ CARD8 format;
+ CARD8 mode;
+ CARD16 pad;
+ CARD32 nUnits B32;
+} xRRChangeOutputPropertyReq;
+#define sz_xRRChangeOutputPropertyReq 24
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RROutput output B32;
+ Atom property B32;
+} xRRDeleteOutputPropertyReq;
+#define sz_xRRDeleteOutputPropertyReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RROutput output B32;
+ Atom property B32;
+ Atom type B32;
+ CARD32 longOffset B32;
+ CARD32 longLength B32;
+#ifdef __cplusplus
+ BOOL _delete;
+#else
+ BOOL delete;
+#endif
+ BOOL pending;
+ CARD16 pad1 B16;
+} xRRGetOutputPropertyReq;
+#define sz_xRRGetOutputPropertyReq 28
+
+typedef struct {
+ BYTE type;
+ CARD8 format;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ Atom propertyType B32;
+ CARD32 bytesAfter B32;
+ CARD32 nItems B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xRRGetOutputPropertyReply;
+#define sz_xRRGetOutputPropertyReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ Window window B32;
+ xRRModeInfo modeInfo;
+} xRRCreateModeReq;
+#define sz_xRRCreateModeReq 40
+
+typedef struct {
+ BYTE type;
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ RRMode mode B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xRRCreateModeReply;
+#define sz_xRRCreateModeReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RRMode mode B32;
+} xRRDestroyModeReq;
+#define sz_xRRDestroyModeReq 8
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RROutput output B32;
+ RRMode mode B32;
+} xRRAddOutputModeReq;
+#define sz_xRRAddOutputModeReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RROutput output B32;
+ RRMode mode B32;
+} xRRDeleteOutputModeReq;
+#define sz_xRRDeleteOutputModeReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RRCrtc crtc B32;
+ Time configTimestamp B32;
+} xRRGetCrtcInfoReq;
+#define sz_xRRGetCrtcInfoReq 12
+
+typedef struct {
+ BYTE type;
+ CARD8 status;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ Time timestamp B32;
+ INT16 x B16;
+ INT16 y B16;
+ CARD16 width B16;
+ CARD16 height B16;
+ RRMode mode B32;
+ Rotation rotation B16;
+ Rotation rotations B16;
+ CARD16 nOutput B16;
+ CARD16 nPossibleOutput B16;
+} xRRGetCrtcInfoReply;
+#define sz_xRRGetCrtcInfoReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RRCrtc crtc B32;
+ Time timestamp B32;
+ Time configTimestamp B32;
+ INT16 x B16;
+ INT16 y B16;
+ RRMode mode B32;
+ Rotation rotation B16;
+ CARD16 pad B16;
+} xRRSetCrtcConfigReq;
+#define sz_xRRSetCrtcConfigReq 28
+
+typedef struct {
+ BYTE type;
+ CARD8 status;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ Time newTimestamp B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B16;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xRRSetCrtcConfigReply;
+#define sz_xRRSetCrtcConfigReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RRCrtc crtc B32;
+} xRRGetCrtcGammaSizeReq;
+#define sz_xRRGetCrtcGammaSizeReq 8
+
+typedef struct {
+ BYTE type;
+ CARD8 status;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 size B16;
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xRRGetCrtcGammaSizeReply;
+#define sz_xRRGetCrtcGammaSizeReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RRCrtc crtc B32;
+} xRRGetCrtcGammaReq;
+#define sz_xRRGetCrtcGammaReq 8
+
+typedef struct {
+ BYTE type;
+ CARD8 status;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 size B16;
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xRRGetCrtcGammaReply;
+#define sz_xRRGetCrtcGammaReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RRCrtc crtc B32;
+ CARD16 size B16;
+ CARD16 pad1 B16;
+} xRRSetCrtcGammaReq;
+#define sz_xRRSetCrtcGammaReq 12
+
+/*
+ * Additions for V1.3
+ */
+
+typedef xRRGetScreenResourcesReq xRRGetScreenResourcesCurrentReq;
+
+#define sz_xRRGetScreenResourcesCurrentReq sz_xRRGetScreenResourcesReq
+
+typedef xRRGetScreenResourcesReply xRRGetScreenResourcesCurrentReply;
+#define sz_xRRGetScreenResourcesCurrentReply sz_xRRGetScreenResourcesReply
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RRCrtc crtc B32;
+ xRenderTransform transform;
+ CARD16 nbytesFilter; /* number of bytes in filter name */
+ CARD16 pad B16;
+} xRRSetCrtcTransformReq;
+
+#define sz_xRRSetCrtcTransformReq 48
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RRCrtc crtc B32;
+} xRRGetCrtcTransformReq;
+
+#define sz_xRRGetCrtcTransformReq 8
+
+typedef struct {
+ BYTE type;
+ CARD8 status;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ xRenderTransform pendingTransform;
+ BYTE hasTransforms;
+ CARD8 pad0;
+ CARD16 pad1 B16;
+ xRenderTransform currentTransform;
+ CARD32 pad2 B32;
+ CARD16 pendingNbytesFilter B16; /* number of bytes in filter name */
+ CARD16 pendingNparamsFilter B16; /* number of filter params */
+ CARD16 currentNbytesFilter B16; /* number of bytes in filter name */
+ CARD16 currentNparamsFilter B16; /* number of filter params */
+} xRRGetCrtcTransformReply;
+
+#define sz_xRRGetCrtcTransformReply 96
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ Window window B32;
+ RROutput output B32;
+} xRRSetOutputPrimaryReq;
+#define sz_xRRSetOutputPrimaryReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ Window window B32;
+} xRRGetOutputPrimaryReq;
+#define sz_xRRGetOutputPrimaryReq 8
+
+typedef struct {
+ BYTE type;
+ CARD8 pad;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ RROutput output B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xRRGetOutputPrimaryReply;
+#define sz_xRRGetOutputPrimaryReply 32
+
+/*
+ * Additions for 1.4
+ */
+
+typedef struct {
+ PictFormat format B32;
+ CARD16 maxWidth B16, maxHeight B16;
+ Rotation rotations B16;
+ CARD16 pad0 B16;
+ CARD32 pad1 B32;
+} xRRScanoutPixmapInfo;
+#define sz_xRRScanoutPixmapInfo 16
+
+typedef struct {
+ RRCrtc crtc B32;
+ CARD32 set B32;
+ INT16 x B16, y B16;
+ RRMode mode B32;
+ Rotation rotation B16;
+ CARD16 nOutput B16;
+ xRenderTransform spritePositionTransform;
+ xRenderTransform spriteImageTransform;
+ Pixmap pixmap B32;
+ INT16 xPixmap B16, yPixmap B16;
+} xRRCrtcConfig;
+#define sz_xRRCrtcConfig (2*sz_xRenderTransform + 28)
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ Drawable drawable B32;
+} xRRQueryScanoutPixmapsReq;
+#define sz_xRRQueryScanoutPixmapsReq 8
+
+typedef struct {
+ BYTE type;
+ CARD8 pad;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xRRQueryScanoutPixmapsReply;
+#define sz_xRRQueryScanoutPixmapsReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ Pixmap pid B32;
+ Drawable drawable B32;
+ CARD16 width B16, height B16;
+ PictFormat format B32;
+ Rotation rotations B16;
+ CARD16 pad B16;
+} xRRCreateScanoutPixmapReq;
+#define sz_xRRCreateScanoutPixmapReq 24
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RRCrtc crtc B32;
+ xRenderTransform positionTransform;
+ xRenderTransform imageTransform;
+} xRRSetCrtcSpriteTransformReq;
+#define sz_xRRSetCrtcSpriteTransformReq (2*sz_xRenderTransform + 8)
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RRCrtc crtc B32;
+} xRRGetCrtcSpriteTransformReq;
+#define sz_xRRGetCrtcSpriteTransformReq 8
+
+typedef struct {
+ BYTE type;
+ CARD8 pad;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ xRenderTransform positionTransform;
+ xRenderTransform imageTransform;
+} xRRGetCrtcSpriteTransformReply;
+#define sz_xRRGetCrtcSpriteTransformReply (2*sz_xRenderTransform + 8)
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ Drawable drawable B32;
+ CARD32 set B32;
+ CARD16 screenPixmapWidth B16, screenPixmapHeight B16;
+ CARD16 screenWidth B16, screenHeight B16;
+ CARD32 widthInMillimeters B32;
+ CARD32 heightInMillimeters B32;
+ CARD16 nConfigs B16;
+ CARD16 pad0 B16;
+ CARD32 pad1 B32;
+} xRRSetCrtcConfigsReq;
+#define sz_xRRSetCrtcConfigsReq 36
+
+typedef struct {
+ BYTE type;
+ CARD8 status;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B16;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xRRSetCrtcConfigsReply;
+#define sz_xRRSetCrtcConfigsReply 32
+
+/*
+ * event
+ */
+typedef struct {
+ CARD8 type; /* always evBase + ScreenChangeNotify */
+ CARD8 rotation; /* new rotation */
+ CARD16 sequenceNumber B16;
+ Time timestamp B32; /* time screen was changed */
+ Time configTimestamp B32; /* time config data was changed */
+ Window root B32; /* root window */
+ Window window B32; /* window requesting notification */
+ SizeID sizeID B16; /* new size ID */
+ CARD16 subpixelOrder B16; /* subpixel order */
+ CARD16 widthInPixels B16; /* new size */
+ CARD16 heightInPixels B16;
+ CARD16 widthInMillimeters B16;
+ CARD16 heightInMillimeters B16;
+} xRRScreenChangeNotifyEvent;
+#define sz_xRRScreenChangeNotifyEvent 32
+
+typedef struct {
+ CARD8 type; /* always evBase + RRNotify */
+ CARD8 subCode; /* RRNotify_CrtcChange */
+ CARD16 sequenceNumber B16;
+ Time timestamp B32; /* time crtc was changed */
+ Window window B32; /* window requesting notification */
+ RRCrtc crtc B32; /* affected CRTC */
+ RRMode mode B32; /* current mode */
+ CARD16 rotation B16; /* rotation and reflection */
+ CARD16 pad1 B16; /* unused */
+ INT16 x B16; /* new location */
+ INT16 y B16;
+ CARD16 width B16; /* new size */
+ CARD16 height B16;
+} xRRCrtcChangeNotifyEvent;
+#define sz_xRRCrtcChangeNotifyEvent 32
+
+typedef struct {
+ CARD8 type; /* always evBase + RRNotify */
+ CARD8 subCode; /* RRNotify_OutputChange */
+ CARD16 sequenceNumber B16;
+ Time timestamp B32; /* time output was changed */
+ Time configTimestamp B32; /* time config was changed */
+ Window window B32; /* window requesting notification */
+ RROutput output B32; /* affected output */
+ RRCrtc crtc B32; /* current crtc */
+ RRMode mode B32; /* current mode */
+ CARD16 rotation B16; /* rotation and reflection */
+ CARD8 connection; /* connection status */
+ CARD8 subpixelOrder; /* subpixel order */
+} xRROutputChangeNotifyEvent;
+#define sz_xRROutputChangeNotifyEvent 32
+
+typedef struct {
+ CARD8 type; /* always evBase + RRNotify */
+ CARD8 subCode; /* RRNotify_OutputProperty */
+ CARD16 sequenceNumber B16;
+ Window window B32; /* window requesting notification */
+ RROutput output B32; /* affected output */
+ Atom atom B32; /* property name */
+ Time timestamp B32; /* time crtc was changed */
+ CARD8 state; /* NewValue or Deleted */
+ CARD8 pad1;
+ CARD16 pad2 B16;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xRROutputPropertyNotifyEvent;
+#define sz_xRROutputPropertyNotifyEvent 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RRCrtc crtc B32;
+} xRRGetPanningReq;
+#define sz_xRRGetPanningReq 8
+
+typedef struct {
+ BYTE type;
+ CARD8 status;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ Time timestamp B32;
+ CARD16 left B16;
+ CARD16 top B16;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD16 track_left B16;
+ CARD16 track_top B16;
+ CARD16 track_width B16;
+ CARD16 track_height B16;
+ INT16 border_left B16;
+ INT16 border_top B16;
+ INT16 border_right B16;
+ INT16 border_bottom B16;
+} xRRGetPanningReply;
+#define sz_xRRGetPanningReply 36
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 randrReqType;
+ CARD16 length B16;
+ RRCrtc crtc B32;
+ Time timestamp B32;
+ CARD16 left B16;
+ CARD16 top B16;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD16 track_left B16;
+ CARD16 track_top B16;
+ CARD16 track_width B16;
+ CARD16 track_height B16;
+ INT16 border_left B16;
+ INT16 border_top B16;
+ INT16 border_right B16;
+ INT16 border_bottom B16;
+} xRRSetPanningReq;
+#define sz_xRRSetPanningReq 36
+
+typedef struct {
+ BYTE type;
+ CARD8 status;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ Time newTimestamp B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xRRSetPanningReply;
+#define sz_xRRSetPanningReply 32
+
+#undef PictFormat
+#undef RRModeFlags
+#undef RRCrtc
+#undef RRMode
+#undef RROutput
+#undef RRMode
+#undef RRCrtc
+#undef Drawable
+#undef Window
+#undef Font
+#undef Pixmap
+#undef Cursor
+#undef Colormap
+#undef GContext
+#undef Atom
+#undef Time
+#undef KeyCode
+#undef KeySym
+#undef Rotation
+#undef SizeID
+#undef SubpixelOrder
+
+#endif /* _XRANDRP_H_ */
diff --git a/X11/extensions/randrproto.txt b/X11/extensions/randrproto.txt
index 20cac7562..f0acfddfb 100644
--- a/X11/extensions/randrproto.txt
+++ b/X11/extensions/randrproto.txt
@@ -1,2623 +1,2623 @@
- The X Resize, Rotate and Reflect Extension
- Version 1.4.0
- 2009-10-5
-
- Jim Gettys
- Jim.Gettys@hp.com
- Cambridge Research Laboratory
- HP Labs
- Hewlett Packard Company
-
- Keith Packard
- keith.packard@intel.com
- Open Source Technology Center
- Intel Corporation
-
-1. Introduction
-
-The X Resize, Rotate and Reflect Extension, called RandR for short,
-brings the ability to resize, rotate and reflect the root window of a
-screen. It is based on the X Resize and Rotate Extension as specified
-in the Proceedings of the 2001 Usenix Technical Conference [RANDR].
-
-RandR as implemented and integrated into the X server differs in
-one substantial fashion from the design discussed in that paper: that
-is, RandR 1.0 does not implement the depth switching described in that
-document, and the support described for that in the protocol in that
-document and in the implementation has been removed from the
-protocol described here, as it has been overtaken by events.
-
-These events include:
- ► Modern toolkits (in this case, GTK+ 2.x) have progressed to the point
- of implementing migration between screens of arbitrary depths
- ► The continued advance of Moore's law has made limited amounts of VRAM
- less of an issue, reducing the pressure to implement depth switching
- on laptops or desktop systems
- ► The continued decline of legacy toolkits whose design would have
- required depth switching to support migration
- ► The lack of depth switching implementation experience in the
- intervening time, due to events beyond our control
-
-Additionally, the requirement to support depth switching might
-complicate other re-engineering of the device independent part of the
-X server that is currently being contemplated.
-
-Rather than further delaying RandR's widespread deployment for a feature
-long wanted by the community (resizing of screens, particularly on laptops),
-or the deployment of a protocol design that might be flawed due to lack of
-implementation experience, we decided to remove depth switching from the
-protocol. It may be implemented at a later time if resources and
-interests permit as a revision to the protocol described here, which will
-remain a stable base for applications. The protocol described here has been
-implemented in the main X.org server, and more fully in the hw/kdrive
-implementation in the distribution, which fully implements resizing,
-rotation and reflection.
-
-1.2 Introduction to version 1.2 of the extension
-
-One of the significant limitations found in version 1.1 of the RandR
-protocol was the inability to deal with the Xinerama model where multiple
-monitors display portions of a common underlying screen. In this environment,
-zero or more video outputs are associated with each CRT controller which
-defines both a set of video timings and a 'viewport' within the larger
-screen. This viewport is independent of the overall size of the screen, and
-may be located anywhere within the screen.
-
-The effect is to decouple the reported size of the screen from the size
-presented by each video output, and to permit multiple outputs to present
-information for a single screen.
-
-To extend RandR for this model, we separate out the output, CRTC and screen
-configuration information and permit them to be configured separately. For
-compatibility with the 1.1 version of the protocol, we make the 1.1 requests
-simultaneously affect both the screen and the (presumably sole) CRTC and
-output. The set of available outputs are presented with UTF-8 encoded names
-and may be connected to CRTCs as permitted by the underlying hardware. CRTC
-configuration is now done with full mode information instead of just size
-and refresh rate, and these modes have names. These names also use UTF-8
-encoding. New modes may also be added by the user.
-
-Additional requests and events are provided for this new functionality.
-
- ┌────────────────────────────────┬──────────┐
- ┏━━━━━━━┳───────────────┐ ╔════════╗ ╔════════╗
- ┃ 1 ┃ │ ║ A ║ ║ B ║
- ┃ ┏━━━╋━━━━━━━━━━━━━━━┫ ║ ║ ║ ║
- ┣━━━╋━━━┛ ┃ ╚════════╝ ╚════════╝
- │ ┃ 2 ┃─────────────────┐
- │ ┃ ┃ ╔═══════════════════╗
- │ ┃ ┃ ║ ║
- │ ┗━━━━━━━━━━━━━━━━━━━┫ ║ C ║
- └───────────────────────┘ ║ ║
- ┌──────┐ ┏━━━━┓ ╔══════╗ ║ ║
- │screen│ ┃CRTC┃ ║output║ ╚═══════════════════╝
- └──────┘ ┗━━━━┛ ╚══════╝
-
-In this picture, the screen is covered (incompletely) by two CRTCs. CRTC1
-is connected to two outputs, A and B. CRTC2 is connected to output C.
-Outputs A and B will present exactly the same region of the screen using
-the same mode line. Output C will present a different (larger) region of
-the screen using a different mode line.
-
-RandR provides information about each available CRTC and output; the
-connection between CRTC and output is under application control, although
-the hardware will probably impose restrictions on the possible
-configurations. The protocol doesn't try to describe these restrictions,
-instead it provides a mechanism to find out what combinations are supported.
-
-For instance, dual-link DVI gangs two CRTC outputs together to provide higher
-bandwidth for large resolution screens. This is exposed in RandR by
-requiring that nothing be connected to the second CRTC when driving a high
-resolution screen on the first.
-
-1.3 Introduction to version 1.3 of the extension
-
-Version 1.3 builds on the changes made with version 1.2 and adds some new
-capabilities without fundmentally changing the extension again. The
-following features are added in this version:
-
- • Projective Transforms. The implementation work for general rotation
- support made it trivial to add full projective transformations. These
- can be used to scale the screen up/down as well as perform projector
- keystone correct or other effects.
-
- • Panning. It was removed with RandR 1.2 because the old semantics didn't
- fit any longer. With RandR 1.3 panning can be specified per crtc.
-
-1.4 Introduction to version 1.4 of the extension
-
-Version 1.4 adds a couple more capabilities to further expose the
-underlying hardware to clients
-
- • Per-crtc pixmaps. This provides for multiple scan-out buffers
- which applications can create and assign to arbitrary collections
- of crtcs.
-
- • Sprite position and image transforms. These provide a projective
- transform for both the hot spot location and the sprite image
- itself for each CRTC.
-
- • RRSetCrtcConfigs request. This supplies a set of
- crtc configurations to the server that must be applied together
- or not at all. This can reduce screen flicker while also
- providing the server a complete configuration for appropriate
- resource management.
-
-The first two additions, per-crtc pixmaps and sprite transforms are
-designed to solve two problems:
-
- 1) Screen transforms. The software transform code in the X server
- uses a shadow frame buffer, adding another copy to every graphics
- operation. Worse, the server has no idea about when clients are
- done drawing a frame, so the user gets additional latency and
- judder.
-
- The goal is to move this operation out to the compositing manager
- which already deals with an extra copy of the frame buffer for
- many operations. Have the compositing manager create and draw to a
- separate pixmap for scanout. It can perform whatever transforms
- are required to get the image in the right orientation for the
- user.
-
- 2) Hardware scanout engine size limits. With a single scanout buffer
- for the entire screen, it's possible for the user to ask for a
- configuration which requires that scanout buffer to be larger than
- the hardware is capable of scanning out from. Again, having the
- compositing manager create a pixmap for each CRTC will allow for
- any configuration where monitor position within the virtual space
- isn't limited by the scanout limits.
-
-In both of these cases, the Sprite transforms are necessary to ensure
-that the sprite appears at the desired spot on each CRTC and with the
-right shape.
-
-1.99 Acknowledgements
-
-Our thanks to the contributors to the design found on the xpert mailing
-list, in particular:
-
-Alan Hourihane for work on the early implementation
-Andrew C. Aitchison for help with the XFree86 DDX implementation
-Andy Ritger for early questions about how mergefb/Xinerama work with RandR
-Carl Worth for editing the specification and Usenix paper
-David Dawes for XFree86 DDX integration work
-Thomas Winischhofer for the hardware-accelerated SiS rotation implementation
-Matthew Tippett and Kevin Martin for splitting outputs and CRTCs to more
-fully expose what video hardware can do
-
- ❧❧❧❧❧❧❧❧❧❧❧
-
-2. Screen change model
-
-Screens may change dynamically, either under control of this extension, or
-due to external events. Examples include: monitors being swapped, pressing a
-button to switch from internal display to an external monitor on a laptop,
-or, eventually, the hotplug of a display card entirely on busses such as
-Cardbus or Express Card which permit hot-swap (which will require other work
-in addition to this extension).
-
-Since the screen configuration is dynamic and asynchronous to the client and
-may change at any time RandR provides mechanisms to ensure that your clients
-view is up to date with the configuration possibilities of the moment and
-enforces applications that wish to control the configuration to prove that
-their information is up to date before honoring requests to change the
-screen configuration (by requiring a timestamp on the request).
-
-Interested applications are notified whenever the screen configuration
-changes, providing the current size of the screen and subpixel order (see
-the Render extension [RENDER]), to enable proper rendering of subpixel
-decimated client text to continue, along with a time stamp of the
-configuration change. A client must refresh its knowledge of the screen
-configuration before attempting to change the configuration after a
-notification, or the request will fail.
-
-To avoid multiplicative explosion between orientation, reflection and sizes,
-the sizes are only those sizes in the normal (0) rotation.
-
-Rotation and reflection and how they interact can be confusing. In Randr,
-the coordinate system is rotated in a counter-clockwise direction relative
-to the normal orientation. Reflection is along the window system coordinate
-system, not the physical screen X and Y axis, so that rotation and
-reflection do not interact. The other way to consider reflection is to is
-specified in the "normal" orientation, before rotation, if you find the
-other way confusing.
-
-We expect that most clients and toolkits will be oblivious to changes to the
-screen structure, as they generally use the values in the connections Display
-structure directly. By toolkits updating the values on the fly, we believe
-pop-up menus and other pop up windows will position themselves correctly in
-the face of screen configuration changes (the issue is ensuring that pop-ups
-are visible on the reconfigured screen).
-
- ❧❧❧❧❧❧❧❧❧❧❧
-
-3. Data Types
-
-The subpixel order is shared with the Render extension, and is documented
-there. The only datatype defined is the screen size, defined in the normal
-(0 degree) orientation.
-
- ❧❧❧❧❧❧❧❧❧❧❧
-
-4. Errors
-
-Errors are sent using core X error reports.
-
-Output
- A value for an OUTPUT argument does not name a defined OUTPUT.
-CRTC
- A value for a CRTC argument does not name a defined CRTC.
-Mode
- A value for a MODE argument does not name a defined MODE.
-
- ❧❧❧❧❧❧❧❧❧❧❧
-
-5. Protocol Types
-
-RRCONFIGSTATUS { Success
- InvalidConfigTime
- InvalidTime
- Failed }
-
- A value of type RRCONFIGSTATUS returned when manipulating the output
- configuration or querying information from the server that has some
- time-dependency.
-
- InvalidConfigTime indicates that the supplied configuration
- timestamp does not match the current X server configuration
- timestamp. Usually this means that the output configuration has
- changed since the timestamp was received by the application.
-
- InvalidTime indicates that the supplied output reconfiguration time
- is earlier than the most recent output reconfiguration request.
- Generally this indicates that another application has reconfigured
- the output using a later timestamp.
-
- Failed is returned whenever the operation is unsuccessful for some
- other reason. This generally indicates that the requested output
- configuration is unsupported by the hardware. The goal is to make
- these limitations expressed by the protocol, but when that isn't
- possible it is correct to return this error value. If, as a
- implentor, you find this error code required, please submit the
- hardware constraints that exist so that a future version of the
- extension can correctly capture the configuration constraints in
- your system.
-
-ROTATION { Rotate_0
- Rotate_90
- Rotate_180
- Rotate_270
- Reflect_X
- Reflect_Y }
-
- These values are used both to indicate a set of allowed rotations
- and reflections as well as to indicate a specific rotation and
- reflection combination.
-
-RRSELECTMASK { RRScreenChangeNotifyMask
- RRCrtcChangeNotifyMask (New in version 1.2)
- RROutputChangeNotifyMask (New in version 1.2)
- RROutputPropertyNotifyMask (New in version 1.2) }
-
-SIZEID { CARD16 }
-
-MODE { XID or None }
-
-CRTC { XID }
-
-OUTPUT { XID }
-
-CONNECTION { Connected, Disconnected, UnknownConnection }
-
- This value provides an indication of whether an output is actually
- connected to a monitor or other presentation device.
-
-SUBPIXELORDER { SubPixelUnknown The subpixel order uses the Render
- SubPixelHorizontalRGB extensions definitions; they are here
- SubPixelHorizontalBGR only for convenience.
- SubPixelVerticalRGB
- SubPixelVerticalBGR
- SubPixelNone }
-
-SCREENSIZE { widthInPixels, heightInPixels: CARD16
- widthInMillimeters, heightInMillimeters: CARD16 }
-
-MODEFLAG { HSyncPositive
- HSyncNegative
- VSyncPositive
- VSyncNegative
- Interlace
- DoubleScan
- CSync
- CSyncPositive
- CSyncNegative
- HSkewPresent
- BCast
- PixelMultiplex
- DoubleClock
- ClockDivideBy2 }
-
-MODEINFO { id: MODE
- name: STRING
- width, height: CARD16
- dotClock: CARD32
- hSyncStart, hSyncEnd, hTotal, hSkew: CARD16
- vSyncStart, vSyncEnd, vTotal: CARD16
- modeFlags: SETofMODEFLAG }
-
-REFRESH { rates: LISTofCARD16 }
-
- ❧❧❧❧❧❧❧❧❧❧❧
-
-5.4. Protocol Types added in version 1.4 of the extension
-
-SCANOUTPIXMAPINFO { format: PICTFORMAT
- maxWidth, maxHeight: CARD16
- rotations: SETofROTATION }
-
- 'format' is the format of the pixels within the scanout
- pixmap. Only 'Direct' formats are supported, this will never
- be an 'Indexed' format.
-
- 'maxWidth' and 'maxHeight' define the largest supported
- scanout pixmap. There is no minimum size; scanout pixmaps down
- to 1x1 may be created.
-
- 'rotations' lists the set of rotations which can be provided
- without additional latency or memory usage within the
- environment. This typically means that they are supported
- directly by the hardware. It is expected that a compositing
- manager will perform other transforms as a part of the
- compositing process in conjunction with the sprite transforms
- described in this extension.
-
-SCREENFLAG { SetScreenPixmapSize
- SetScreenSize
- SetScreenSizeInMillimeters
- SetScreenCrtcs }
-
-CRTCFLAG { SetCrtcPosition
- SetCrtcMode
- SetCrtcRotation
- SetCrtcOutputs
- SetCrtcSpritePositionTransform
- SetCrtcSpriteImageTransform
- SetCrtcPixmap
- SetCrtcPixmapPosition }
-
-CRTCCONFIG { crtc: CRTC
- set: SETofCRTCFLAG
- x, y: INT16
- mode: MODE
- rotation: ROTATION
- sprite-position-transform: TRANSFORM
- sprite-image-transform: TRANSFORM
- outputs: LISTofOUTPUT
- pixmap: PIXMAP or None
- pixmap-x, pixmap-y: INT16 }
-
- If 'set' includes SetCrtcSpritePositionTransform, then
- sprite-position-transform is used as in the
- RRSetCrtcSpriteTransform request position-transform parameter.
-
- If 'set' includes SetCrtcSpriteImageTransform, then
- sprite-image-transform is used as in the
- RRSetCrtcSpriteTransform request image-transform parameter.
-
- If 'set' includes SetCrtcPixmap, then 'pixmap' specifies the
- origin of the pixel data to be presented on 'crtc'. If
- 'pixmap' is None, then data will be presented from the screen
- pixmap.
-
- If 'set' includes SetCrtcPixmapPosition, then 'pixmap-x' and
- 'pixmap-y' specify the origin of the scanout data within the
- pixmap, the area from that location to pixmap-x +
- width-of(mode), pixmap-y + height-of(mode) is what will be
- seen on the connected outputs.
-
- If 'set' includes SetCrtcPixmap, then 'pixmap' must specify a
- scanout pixmap as created by RRCreateScanoutPixmap or
- None. Otherwise a Match error results. Furthermore:
-
- * 'pixmap' must be at least as large as the area to be
- scanned out, or a Match error results.
-
- * If 'pixmap' is destroyed while still being used as a
- scanout pixmap, then the associated CRTC will have its
- scanout pixmap set back to None, the CRTC origin set back
- to 0,0 (to make sure it fits) and the screen pixmap width
- and height increased to be at least as big as the current
- CRTC mode.
-
- * Future crtc changes that do not change the scanout pixmap
- will cause an existing scanout pixmap to be resized to be
- large enough to hold the new mode at the then-current
- pixmap-x/pixmap-y location.
-
- If 'set' includes SetCrtcRotation then:
-
- * Any new or existing scanout pixmap must have had the
- specified 'rotation' included as a part of its creation
- parameters, or a Match error results.
-
- * If no scanout pixmap is in use, then the crtc must support
- 'rotation' else a Value error results.
-
- ❧❧❧❧❧❧❧❧❧❧❧
-
-6. Extension Initialization
-
-The name of this extension is "RANDR".
-
-┌───
- RRQueryVersion
- client-major-version: CARD32
- client-minor-version: CARD32
- ▶
- major-version: CARD32
- minor-version: CARD32
-└───
-
- The client sends the highest supported version to the server
- and the server sends the highest version it supports, but no
- higher than the requested version. Major versions changes can
- introduce incompatibilities in existing functionality, minor
- version changes introduce only backward compatible changes.
- It is the clients responsibility to ensure that the server
- supports a version which is compatible with its expectations.
-
- ❧❧❧❧❧❧❧❧❧❧❧
-
-7. Extension Requests
-
-┌───
- RRSelectInput
- window: WINDOW
- enable: SETofRRSELECTMASK
-└───
- Errors: Window, Value
-
- If 'enable' is RRScreenChangeNotifyMask, RRScreenChangeNotify events
- will be sent when the screen configuration changes, either from
- this protocol extension, or due to detected external screen
- configuration changes. RRScreenChangeNotify may also be sent when
- this request executes if the screen configuration has changed since
- the client connected, to avoid race conditions.
-
- New for version 1.2:
-
- If 'enable' contains RRCrtcChangeMask, RRCrtcChangeNotify events
- will be sent when a the configuration for a CRTC associated with the
- screen changes, either through this protocol extension or due to
- detected external changes. RRCrtcChangeNotify may also be sent when
- this request executes if the CRTC configuration has changed since
- the client connected, to avoid race conditions.
-
- If 'enable' contains RROutputChangeMask, RROutputChangeNotify events
- will be sent when a the configuration for an output associated with
- the screen changes, either through this protocol extension or due to
- detected external changes. RROutputChangeNotify may also be sent
- when this request executes if the output configuration has changed
- since the client connected, to avoid race conditions.
-
- If 'enable' contains RROutputPropertyNotifyMask,
- RROutputPropertyNotify events will be sent when properties change on
- this output.
-
-┌───
- RRSetScreenConfig
- window: WINDOW
- timestamp: TIMESTAMP
- config-timestamp: TIMESTAMP
- size-id: SIZEID
- rotation: ROTATION
- rate: CARD16
- ▶
- status: RRCONFIGSTATUS
- new-timestamp: TIMESTAMP
- config-timestamp: TIMESTAMP
- root: WINDOW
- subpixelOrder: SUBPIXELORDER
-└───
- Errors: Value, Match
-
- If 'timestamp' is less than the time when the configuration was last
- successfully set, the request is ignored and InvalidTime returned in
- status.
-
- If 'config-timestamp' is not equal to when the server's screen
- configurations last changed, the request is ignored and
- InvalidConfigTime returned in status. This could occur if the
- screen changed since you last made a RRGetScreenInfo request,
- perhaps by a different piece of display hardware being installed.
- Rather than allowing an incorrect call to be executed based on stale
- data, the server will ignore the request.
-
- 'rate' contains the desired refresh rate. If it is zero, the server
- selects an appropriate rate.
-
- This request may fail for other indeterminate reasons, in which case
- 'status' will be set to Failed and no configuration change will be
- made.
-
- This request sets the screen to the specified size, rate, rotation
- and reflection.
-
- When this request succeeds, 'status' contains Success and the
- requested changes to configuration will have been made.
-
- 'new-time-stamp' contains the time at which this request was
- executed.
-
- 'config-timestamp' contains the time when the possible screen
- configurations were last changed.
-
- 'root' contains the root window for the screen indicated by the
- window.
-
- 'subpixelOrder' contains the resulting subpixel order of the screen
- to allow correct subpixel rendering.
-
- Value errors are generated when 'rotation', 'rate' or 'size-id'
- are invalid.
-
-┌───
- RRGetScreenInfo
- window: WINDOW
- ▶
- rotations: SETofROTATION
- root: WINDOW
- timestamp: TIMESTAMP
- config-timestamp: TIMESTAMP
- size-id: SIZEID
- rotation: ROTATION
- rate: CARD16
- sizes: LISTofSCREENSIZE
- refresh: LISTofREFRESH
-└───
-
- Errors: Window
-
- RRGetScreenInfo returns information about the current and available
- configurations for the screen associated with 'window'.
-
- 'rotations' contains the set of rotations and reflections supported
- by the screen.
-
- 'root' is the root window of the screen.
-
- 'config-timestamp' indicates when the screen configuration
- information last changed: requests to set the screen will fail
- unless the timestamp indicates that the information the client
- is using is up to date, to ensure clients can be well behaved
- in the face of race conditions.
-
- 'timestamp' indicates when the configuration was last set.
-
- 'size-id' indicates which size is active.
-
- 'rate' is the current refresh rate. This is zero when the refresh
- rate is unknown or on devices for which refresh is not relevant.
-
- 'sizes' is the list of possible frame buffer sizes (at the normal
- orientation. Each size indicates both the linear physical size of
- the screen and the pixel size.
-
- 'refresh' is the list of refresh rates for each size. Each element
- of 'sizes' has a corresponding element in 'refresh'. An empty list
- indicates no known rates, or a device for which refresh is not
- relevant.
-
- The default size of the screen (the size that would become the
- current size when the server resets) is the first size in the
- list.
-
-7.1. Extension Requests added in version 1.2 of the extension
-
-As introduced above, version 1.2 of the extension splits the screen size
-from the crtc and output configuration, permitting the subset of the screen
-presented by multiple outputs to be configured. As a separate notion, the
-size of the screen itself may be arbitrarily configured within a defined
-range. As crtcs and outputs are added and removed from the system, the set
-returned by the extension will change so that applications can detect
-dynamic changes in the display environment.
-
-┌───
- RRGetScreenSizeRange
- window: WINDOW
- ▶
- CARD16 minWidth, minHeight
- CARD16 maxWidth, maxHeight
-└───
- Errors: Window
-
- Returns the range of possible screen sizes. The screen may be set to
- any size within this range.
-
-┌───
- RRSetScreenSize
- window: WINDOW
- width: CARD16
- height: CARD16
- width-in-millimeters: CARD32
- height-in-millimeters: CARD32
-└───
- Errors: Window, Match, Value
-
- Sets the screen to the specified size. 'width' and 'height' must be
- within the range allowed by GetScreenSizeRanges, otherwise a Value
- error results. All active monitors must be configured to display a
- subset of the specified size, else a Match error results.
-
- 'width-in-millimeters' and 'height-in-millimeters' can be set to
- reflect the physical size of the screen reported both through this
- extension and the core protocol. They must be non-zero, or Value
- error results.
-
- If panning is enabled, the width and height of the panning and the
- tracking areas are adapted to the new size and clamped afterwards.
- Disabled panning axes remain disabled.
- Panning borders are disabled if their requirements are no longer met
- (see RRSetPanning).
-
-┌───
- RRGetScreenResources
- window: WINDOW
- ▶
- timestamp: TIMESTAMP
- config-timestamp: TIMESTAMP
- crtcs: LISTofCRTC
- outputs: LISTofOUTPUT
- modes: LISTofMODEINFO
-└───
- Errors: Window
-
- RRGetScreenResources returns the list of outputs and crtcs connected
- to the screen associated with 'window'.
-
- 'timestamp' indicates when the configuration was last set.
-
- 'config-timestamp' indicates when the configuration information last
- changed. Requests to configure the output will fail unless the
- timestamp indicates that the information the client is using is up
- to date, to ensure clients can be well behaved in the face of race
- conditions.
-
- 'crtcs' contains the list of CRTCs associated with the screen.
-
- 'outputs' contains the list of outputs associated with the screen.
-
- 'modes' contains the list of modes associated with the screen
-
- This request explicitly asks the server to ensure that the
- configuration data is up-to-date wrt the hardware. If that requires
- polling, this is when such polling would take place. If the
- current configuration is all that's required, use
- RRGetScreenResourcesCurrent instead.
-
-┌───
- RRGetOutputInfo
- output: OUTPUT
- config-timestamp: TIMESTAMP
- ▶
- status: RRCONFIGSTATUS
- timestamp: TIMESTAMP
- crtc: CRTC
-
- name: STRING
- connection: CONNECTION
- subpixel-order: SUBPIXELORDER
- widthInMillimeters, heightInMillimeters: CARD32
- crtcs: LISTofCRTC
- clones: LISTofOUTPUT
- modes: LISTofMODE
- num-preferred: CARD16
-└───
- Errors: Output
-
- RRGetOutputInfo returns information about the current and available
- configurations 'output'.
-
- If 'config-timestamp' does not match the current configuration
- timestamp (as returned by RRGetScreenResources), 'status' is set to
- InvalidConfigTime and the remaining reply data is empty. Otherwise,
- 'status' is set to Success.
-
- 'timestamp' indicates when the configuration was last set.
-
- 'crtc' is the current source CRTC for video data, or Disabled if the
- output is not connected to any CRTC.
-
- 'name' is a UTF-8 encoded string designed to be presented to the
- user to indicate which output this is. E.g. "S-Video" or "DVI".
-
- 'connection' indicates whether the hardware was able to detect a
- device connected to this output. If the hardware cannot determine
- whether something is connected, it will set this to
- UnknownConnection.
-
- 'subpixel-order' contains the resulting subpixel order of the
- connected device to allow correct subpixel rendering.
-
- 'widthInMillimeters' and 'heightInMillimeters' report the physical
- size of the displayed area. If unknown, or not really fixed (e.g.,
- for a projector), these values are both zero.
-
- 'crtcs' is the list of CRTCs that this output may be connected to.
- Attempting to connect this output to a different CRTC results in a
- Match error.
-
- 'clones' is the list of outputs which may be simultaneously
- connected to the same CRTC along with this output. Attempting to
- connect this output with an output not in the 'clones' list
- results in a Match error.
-
- 'modes' is the list of modes supported by this output. Attempting to
- connect this output to a CRTC not using one of these modes results
- in a Match error.
-
- The first 'num-preferred' modes in 'modes' are preferred by the
- monitor in some way; for fixed-pixel devices, this would generally
- indicate which modes match the resolution of the output device.
-
-┌───
- RRListOutputProperties
- output:OUTPUT
- ▶
- atoms: LISTof ATOM
-└───
- Errors: Output
-
- This request returns the atoms of properties currently defined on
- the output.
-
-┌───
- RRQueryOutputProperty
- output: OUTPUT
- property: ATOM
- ▶
- pending: BOOL
- range: BOOL
- immutable: BOOL
- valid-values: LISTofINT32
-└───
- Errors: Name, Atom, Output
-
- If the specified property does not exist for the specified output,
- then a Name error is returned.
-
- If 'pending' is TRUE, changes made to property values with
- RRChangeOutputProperty will be saved in the pending property value
- and be automatically copied to the current value on the next
- RRSetCrtcConfig request involving the named output. If 'pending' is
- FALSE, changes are copied immediately.
-
- If 'range' is TRUE, then the valid-values list will contain
- precisely two values indicating the minimum and maximum allowed
- values. If 'range' is FALSE, then the valid-values list will contain
- the list of possible values; attempts to set other values will
- result in a Value error.
-
- If 'immutable' is TRUE, then the property configuration cannot be
- changed by clients. Immutable properties are interpreted by the X
- server.
-
-┌───
- RRConfigureOutputProperty
- output: OUTPUT
- property: ATOM
- pending: BOOL
- range: BOOL
- valid-values: LISTofINT32
-└───
- Errors: Access, Name, Atom, Output
-
- If the specified property is 'immutable', an Access error is
- returned.
-
- Otherwise, the configuration of the specified property is changed to
- the values provided in this request.
-
- If the specified property does not exist for the specified output,
- it is created with an empty value and None type.
-
-┌───
- RRChangeOutputProperty
- output: OUTPUT
- property, type: ATOM
- format: {8, 16, 32}
- mode: { Replace, Prepend, Append }
- data: LISTofINT8 or LISTofINT16 or LISTofINT32
-└───
- Errors: Alloc, Atom, Match, Value, Output
-
- This request alters the value of the property for the specified
- output. If the property is marked as a 'pending' property, only the
- pending value of the property is changed. Otherwise, changes are
- reflected in both the pending and current values of the property.
- The type is uninterpreted by the server. The format specifies
- whether the data should be viewed as a list of 8-bit, 16-bit, or
- 32-bit quantities so that the server can correctly byte-swap as
- necessary.
-
- If the mode is Replace, the previous property value is discarded.
- If the mode is Prepend or Append, then the type and format must
- match the existing property value (or a Match error results). If
- the property is undefined, it is treated as defined with the correct
- type and format with zero-length data.
-
- For Prepend, the data is tacked on to the beginning of the existing
- data, and for Append, it is tacked on to the end of the existing data.
-
- This request generates a OutputPropertyNotify
-
- The lifetime of a property is not tied to the storing client.
- Properties remain until explicitly deleted, until the output is
- destroyed, or until server reset (see section 10).
-
- The maximum size of a property is server-dependent and may vary
- dynamically.
-
-┌───
- RRDeleteOutputProperty
- output: OUTPUT
- property: ATOM
-└───
- Errors: Atom, Output
-
- This request deletes the property from the specified window if the
- property exists and generates a OutputPropertyNotify event unless
- the property does not exist.
-
-┌───
- RRGetOutputProperty
- output: OUTPUT
- property: ATOM
- type: ATOM or AnyPropertyType
- long-offset, long-length: CARD32
- delete: BOOL
- pending: BOOL
- ▶
- type: ATOM or None
- format: {0, 8, 16, 32}
- bytes-after: CARD32
- value: LISTofINT8 or LISTofINT16 or LISTofINT32
-└───
- Errors: Atom, Value, Output
-
- If the specified property does not exist for the specified output,
- then the return type is None, the format and bytes-after are zero,
- and the value is empty. The delete argument is ignored in this
- case.
-
- If the specified property exists but its type does not match the
- specified type, then the return type is the actual type of the
- property, the format is the actual format of the property (never
- zero), the bytes-after is the length of the property in bytes (even
- if the format is 16 or 32), and the value is empty. The delete
- argument is ignored in this case.
-
- If the specified property exists and either AnyPropertyType is
- specified or the specified type matches the actual type of the
- property, then the return type is the actual type of the property,
- the format is the actual format of the property (never zero), and
- the bytes-after and value are as follows, given:
-
- N = actual length of the stored property in bytes
- (even if the format is 16 or 32)
- I = 4 × offset
- T = N - I
- L = MINIMUM(T, 4 × long-length)
- A = N - (I + L)
-
- If 'pending' is true, and if the property holds a pending value,
- then the value returned will be the pending value of the property
- rather than the current value. The returned value starts at byte
- index I in the property (indexing from 0), and its length in bytes
- is L. However, it is a Value error if long-offset is given such
- that L is negative. The value of bytes-after is A, giving the
- number of trailing unread bytes in the stored property. If delete
- is True and the bytes-after is zero, the property is also deleted
- from the output, and a RROutputPropertyNotify event is generated.
-
-┌───
- RRCreateMode
- window: WINDOW
- modeinfo: MODEINFO
- ▶
- mode: MODE
-└───
- Errors: Window, Name, Value
-
- 'modeinfo' provides a new mode for outputs on the screen
- associated with 'window'. If the name of 'modeinfo' names an
- existing mode, a Name error is returned. If some parameter of the
- mode is not valid in some other way, a Value error is returned.
-
- The returned 'mode' provides the id for the mode.
-
-┌───
- RRDestroyMode
- mode: MODE
-└───
- Errors: Mode, Access
-
- The user-defined 'mode' is destroyed. 'mode' must name a mode
- defined with RRCreateMode, else an Match error is returned. If
- 'mode' is in use by some CRTC or Output, then an Access error is
- returned.
-
-┌───
- RRAddOutputMode
- output: OUTPUT
- mode: MODE
-└───
- Errors: Output, Mode, Match
-
- 'output' indicates which output is to be configured.
-
- 'mode' specifies which mode to add. If 'mode' is not valid for
- 'output', then a Match error is generated.
-
- This request generates OutputChangeNotify events.
-
-┌───
- RRDeleteOutputMode
- output: OUTPUT
- mode: MODE
-└───
- Errors: Output, Mode
-
- 'output' indicates which output is to be configured.
-
- 'mode' specifies which mode to delete. 'mode' must have been added
- with RRAddOutputMode, else an Access error is returned. 'mode' must
- not be active, else a Match error is returned.
-
- This request generates OutputChangeNotify events.
-
-┌───
- RRGetCrtcInfo
- crtc: CRTC
- config-timestamp: TIMESTAMP
- ▶
- status: RRCONFIGSTATUS
- timestamp: TIMESTAMP
- x, y: INT16
- width, height: CARD16
- mode: MODE
- rotation: ROTATION
- outputs: LISTofOUTPUT
-
- rotations: SETofROTATION
- possible-outputs: LISTofOUTPUT
-└───
-
- Errors: Window
-
- RRGetCrtcModes returns information about the current and available
- configurations for the specified crtc connected to the screen
- associated with 'window'.
-
- If 'config-timestamp' does not match the current configuration
- timestamp (as returned by RRGetScreenResources), 'status' is set to
- InvalidConfigTime and the remaining reply data is empty. Otherwise,
- 'status' is set to Success.
-
- 'timestamp' indicates when the configuration was last set.
-
- 'x' and 'y' indicate the position of this CRTC within the screen
- region. They will be set to 0 when the CRTC is disabled.
-
- 'width' and 'height' indicate the size of the area within the screen
- presented by this CRTC. This may be different than the size of the
- mode due to rotation. They will be set to 0 when the CRTC
- is disabled.
-
- 'mode' indicates which mode is active, or None indicating that the
- CRTC has been disabled and is not displaying the screen contents.
-
- 'rotation' indicates the active rotation. It is set to Rotate_0
- when the CRTC is disabled.
-
- 'outputs' is the list of outputs currently connected to this CRTC
- and is empty when the CRTC is disabled.
-
- 'rotations' contains the set of rotations and reflections supported
- by the CRTC.
-
- 'possible-outputs' lists all of the outputs which may be connected
- to this CRTC.
-
-┌───
- RRSetCrtcConfig
- crtc: CRTC
- timestamp: TIMESTAMP
- config-timestamp: TIMESTAMP
- x, y: INT16
- mode: MODE
- rotation: ROTATION
- outputs: LISTofOUTPUT
- ▶
- status: RRCONFIGSTATUS
- new-timestamp: TIMESTAMP
-└───
- Errors: Value, Match
-
- If 'timestamp' is less than the time when the configuration was last
- successfully set, the request is ignored and InvalidTime returned in
- status.
-
- If 'config-timestamp' is not equal to when the monitor's
- configuration last changed, the request is ignored and
- InvalidConfigTime returned in status. This could occur if the
- monitor changed since you last made a RRGetScreenInfo request,
- perhaps by a different monitor being connected to the machine.
- Rather than allowing an incorrect call to be executed based on stale
- data, the server will ignore the request.
-
- 'x' and 'y' contain the desired location within the screen for this
- monitor's content. 'x' and 'y' must be within the screen size, else
- a Value error results.
-
- 'mode' is either the desired mode or None indicating the CRTC should
- be disabled. If 'mode' is not one of these values, a Value
- error results. 'mode' must be valid for all of the configured outputs,
- else a Match error.
-
- 'rotation' contains the desired rotation along with which
- reflections should be enabled. The rotation and reflection values
- must be among those allowed for this monitor, else a Value error
- results.
-
- 'outputs' contains the set of outputs that this CRTC should be
- connected to. The set must be among the list of acceptable output
- sets for this CRTC or a Match error results.
-
- If 'mode' is None, then 'outputs' must be empty, else a Match error
- results. Conversely, if 'mode' is not None, then 'outputs' must not be
- empty, else a Match error results.
-
- This request may fail for other indeterminate reasons, in which case
- 'status' will be set to Failed and no configuration change will be
- made.
-
- This request sets the CRTC to the specified position, mode, rotation
- and reflection. The entire area of the CRTC must fit within the
- screen size, else a Match error results. As an example, rotating the
- screen so that a single CRTC fills the entire screen before and
- after may necessitate disabling the CRTC, resizing the screen,
- then re-enabling the CRTC at the new configuration to avoid an
- invalid intermediate configuration.
-
- If panning is enabled, the width and height of the panning and the
- tracking areas are clamped to the new mode size.
- Disabled panning axes remain disabled.
- Panning borders are disabled if their requirements are no longer met
- (see RRSetPanning).
-
- When this request succeeds, 'status' contains Success and the
- requested changes to configuration will have been made.
-
- 'new-time-stamp' contains the time at which this request was
- executed.
-
-┌───
- RRGetCrtcGammaSize
- crtc: CRTC
- ▶
- size: CARD16
-└───
- Errors: Crtc
-
- This request returns the size of the gamma ramps used by 'crtc'.
-
-┌───
- RRGetCrtcGamma
- crtc: CRTC
- ▶
- red: LISTofCARD16
- green: LISTofCARD16
- blue: LISTofCARD16
-└───
- Errors: Crtc
-
- This request returns the currently set gamma ramps for 'crtc'. All
- three lists will be the size returned by the RRGetCrtcGammaSize
- request.
-
-┌───
- RRSetCrtcGamma
- crtc: CRTC
- red: LISTofCARD16
- green: LISTofCARD16
- blue: LISTofCARD16
-└───
- Errors: Crtc, Match
-
- This request sets the gamma ramps for 'crtc'. All three lists
- must be the size returned by RRGetCrtcGammaSize else a Value error
- results.
-
-7.2. Extension Requests added in version 1.3 of the extension
-
-┌───
- RRGetScreenResourcesCurrent
- window: WINDOW
- ▶
- timestamp: TIMESTAMP
- config-timestamp: TIMESTAMP
- crtcs: LISTofCRTC
- outputs: LISTofOUTPUT
- modes: LISTofMODEINFO
-└───
- Errors: Window
-
- RRGetScreenResourcesCurrent returns the list of outputs and crtcs
- connected to the screen associated with 'window'.
-
- 'timestamp' indicates when the configuration was last set.
-
- 'config-timestamp' indicates when the configuration information last
- changed. Requests to configure the output will fail unless the
- timestamp indicates that the information the client is using is up
- to date, to ensure clients can be well behaved in the face of race
- conditions.
-
- 'crtcs' contains the list of CRTCs associated with the screen.
-
- 'outputs' contains the list of outputs associated with the screen.
-
- 'modes' contains the list of modes associated with the screen.
-
- Unlike RRGetScreenResources, this merely returns the current
- configuration, and does not poll for hardware changes.
-
-┌───
- RRSetCrtcTransform
- crtc: CRTC
- transform: TRANSFORM
- filter: STRING8
- values: LISTofFIXED
-└───
- Errors: Crtc, Match
-
- This request provides a mechanism that is more general than the
- existing rotation and reflection values for describing the
- transformation from frame buffer image to crtc presentation.
- 'transform' is a full 2D projective transformation from screen
- coordinate space to crtc coordinate space. This transformation is
- applied before the rotation and reflection values to compute the
- complete transform.
-
- 'filter' and 'values' specify a Render filter that may be used by the
- server when transforming data from frame buffer to crtc.
-
- This request sets the transform to be used at the next
- RRSetCrtcConfig request execution; it does not cause any change to
- occur in the current configuration.
-
- When a non-identity transformation is in use, the rectangle returned
- by RRGetCrtcInfo defines the bounding rectangle of the screen that is
- projected to the crtc. It is this projected rectangle which must be
- within the area of the screen when the mode is set.
-
-┌───
- RRGetCrtcTransform
- crtc: CRTC
- ▶
- pending-transform: TRANSFORM
- pending-filter: STRING8
- pending-values: LISTofFIXED
- current-transform: TRANSFORM
- current-filter: STRING8
- current-values: LISTofFIXED
-└───
-
- This request returns the pending and current transforms for the
- specified CRTC. The pending transform will be the same as the current
- transform if no new pending transform has been set since the last call
- to RRSetCrtcConfig.
-
-┌───
- RRGetPanning
- crtc: CRTC
- ▶
- status: RRCONFIGSTATUS
- timestamp: TIMESTAMP
- left, top, width, height: CARD16
- track_left, track_top, track_width, track_height: CARD16
- border_left, border_top, border_right, border_bottom: INT16
-└───
-
- Errors: Crtc
-
- Version 1.3 adds panning support again. If multiple crtcs are active
- the panning behavior can be defined per crtc individually.
- RRGetPanning returns information about the currently set panning
- configuration for the specified crtc. If the CRTC does not support
- panning, all fields (except timestamp) will be 0.
-
- 'timestamp' indicates when the configuration was last set.
-
- All other entries are explained for RRSetPanning.
-
-┌───
- RRSetPanning
- crtc: CRTC
- timestamp: TIMESTAMP
- left, top, width, height: CARD16
- track_left, track_top, track_width, track_height: CARD16
- border_left, border_top, border_right, border_bottom: INT16
- ▶
- status: RRCONFIGSTATUS
- new-timestamp: TIMESTAMP
-└───
- Errors: Crtc, Match
-
- This request sets the panning parameters. As soon as panning is
- enabled, the CRTC position can change with every pointer move.
- RRCrtcChangeNotify events are sent to the clients requesting those.
-
- If 'timestamp' is less than the time when the configuration was last
- successfully set, the request is ignored and InvalidTime returned in
- status.
-
- ┌──┳━━━━━━━━━━━━━━┳─────┬ ─ ─ ─ ─ ─ ┐
- │ ┃ CRTC ┃ │
- │ ┃ ┃ │ │
- │ ┃ X┃→ │
- │ ┃ ┃ │ │ framebuffer
- │ ┗━━━━━━━━━━━━━━┛ │
- │ │ │
- │panning area │
- └───────────────────────┴ ─ ─ ─ ─ ─ ┘
-
- 'left', 'top', 'width', and 'height' contain the total panning area
- for this CRTC. 'width' has to be larger than or equal to the CRTC's
- width or 0, and 'left'+'width' must be within the screen size, else a
- Match error results. Equivalent restrictions for the height exist.
- 'width' or 'height' set to 0 indicate that panning should be disabled
- on the according axis. Setting 'width'/'height' to the CRTC's
- width/height will disable panning on the X/Y axis as well, but
- RRSetScreenSize will silently enable panning if the screen size is
- increased. This does not happen if set to 0.
-
- ┌────────┳━━━━━━━━━━━━━━┳ ─ ─ ─ ─ ─ ┐
- │ ┃ CRTC ┃
- │ ┃ ┃ │
- │ ┃ ┃
- │ ┃ ┃ │ tracking area
- │ ┗━━━━━━━━━━━━━━┫ X
- │ ↓ │ ↓ │
- │panning area │
- └───────────────────────┴ ─ ─ ─ ─ ─ ┘
-
- 'track_left', 'track_top', 'track_width', and 'track_height' contain
- the pointer area for which the panning region is updated. For normal
- use cases it should enclose the panning area minus borders, and is
- typically set to either the panning area minus borders, or to the
- total screen size. If set to the total screen size, the CRTC will pan
- in the remaining axis even if the pointer is outside the panning area
- on a different CRTC, as shown in the figure above. If the pointer is
- outside the tracking area, the CRTC will not pan. Zero can be used as
- an alias for the total screen size.
-
- ┌──┳━━━━━━━━━━━━━━┳────────────┐
- │ ┃ CRTC ┃ │
- │ ┃ ┃ │
- │ ┃ ┃→ │
- │ ┃ X←→┃ │
- │ ┃ border_right │
- │ ┗━━━━━━━━━━━━━━┛ │
- │ │
- │panning area │
- └──────────────────────────────┘
-
- 'border_left', 'border_top', 'border_right', and 'border_bottom'
- define the distances from the CRTC borders that will activate panning
- if the pointer hits them. If the borders are 0, the screen will pan
- when the pointer hits the CRTC borders (behavior of pre-RandR Xserver
- panning). If the borders are positive, the screen will pan when the
- pointer gets close to the CRTC borders, if they are negative, the
- screen will only pan when the pointer is already way past the CRTC
- borders. Negative values might confuse users and disable panning to
- the very edges of the screen. Thus they are discouraged.
- border_left + border_right has to be lower or equal than the CRTC's
- width, else a Match error results. An equivalent restriction for the
- height exists.
-
- Screen size changes update the panning and the tracking areas to the
- new size. Both screen size changes and mode changes clamp these areas
- to the current CRTC size. In these cases panning borders are disabled
- if their requirements are no longer met.
-
- When this request succeeds, 'status' contains Success and the
- requested changes to configuration will have been made.
-
- 'new-time-stamp' contains the time at which this request was
- executed.
-
-┌───
- RRSetOutputPrimary
- window: WINDOW
- output: OUTPUT
-└───
- Errors: Match, Output, Window
-
- RRSetOutputPrimary marks 'output' as the primary output for the
- screen with the same root window as 'window'. This output's CRTC
- will be sorted to the front of the list in Xinerama and RANDR
- geometry requests for the benefit of older applications. The
- default primary output is None, and None is a legal value to pass
- to RRSetOutputPrimary. This request is expected to be used by
- desktop environments to mark the screen that should hold the primary
- menu bar or panel.
-
- As this changes the logical layout of the screen, ConfigureNotify
- and RRScreenChangeNotify will be generated on the appropriate root
- window when the primary output is changed by this call. This request
- also generates RROutputChangeNotify events on the outputs that gained
- and lost primary status.
-
- If an output is disconnected asynchronously (eg. due to recabling),
- the primary status does not change, but RROutputChangeNotify events
- will be generated if the hardware is capable of detecting this;
- clients are expected to reconfigure if appropriate.
-
- If an output is deleted (eg. due to device hotplug), the server will
- act as though None was passed to RRSetOutputPrimary, including
- generating the appropriate events.
-
-┌───
- RRGetOutputPrimary
- window: WINDOW
- ▶
- output: OUTPUT
-└───
- Errors: Window
-
- RRGetOutputPrimary returns the primary output for the screen.
-
- ❧❧❧❧❧❧❧❧❧❧❧
-
-7.3. Extension Requests added in version 1.4 of the extension.
-
-┌───
- RRQueryScanoutPixmaps
- window: WINDOW
- ▶
- infos: LISTofSCANOUTPIXMAPINFO
-└───
- Errors: Window
-
- This request returns information about the server support for
- alternate scanout pixmaps. For each pictformat, there is a set
- of rotations and a maximum supported size. The rotations here
- are those provided by the scanout hardware itself, not by
- software emulation.
-
-┌───
- RRCreateScanoutPixmap
- pixmap: PIXMAP
- drawable: DRAWABLE
- width, height: CARD16
- format: PICTFORMAT
- rotations: SETofROTATION
-└───
- Errors: Drawable, Match, Value
-
- Creates a pixmap which can subsequently be used as a scanout
- buffer for the screen associated with 'drawable'. 'rotations'
- is the set of rotation values which may be used with the
- resulting scanout buffer when it is associated with a CRTC.
-
- 'format' must be one of the supported scanout formats, or a
- Match error results.
-
- 'width' and 'height' must be within the supported range for
- the specified format or a Value error results.
-
- 'rotations' must be a subset of those supported for the
- specified format or a Match error results.
-
-┌───
- RRSetCrtcSpriteTransform
- crtc: CRTC
- position-transform: TRANSFORM
- image-transform: TRANSFORM
-└───
- Sets the sprite transforms for the specified crtc, any sprites
- presented on this crtc will have their positions transformed
- by the position-transform matrix. Sprite images displayed on the crtc
- will be transformed by the image-transform matrix.
-
-┌───
- RRGetCrtcSpriteTransform
- crtc: CRTC
- ▶
- position-transform: TRANSFORM
- image-transform: TRANSFORM
-└───
- Gets the sprite transforms for the specified crtc.
-
-┌───
- RRSetCrtcConfigs
- drawable: DRAWABLE
- set: SETofSCREENFLAG
- screen-pixmap-width: CARD16
- screen-pixmap-height: CARD16
- screen-width: CARD16
- screen-height: CARD16
- width-in-millimeters: CARD32
- height-in-millimeters: CARD32
- configs: LISTofCRTCCONFIG
- ▶
- status: RRCONFIGSTATUS
-└───
- Errors: Value, Match
-
- This works much like RRSetScreenSize followed by a sequence of
- RRSetCrtcConfig, except that the entire configuration can be set
- in a single operation, either succeeding or failing without
- any partial execution.
-
- If 'set' includes 'SetScreenPixmapSize', then
- 'screen-pixmap-width' and 'screen-pixmap-height' specify the
- new screen pixmap size.
-
- If 'set' includes 'SetScreenSize', then 'screen-width' and
- 'screen-height' specify the new screen size.
-
- If 'set' includes 'SetScreenSizeInMillimeters', then
- 'width-in-millimeters' and 'height-in-millimeters' specify
- the new screen physical size.
-
- If 'set' includes 'SetScreenCrtcs', then 'configs' includes
- the list of new CRTC configurations.
-
- In addition to the pre-1.4 semantics, this request adds the
- ability to specific a scanout pixmap for each crtc, and
- integrates the 1.4 sprite transform request as well.
-
- ❧❧❧❧❧❧❧❧❧❧❧
-
-8. Extension Events
-
-Clients MAY select for ConfigureNotify on the root window to be
-informed of screen changes. This may be advantageous if all your
-client needs to know is the size of the root window, as it avoids
-round trips to set up the extension.
-
-RRScreenChangeNotify is sent if RRSelectInput has requested it
-whenever properties of the screen change, which may be due to external
-factors, such as re-cabling a monitor, etc.
-
-┌───
- RRScreenChangeNotify
-
- rotation: ROTATION; new rotation
- sequenceNumber: CARD16 low 16 bits of request seq. number
- timestamp: TIMESTAMP time screen was changed
- configTimestamp: TIMESTAMP time config data was changed
- root: WINDOW root window of screen
- window: WINDOW window requesting notification
- size-id: SIZEID index of new SCREENSIZE
- subpixelOrder: SUBPIXELORDER order of subpixels
- widthInPixels: CARD16 width in pixels of the new SCREENSIZE
- heightInPixels: CARD16 height in pixels of the new SCREENSIZE
- widthInMillimeters: CARD16 width in mm of the new SCREENSIZE
- heightInMillimeters: CARD16 height in mm of the new SCREENSIZE
-└───
- This event is generated whenever the screen configuration is changed
- and sent to requesting clients. 'timestamp' indicates when the
- screen configuration was changed. 'configTimestamp' says when the
- last time the configuration was changed. 'root' is the root of the
- screen the change occurred on, 'window' is window selecting for this
- event. 'size-id' contains the index of the current size.
-
- This event is sent whenever the screen's configuration changes
- or if a new screen configuration becomes available that was
- not available in the past. In this case (config-timestamp in
- the event not being equal to the config-timestamp returned in
- the last call to RRGetScreenInfo), the client MUST call
- RRGetScreenInfo to update its view of possible screen
- configurations to have a correct view of possible screen
- organizations.
-
- Clients which select screen change notification events may be
- sent an event immediately if the screen configuration was
- changed between when they connected to the X server and
- selected for notification. This is to prevent a common race
- that might occur on log-in, where many applications start up
- just at the time when a display manager or log in script might
- be changing the screen size or configuration.
-
- Note that the sizes in this event reflect the new SCREENSIZE and
- thus will appear rotated by the 'rotation' parameter from the sizes
- of the screen itself. In other words, when rotation is 90 or 270,
- widthInPixels in this event will be the same as the height value
- from a ConfigureNotify that reflects the same size change. This
- will probably confuse developers.
-
-8.1 Events added in version 1.2 of the RandR extension
-
-┌───
- RROutputChangeNotify:
- timestamp: TIMESTAMP time screen was reconfigured
- config-timestamp: TIMESTAMP time available config data was changed
- window: WINDOW window requesting notification
- output: OUTPUT output affected by change
- crtc: CRTC connected CRTC or None
- mode: MODE mode in use on CRTC or None
- connection: CONNECTION connection status
-└───
-
- This event is generated whenever the available output configurations
- have changed and is sent to requesting clients. 'timestamp'
- indicates when the crtc configuration was changed by a client.
- 'config-timestamp' says when the last time the available
- configurations changed. 'root' is the root of the screen the change
- occurred on, 'window' is window selecting for this event. The
- precise change can be detected by examining the new state of the
- system.
-
-┌───
- RROutputPropertyNotify:
- window: WINDOW window requesting notification
- output: OUTPUT output affected by change
- atom: ATOM affected property
- time: TIMESTAMP time property was changed
- subpixel-order: SUBPIXELORDER order of subpixels
- state: { NewValue, Deleted } new property state
-└───
-
- This event is reported to clients selecting RROutputPropertyChange
- on the window and is generated with state NewValue when a property
- of the window is changed using RRChangeOutputProperty even when
- adding zero-length data and when replacing all or part of a property
- with identical data. It is generated with state Deleted when a
- property of the window is deleted using either
- RRDeleteOutputProperty or RRGetOutputProperty. The timestamp
- indicates the server time when the property was changed.
-
-┌───
- RRCrtcChangeNotify
- timestamp: TIMESTAMP time monitor was changed
- window: WINDOW window requesting notification
- crtc: CRTC CRTC which changed
- mode: MODE new mode
- rotation: ROTATION; new rotation
- x: INT16 x position of CRTC within screen
- y: INT16 y position of CRTC within screen
- width: CARD16 width of new mode
- height: CARD16 height of new mode
-└───
- This event is generated whenever the CRTC configuration is changed
- and sent to requesting clients. 'timestamp' indicates when the
- CRTC configuration was changed. 'window' is window selecting for this
- event. 'mode' is the new mode, or None if the crtc is disabled.
- 'x' and 'y' mark the location in the screen where this CRTC
- is reading data. 'width' and 'height' indicate the size of the
- mode. 'x', 'y, 'width' and 'height' are all zero when 'mode' is None.
-
- This event is sent whenever the monitor's configuration changes
- or if a new monitor configuration becomes available that was
- not available in the past. In this case, the client MUST call
- RRGetCrtcModes to update its view of possible monitor
- configurations to have a correct view of possible monitor
- organizations.
-
- Clients which select monitor change notification events may be
- sent an event immediately if the monitor configuration was
- changed between when they connected to the X server and
- selected for notification. This is to prevent a common race
- that might occur on log-in, where many applications start up
- just at the time when a display manager or log in script might
- be changing the monitor size or configuration.
-
- ❧❧❧❧❧❧❧❧❧❧❧
-
-9. Properties
-
-Properties are used for output specific parameters, and for announcing
-static or rarely changing data. Announced data is typically
-immutable. Properties are also used for evaluating new parameters
-before adding them to the RandR protocol.
-
-The following properties are hereby declared official, and drivers SHOULD
-prefix driver specific properties with '_', unless they are planned to be
-added to this specification. List values, that are not declared by the table
-below, and will remain driver specific or are not planned to be added to this
-specification, SHOULD be prefixed with "_" as well in order to avoid name
-space or semantics clashes with future extensions of these values.
-
-Beginning with version 1.3 of the RandR extension, certain properties
-are mandatory and MUST be provided by implementations. Earlier
-versions of the RandR extension MAY provide these properties as well,
-as long as the semantics are not altered. Clients SHOULD fall back
-gracefully to lower version functionality, though, if the driver
-doesn't handle a mandatory property correctly.
-
-9.1 Known properties
-
- "Backlight" aka RR_PROPERTY_BACKLIGHT
- Type: int32
- Flags: -
- Range/List: 0-x (driver specific)
-
- This property controls the brightness on laptop panels and equivalent
- displays with a backlight controller. The driver specific maximum
- value MUST turn the backlight to full brightness, 1 SHOULD turn the
- backlight to minimum brightness, 0 SHOULD turn the backlight off.
-
- "CloneList" aka RR_PROPERTY_CLONE_LIST
- Type: int32 [2*n] / Atom pairs
- Flags: Immutable
- Range/List: 0-
-
- Some combinations of outputs on some cards cannot be served
- independently from each other, because they are wired up to the same
- encoder outputs.
- This property lists all output + signal format pairs that are
- driven together with this output, and thus can only be programmed in
- clone mode with the same CRTC.
- This property MUST be symmetric, but may change with changing signal
- format. I.e. if the property for DVI-1/VGA specifies VGA-1/VGA to be
- cloned, VGA-1/VGA has to list DVI-1/VGA as well.
- Outputs / format pairs listed in this property MUST be included in the
- CompatibilityList.
-
- "CompatibilityList" aka RR_PROPERTY_COMPATIBILITY_LIST
- Type: int32 [2*n] / Atom pairs
- Flags: Immutable
- Range/List: 0-
-
- Some combinations of outputs on some cards cannot be served at all,
- because the according encoder is only capable of driving one output at
- a time.
- This property lists all output + signal format pairs that can be
- driven together with this output. NULL atoms specify any output / any
- signal format, respectively.
- This property MUST be symmetric, but may change with changing signal
- format. I.e. if the property for DVI-1/TMDS specifies VGA-1/VGA to be
- available, VGA-1/VGA has to list DVI-1/TMDS as well.
-
- "ConnectorNumber" aka RR_PROPERTY_CONNECTOR_NUMBER
- Type: int32
- Flags: Immutable, Static
- Range/List: 0-
-
- Outputs that route their signal to the same connector MUST
- have the same connector number. Outputs with the same
- connector number MUST route their signal to the same
- connector, except if it is 0, which indicates unknown
- connectivity. 1 is called the primary connector, 2 the
- secondary. 3 is typically a TV connector, but that is completely
- driver / hardware dependent.
- Outputs with the same connector number SHOULD have the same
- connector type. Meaning and client behavior for mismatching
- connector types is undefined at the moment.
-
- "ConnectorType" aka RR_PROPERTY_CONNECTOR_TYPE
- Type: int32 / Atom
- Flags: Immutable, Static
- Range/List: unknown VGA DVI DVI‐I DVI‐A DVI‐D HDMI Panel
- TV TV-Composite TV-SVideo TV-Component
- TV-SCART TV-C4 DisplayPort
-
- Connector type, as far as known to the driver.
- Values with dashes (TV‐Composite) describe more specific versions of
- the base values (TV). The former SHOULD be used if the connector is
- not capable of producing other signal formats. The later SHOULD be
- used if the exact connector is unknown, or the connector is a
- multi‐format connector that is not described otherwise. DVI, for
- instance, SHOULD be handled like a DVI‐I connector, unless additional
- information is available to the user agent. PANEL describes
- laptop‐internal (normally LVDS) displays. TV, TV‐SCART, TV‐Component,
- and TV‐C4 with signal format VGA are valid combinations and describe
- RGB TV signals.
-
- "EDID" aka RR_PROPERTY_RANDR_EDID
- Type: int8 [n]
- Flags: Immutable
- Range/List: -
-
- Raw EDID data from the device attached to the according
- output. Should include main EDID data and all extension
- blocks. Previously known as EdidData.
-
- "SignalFormat" aka RR_PROPERTY_SIGNAL_FORMAT
- Type: int32 / Atom
- Flags: -
- Range/List: unknown VGA TMDS LVDS Composite Composite-PAL
- Composite-NTSC Composite-SECAM SVideo
- Component DisplayPort
-
- Signal format / physical protocol format that is used for the
- specified output. valid-values lists all possible formats on this
- output, which SHOULD be a subset of the list above and MUST be static.
- Values with dashes (Composite-PAL) describe more specific versions of
- the base values (Composite) and SHOULD be used if known to the driver.
- A driver MAY change this property of an output if the underlying
- hardware indicates a protocol change (e.g. TV formats). Clients are
- allowed to change the signal format in order to select a different
- signal format (e.g. Composite etc.) or physical protocol (e.g. VGA or
- TMDS on DVI-I).
- Laptop panels SHOULD not be detected with this property, but rather by
- ConnectorType.
-
- "SignalProperties" aka RR_PROPERTY_SIGNAL_FORMAT
- Type: int32 [n] / Atom
- Flags: -
- Range/List: For Composite signals:
- NTSC NTSC-M NTSC-J NTSC-N NTSC-4.43 NTSC-film
- PAL PAL-B PAL-G PAL-H PAL-H PAL-I PAL-M PAL-D
- PAL-N PAL-Nc PAL-L PAL-60
- SECAM SECAM-L SECAM-B SECAM-G SECAM-D SECAM-K
- SECAM-H SECAM-K
- For TMDS signals:
- SingleLink DualLink
- For DisplayPort signals:
- Lane1 Lane2 Lane4 LowSpeed HiSpeed
-
- Properties of the signal format that is currently used for the
- specified output. valid-values lists all possible properties on this
- output, which SHOULD be a subset of the list above. It will change if
- SignalFormat changes. Multiple properties are allowed.
- Values with dashes (PAL-B) describe more specific versions of the base
- values (PAL) and SHOULD be used if known to the driver. A driver MAY
- change this property of an output if the underlying hardware indicates
- a signal change (e.g. TV formats). Clients are allowed to change the
- properties in order to select a different signal subformat.
-
-
-9.2 Properties introduced with version 1.2 of the RandR extension
-
-Property Immutable Mandatory since
-──────── ───────── ───────────────
-EDID yes n/a
-
-EDID is provided by the RandR frontend, thus not driver specific.
-
-
-9.3 Properties introduced with version 1.3 of the RandR extension
-
-Property Immutable Mandatory since
-──────── ───────── ───────────────
-CloneList yes not mandatory
-CompatibilityList yes not mandatory
-ConnectorNumber yes: static not mandatory
-ConnectorType yes: static RandR 1.3
-SignalFormat no RandR 1.3
-SignalProperties no not mandatory
-
-9.4 Properties introduced with version 1.3.1 of the RandR extension
-
-Property Immutable Mandatory since
-──────── ───────── ───────────────
-Backlight no not mandatory
-
- ❧❧❧❧❧❧❧❧❧❧❧
-
-10. Extension Versioning
-
-The RandR extension was developed in parallel with the implementation
-to ensure the feasibility of various portions of the design. As
-portions of the extension are implemented, the version number of the
-extension has changed to reflect the portions of the standard provided.
-This document describes the version 1.2 of the specification, the
-partial implementations have version numbers less than that. Here's a
-list of what each version provided:
-
- 0.0: This prototype implemented resize and rotation in the
- TinyX server Used approximately the protocol described in
- the Usenix paper. Appeared in the TinyX server in
- XFree86 4.2, but not in the XFree86 main server.
-
- 0.1: Added subpixel order, added an event for subpixel order.
- This version was never checked in to XFree86 CVS.
-
- 1.0: Implements resize, rotation, and reflection. Implemented
- both in the XFree86 main server (size change only at this
- date), and fully (size change, rotation, and reflection)
- in XFree86's TinyX server.
-
- 1.1: Added refresh rates
-
- 1.2: Separate screens from CRTCs and outputs, switch to full VESA
- modes
-
- 1.3: Added cheap version of RRGetScreenResources. Added CRTC
- transformations. Added panning. Added primary outputs.
- Added standard properties.
-
-Compatibility between 0.0 and 1.0 was *NOT* preserved, and 0.0 clients
-will fail against 1.0 servers. The wire encoding op-codes were
-changed for GetScreenInfo to ensure this failure in a relatively
-graceful way. Version 1.1 servers and clients are cross compatible with
-1.0. Version 1.1 is considered to be stable and we intend upward
-compatibility from this point. Version 1.2 offers an extended model of the
-system with multiple output support. Version 1.3 adds a cheap version of
-GetScreenResources to avoid expensive DDC operations, CRTC transformations,
-panning, and the primary output concept. 1.2 and 1.3 are backward-compatible
-with 1.1.
-
- ❧❧❧❧❧❧❧❧❧❧❧
-
-11. Relationship with other extensions
-
-Two other extensions have a direct relationship with this extension. This
-section attempts to explain how these three are supposed to work together.
-
-11.1 XFree86-VidModeExtension
-
-XFree86-VidModeExtension changes the configuration of a single monitor
-attached to the screen without changing the configuration of the screen
-itself. It provides the ability to specify new mode lines for the server to
-use along with selecting among existing mode lines. As it uses screen
-numbers instead of window identifiers, it can be used to affect multiple
-monitors in a single-screen Xinerama configuration. However, the association
-between screen numbers and root windows in a multi-Screen environment is not
-defined by the extension. Version 2.0 of this extension added the ability to
-adjust the DAC values in a TrueColor server to modify the brightness curves
-of the display.
-
-All of the utility of this extension is subsumed by RandR version 1.2, RandR
-should be used in preference to XFree86-VidModeExtension where both are
-present.
-
-11.2 Xinerama
-
-Xinerama provides a mechanism for describing the relationship between the
-overall screen display and monitors placed within that area. As such, it
-provides the query functionality of RandR 1.2 without any of the
-configuration functionality. Applications using Xinerama to discover
-monitor geometry can continue to do so, with the caveat that they will not be
-informed of changes when they occur. However, Xinerama configuration data
-will be updated, so applications selecting for RandR notification and
-re-querying the configuration with the Xinerama extension will get updated
-information. It is probably better to view RandR as a superset of Xinerama
-at this point and use it in preference to Xinerama where both are present.
-
- ❧❧❧❧❧❧❧❧❧❧❧
-
-Appendix A. Protocol Encoding
-
-Syntactic Conventions
-
-This document uses the same syntactic conventions as the core X
-protocol encoding document.
-
-A.1 Common Types
-
-┌───
- ROTATION
- 0x0001 Rotate_0
- 0x0002 Rotate_90
- 0x0004 Rotate_180
- 0x0008 Rotate_270
- 0x0010 Reflect_X
- 0x0020 Reflect_Y
-└───
- Used to encode both sets of possible rotations and individual
- selected rotations.
-
-┌───
- RRSELECTMASK
- 0x0001 ScreenChangeNotifyMask
- 0x0002 CrtcChangeNotifyMask Added in version 1.2
- 0x0004 OutputChangeNotifyMask Added in version 1.2
- 0x0008 OutputPropertyNotifyMask Added in version 1.2
-└───
- Event select mask for RRSelectInput
-
-┌───
- RRCONFIGSTATUS
- 0x0 Success
- 0x1 InvalidConfigTime
- 0x2 InvalidTime
- 0x3 Failed
-└───
- Return status for requests which depend on time.
-
-┌───
- MODEINFO (32) Added in version 1.2
- 4 CARD32 id
- 2 CARD16 width in pixels
- 2 CARD16 height in pixels
- 4 CARD32 dot clock
- 2 CARD16 h sync start
- 2 CARD16 h sync end
- 2 CARD16 h total
- 2 CARD16 h skew
- 2 CARD16 v sync start
- 2 CARD16 v sync end
- 2 CARD16 v total
- 2 CARD16 name length
- 4 SETofMODEFLAG mode flags
-└───
-
- An output mode specifies the complete CRTC timings for
- a specific mode. The vertical and horizontal synchronization rates
- can be computed given the dot clock and the h total/v total
- values. If the dot clock is zero, then all of the timing
- parameters and flags are not used, and must be zero as this
- indicates that the timings are unknown or otherwise unused.
- The name itself will be encoded separately in each usage.
-
-┌───
- MODEFLAG
- 0x00000001 HSyncPositive
- 0x00000002 HSyncNegative
- 0x00000004 VSyncPositive
- 0x00000008 VSyncNegative
- 0x00000010 Interlace
- 0x00000020 DoubleScan
- 0x00000040 CSync
- 0x00000080 CSyncPositive
- 0x00000100 CSyncNegative
- 0x00000200 HSkewPresent
- 0x00000400 BCast
- 0x00000800 PixelMultiplex
- 0x00001000 DoubleClock
- 0x00002000 ClockDivideBy2
-└───
-┌───
- CONNECTION
- 0 Connected
- 1 Disconnected
- 2 UnknownConnection
-└───
-
-
-A.2 Protocol Requests
-
-Opcodes 1 and 3 were used in the 0.0 protocols, and will return
-errors if used in version 1.0.
-
-┌───
- RRQueryVersion
-
- 1 CARD8 major opcode
- 1 0 RandR opcode
- 2 3 length
- 4 CARD32 major version
- 4 CARD32 minor version
- ▶
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 1 CARD32 major version
- 1 CARD32 minor version
-└───
-┌───
- RRSetScreenConfig
-
- 1 CARD8 major opcode
- 1 2 RandR opcode
- 2 6 length
- 4 WINDOW window on screen to be configured
- 4 TIMESTAMP timestamp
- 4 TIMESTAMP config timestamp
- 2 SIZEID size index
- 2 ROTATION rotation/reflection
- 2 CARD16 refresh rate (1.1 only)
- 2 CARD16 pad
- ▶
- 1 1 Reply
- 1 RRCONFIGSTATUS status
- 2 CARD16 sequence number
- 4 0 reply length
- 4 TIMESTAMP new timestamp
- 4 TIMESTAMP new configuration timestamp
- 4 WINDOW root
- 2 SUBPIXELORDER subpixel order defined in Render
- 2 CARD16 pad4
- 4 CARD32 pad5
- 4 CARD32 pad6
-└───
-┌───
- RRSelectInput
-
- 1 CARD8 major opcode
- 1 4 RandR opcode
- 2 3 length
- 4 WINDOW window
- 2 SETofRRSELECTMASK enable
- 2 CARD16 pad
-└───
-┌───
- RRGetScreenInfo
-
- 1 CARD8 major opcode
- 1 5 RandR opcode
- 2 2 length
- 4 WINDOW window
- ▶
- 1 1 Reply
- 1 CARD8 set of Rotations
- 2 CARD16 sequence number
- 4 0 reply length
- 4 WINDOW root window
- 4 TIMESTAMP timestamp
- 4 TIMESTAMP config timestamp
- 2 CARD16 number of SCREENSIZE following
- 2 SIZEID current size index
- 2 ROTATION current rotation and reflection
- 2 CARD16 current rate (added in version 1.1)
- 2 CARD16 length of rate info (number of CARD16s)
- 2 CARD16 pad
-
- SCREENSIZE
- 2 CARD16 width in pixels
- 2 CARD16 height in pixels
- 2 CARD16 width in millimeters
- 2 CARD16 height in millimeters
-
- REFRESH
- 2 CARD16 number of rates (n)
- 2n CARD16 rates
-└───
-
-A.2.1 Protocol Requests added with version 1.2
-
-┌───
- RRGetScreenSizeRange
- 1 CARD8 major opcode
- 1 6 RandR opcode
- 2 2 length
- 4 WINDOW window
- ▶
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 2 CARD16 minWidth
- 2 CARD16 minHeight
- 2 CARD16 maxWidth
- 2 CARD16 maxHeight
- 16 unused
-└───
-┌───
- RRSetScreenSize
- 1 CARD8 major opcode
- 1 7 RandR opcode
- 2 5 length
- 4 WINDOW window
- 2 CARD16 width
- 2 CARD16 height
- 4 CARD32 width in millimeters
- 4 CARD32 height in millimeters
-└───
-┌───
- RRGetScreenResources
- 1 CARD8 major opcode
- 1 8 RandR opcode
- 2 2 length
- 4 WINDOW window
- ▶
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 c+o+8m+(b+p)/4 reply length
- 4 TIMESTAMP timestamp
- 4 TIMESTAMP config-timestamp
- 2 c number of CRTCs
- 2 o number of outputs
- 2 m number of modeinfos
- 2 b total bytes in mode names
- 8 unused
- 4c LISTofCRTC crtcs
- 4o LISTofOUTPUT outputs
- 32m LISTofMODEINFO modeinfos
- b STRING8 mode names
- p unused, p=pad(b)
-└───
-┌───
- RRGetOutputInfo
- 1 CARD8 major opcode
- 1 9 RandR opcode
- 2 3 length
- 4 OUTPUT output
- 4 TIMESTAMP config-timestamp
- ▶
- 1 1 Reply
- 1 RRCONFIGSTATUS status
- 2 CARD16 sequence number
- 4 1+c+m+(n+p)/4 reply length
- 4 TIMESTAMP timestamp
- 4 CRTC current connected crtc
- 4 CARD32 width in millimeters
- 4 CARD32 height in millimeters
- 1 CONNECTION connection
- 1 SUBPIXELORDER subpixel-order
- 2 c number of CRTCs
- 2 m number of modes
- 2 p number of preferred modes
- 2 o number of clones
- 2 n length of name
- 4c LISTofCRTC crtcs
- 4m LISTofMODE modes
- 4o LISTofOUTPUT clones
- n STRING8 name
- p unused, p=pad(n)
-└───
-┌───
- RRListOutputProperties
- 1 CARD8 major opcode
- 1 10 RandR opcode
- 2 2 length
- 4 OUTPUT output
- ▶
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n reply length
- 2 n number of ATOMs in atoms
- 22 unused
- 4n LISTofATOM atoms
-└───
-┌───
- RRQueryOutputProperty
- 1 CARD8 major opcode
- 1 11 RandR opcode
- 2 3 request length
- 4 OUTPUT output
- 4 ATOM property
- ▶
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n reply length
- 1 BOOL pending
- 1 BOOL range
- 1 BOOL immutable
- 21 unused
- 4n LISTofINT32 valid values
-└───
-┌───
- RRConfigureOutputProperty
- 1 CARD8 major opcode
- 1 12 RandR opcode
- 2 4+n request length
- 4 OUTPUT output
- 4 ATOM property
- 1 BOOL pending
- 1 BOOL range
- 2 unused
- 4n LISTofINT32 valid values
-└───
-┌───
- RRChangeOutputProperty
- 1 CARD8 major opcode
- 1 13 RandR opcode
- 2 6+(n+p)/4 request length
- 4 OUTPUT output
- 4 ATOM property
- 4 ATOM type
- 1 CARD8 format
- 1 mode
- 0 Replace
- 1 Prepend
- 2 Append
- 2 unused
- 4 CARD32 length of data in format units
- (= n for format = 8)
- (= n/2 for format = 16)
- (= n/4 for format = 32)
- n LISTofBYTE data
- (n is a multiple of 2 for format = 16)
- (n is a multiple of 4 for format = 32)
- p unused, p=pad(n)
-└───
-┌───
- RRDeleteOutputProperty
- 1 CARD8 major opcode
- 1 14 RandR opcode
- 2 3 request length
- 4 OUTPUT output
- 4 ATOM property
-└───
-┌───
- RRGetOutputProperty
- 1 CARD8 major opcode
- 1 15 RandR opcode
- 2 7 request length
- 4 OUTPUT output
- 4 ATOM property
- 4 ATOM type
- 0 AnyPropertyType
- 4 CARD32 long-offset
- 4 CARD32 long-length
- 1 BOOL delete
- 1 BOOL pending
- 2 unused
- ▶
- 1 1 Reply
- 1 CARD8 format
- 2 CARD16 sequence number
- 4 (n+p)/4 reply length
- 4 ATOM type
- 0 None
- 4 CARD32 bytes-after
- 4 CARD32 length of value in format units
- (= 0 for format = 0)
- (= n for format = 8)
- (= n/2 for format = 16)
- (= n/4 for format = 32)
- 12 unused
- n LISTofBYTE value
- (n is zero for format = 0)
- (n is a multiple of 2 for format = 16)
- (n is a multiple of 4 for format = 32)
- p unused, p=pad(n)
-└───
-┌───
- RRCreateMode
- 1 CARD8 major opcode
- 1 16 RandR opcode
- 2 12+(n+p)/4 length
- 4 WINDOW window
- 32 MODEINFO mode
- n STRING8 mode name
- p unused, p=pad(n)
- ▶
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 MODE mode
- 20 unused
-└───
-┌───
- RRDestroyMode
- 1 CARD8 major opcode
- 1 17 RandR opcode
- 2 2 length
- 4 MODE mode
-└───
-┌───
- RRAddOutputMode
- 1 CARD8 major opcode
- 1 18 RandR opcode
- 2 3 length
- 4 OUTPUT output
- 4 MODE mode
-└───
-┌───
- RRDeleteOutputMode
- 1 CARD8 major opcode
- 1 19 RandR opcode
- 2 3 length
- 4 OUTPUT output
- 4 MODE mode
-└───
-┌───
- RRGetCrtcInfo
- 1 CARD8 major opcode
- 1 20 RandR opcode
- 2 3 length
- 4 CRTC crtc
- 4 TIMESTAMP config-timestamp
- ▶
- 1 1 Reply
- 1 RRCONFIGSTATUS status
- 2 CARD16 sequence number
- 4 o+p reply length
- 4 TIMESTATMP timestamp
- 2 INT16 x
- 2 INT16 y
- 2 CARD16 width
- 2 CARD16 height
- 4 MODE mode
- 2 ROTATION current rotation and reflection
- 2 ROTATION set of possible rotations
- 2 o number of outputs
- 2 p number of possible outputs
- 4o LISTofOUTPUT outputs
- 4p LISTofOUTPUT possible outputs
-└───
-┌───
- RRSetCrtcConfig
- 1 CARD8 major opcode
- 1 21 RandR opcode
- 2 7+2n length
- 4 CRTC crtc
- 4 TIMESTAMP timestamp
- 4 TIMESTAMP config timestamp
- 2 INT16 x
- 2 INT16 y
- 4 MODE mode
- 2 ROTATION rotation/reflection
- 2 unused
- 8n LISTofOUTPUT outputs
- ▶
- 1 1 Reply
- 1 RRCONFIGSTATUS status
- 2 CARD16 sequence number
- 4 0 reply length
- 4 TIMESTAMP new timestamp
- 20 unused
-└───
-┌───
- RRGetCrtcGammaSize
- 1 CARD8 major opcode
- 1 22 RandR opcode
- 2 2 length
- 4 CRTC crtc
- ▶
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 2 CARD16 size
- 22 unused
-└───
-┌───
- RRGetCrtcGamma
- 1 CARD8 major opcode
- 1 23 RandR opcode
- 2 2 length
- 4 CRTC crtc
- ▶
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 (6n+2)/4 reply length
- 2 n size
- 20 unused
- 2n LISTofCARD16 red
- 2n LISTofCARD16 green
- 2n LISTofCARD16 blue
- p unused, p=pad(6n)
-└───
-┌───
- RRSetCrtcGamma
- 1 CARD8 major opcode
- 1 24 RandR opcode
- 2 3+(6n+2)/4 length
- 4 CRTC crtc
- 2 n size
- 2 unused
- 2n LISTofCARD16 red
- 2n LISTofCARD16 green
- 2n LISTofCARD16 blue
- p unused, p=pad(6n)
-└───
-
-A.2.2 Protocol Requests added with version 1.3
-
-┌───
- RRGetScreenResourcesCurrent
- 1 CARD8 major opcode
- 1 25 RandR opcode
- 2 2 length
- 4 WINDOW window
- ▶
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 c+o+8m+(b+p)/4 reply length
- 4 TIMESTAMP timestamp
- 4 TIMESTAMP config-timestamp
- 2 c number of CRTCs
- 2 o number of outputs
- 2 m number of modeinfos
- 2 b total bytes in mode names
- 8 unused
- 4c LISTofCRTC crtcs
- 4o LISTofOUTPUT outputs
- 32m LISTofMODEINFO modeinfos
- b STRING8 mode names
- p unused, p=pad(b)
-└───
-
-┌───
- RRSetCrtcTransform
- 1 CARD8 major opcode
- 1 26 RandR opcode
- 2 12+(n+p)/4+v length
- 4 CRTC crtc
- 36 TRANSFORM transform
- 2 CARD16 filter length
- 2 unused
- n STRING8 filter name
- p unused, p=pad(n)
- 4v FIXED filter params
-└───
-
-┌───
- RRGetCrtcTransform
- 1 CARD8 major opcode
- 1 27 RandR opcode
- 2 2 length
- 4 CRTC crtc
- ▶
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 16+(pn+pnp)/4+(cn+cnp)/4+pf+cf reply length
- 36 TRANSFORM pending transform
- 1 BOOL has transforms
- 3 unused
- 36 TRANSFORM current transform
- 4 unused
- 2 pn pending filter name length
- 2 pf pending filter num params
- 2 cn current filter name length
- 2 cf current filter num params
- pn STRING8 pending filter name
- pnp unused, pnp=pad(pn)
- 4*pf FIXED pending filter params
- cn STRING8 current filter name
- cnp unused, cnp=pad(cn)
- 4*cf FIXED current filter params
-└───
-
-┌───
- RRGetPanning
- 1 CARD8 major opcode
- 1 28 RandR opcode
- 2 2 length
- 4 CRTC crtc
- ▶
- 1 1 Reply
- 1 RRCONFIGSTATUS status
- 2 CARD16 sequence number
- 4 1 reply length
- 4 TIMESTAMP timestamp
- 2 CARD16 left
- 2 CARD16 top
- 2 CARD16 width
- 2 CARD16 height
- 2 CARD16 track_left
- 2 CARD16 track_top
- 2 CARD16 track_width
- 2 CARD16 track_height
- 2 INT16 border_left
- 2 INT16 border_top
- 2 INT16 border_right
- 2 INT16 border_bottom
-└───
-┌───
- RRSetPanning
- 1 CARD8 major opcode
- 1 29 RandR opcode
- 2 9 length
- 4 CRTC crtc
- 4 TIMESTAMP timestamp
- 2 CARD16 left
- 2 CARD16 top
- 2 CARD16 width
- 2 CARD16 height
- 2 CARD16 track_left
- 2 CARD16 track_top
- 2 CARD16 track_width
- 2 CARD16 track_height
- 2 INT16 border_left
- 2 INT16 border_top
- 2 INT16 border_right
- 2 INT16 border_bottom
- ▶
- 1 1 Reply
- 1 RRCONFIGSTATUS status
- 2 CARD16 sequence number
- 4 0 reply length
- 4 TIMESTAMP new timestamp
- 20 unused
-└───
-
-┌───
- RRSetOutputPrimary
- 1 CARD8 major opcode
- 1 30 RandR opcode
- 2 3 length
- 4 WINDOW window
- 4 OUTPUT output
-└───
-
-┌───
- RRGetOutputPrimary
- 1 CARD8 major opcode
- 1 31 RandR opcode
- 2 2 length
- 4 WINDOW window
- ▶
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 CARD32 length
- 4 OUTPUT output
- 4 CARD32 pad1
- 4 CARD32 pad2
- 4 CARD32 pad3
- 4 CARD32 pad4
-└───
-
-A.3 Protocol Events
-
-┌───
- RRScreenChangeNotify
- 1 Base + 0 code
- 1 ROTATION new rotation and reflection
- 2 CARD16 sequence number
- 4 TIMESTAMP timestamp
- 4 TIMESTAMP configuration timestamp
- 4 WINDOW root window
- 4 WINDOW request window
- 2 SIZEID size ID
- 2 SUBPIXELORDER subpixel order defined in Render
- 2 CARD16 width in pixels
- 2 CARD16 height in pixels
- 2 CARD16 width in millimeters
- 2 CARD16 height in millimeters
-└───
-
-A.3.1 Protocol Events added with version 1.2
-
-┌───
- RRCrtcChangeNotify
- 1 Base + 1 code
- 1 0 sub-code
- 2 CARD16 sequence number
- 4 TIMESTAMP timestamp
- 4 WINDOW request window
- 4 CRTC crtc affected
- 4 MODE mode in use
- 2 ROTATION new rotation and reflection
- 2 unused
- 2 INT16 x
- 2 INT16 y
- 2 CARD16 width
- 2 CARD16 height
-└───
-┌───
- RROutputChangeNotify
- 1 Base + 1 code
- 1 1 sub-code
- 2 CARD16 sequence number
- 4 TIMESTAMP timestamp
- 4 TIMESTAMP configuration timestamp
- 4 WINDOW request window
- 4 OUTPUT output affected
- 4 CRTC crtc in use
- 4 MODE mode in use
- 2 ROTATION rotation in use
- 1 CONNECTION connection status
- 1 SUBPIXELORDER subpixel order
-└───
-┌───
- RROutputPropertyNotify
- 1 Base + 1 code
- 1 2 sub-code
- 2 CARD16 sequence number
- 4 WINDOW window
- 4 OUTPUT output
- 4 ATOM atom
- 4 TIMESTAMP time
- 1 state
- 0 NewValue
- 1 Deleted
- 11 unused
-└───
-
-A.4 Protocol Errors
-
-┌───
- ERRORS
- Base + 0 Output
- Base + 1 Crtc
- Base + 2 Mode
-└───
-
-Bibliography
-
-[RANDR] Gettys, Jim and Keith Packard, "The X Resize and Rotate
- Extension - RandR", Proceedings of the 2001 USENIX Annual
- Technical Conference, Boston, MA
-
-[RENDER]
- Packard, Keith, "The X Rendering Extension", work in progress,
- http://cgit.freedesktop.org/xorg/proto/renderproto/tree/renderproto.txt
+ The X Resize, Rotate and Reflect Extension
+ Version 1.4.0
+ 2009-10-5
+
+ Jim Gettys
+ Jim.Gettys@hp.com
+ Cambridge Research Laboratory
+ HP Labs
+ Hewlett Packard Company
+
+ Keith Packard
+ keith.packard@intel.com
+ Open Source Technology Center
+ Intel Corporation
+
+1. Introduction
+
+The X Resize, Rotate and Reflect Extension, called RandR for short,
+brings the ability to resize, rotate and reflect the root window of a
+screen. It is based on the X Resize and Rotate Extension as specified
+in the Proceedings of the 2001 Usenix Technical Conference [RANDR].
+
+RandR as implemented and integrated into the X server differs in
+one substantial fashion from the design discussed in that paper: that
+is, RandR 1.0 does not implement the depth switching described in that
+document, and the support described for that in the protocol in that
+document and in the implementation has been removed from the
+protocol described here, as it has been overtaken by events.
+
+These events include:
+ ► Modern toolkits (in this case, GTK+ 2.x) have progressed to the point
+ of implementing migration between screens of arbitrary depths
+ ► The continued advance of Moore's law has made limited amounts of VRAM
+ less of an issue, reducing the pressure to implement depth switching
+ on laptops or desktop systems
+ ► The continued decline of legacy toolkits whose design would have
+ required depth switching to support migration
+ ► The lack of depth switching implementation experience in the
+ intervening time, due to events beyond our control
+
+Additionally, the requirement to support depth switching might
+complicate other re-engineering of the device independent part of the
+X server that is currently being contemplated.
+
+Rather than further delaying RandR's widespread deployment for a feature
+long wanted by the community (resizing of screens, particularly on laptops),
+or the deployment of a protocol design that might be flawed due to lack of
+implementation experience, we decided to remove depth switching from the
+protocol. It may be implemented at a later time if resources and
+interests permit as a revision to the protocol described here, which will
+remain a stable base for applications. The protocol described here has been
+implemented in the main X.org server, and more fully in the hw/kdrive
+implementation in the distribution, which fully implements resizing,
+rotation and reflection.
+
+1.2 Introduction to version 1.2 of the extension
+
+One of the significant limitations found in version 1.1 of the RandR
+protocol was the inability to deal with the Xinerama model where multiple
+monitors display portions of a common underlying screen. In this environment,
+zero or more video outputs are associated with each CRT controller which
+defines both a set of video timings and a 'viewport' within the larger
+screen. This viewport is independent of the overall size of the screen, and
+may be located anywhere within the screen.
+
+The effect is to decouple the reported size of the screen from the size
+presented by each video output, and to permit multiple outputs to present
+information for a single screen.
+
+To extend RandR for this model, we separate out the output, CRTC and screen
+configuration information and permit them to be configured separately. For
+compatibility with the 1.1 version of the protocol, we make the 1.1 requests
+simultaneously affect both the screen and the (presumably sole) CRTC and
+output. The set of available outputs are presented with UTF-8 encoded names
+and may be connected to CRTCs as permitted by the underlying hardware. CRTC
+configuration is now done with full mode information instead of just size
+and refresh rate, and these modes have names. These names also use UTF-8
+encoding. New modes may also be added by the user.
+
+Additional requests and events are provided for this new functionality.
+
+ ┌────────────────────────────────┬──────────┐
+ ┏━━━━━━━┳───────────────┐ ╔════════╗ ╔════════╗
+ ┃ 1 ┃ │ ║ A ║ ║ B ║
+ ┃ ┏━━━╋━━━━━━━━━━━━━━━┫ ║ ║ ║ ║
+ ┣━━━╋━━━┛ ┃ ╚════════╝ ╚════════╝
+ │ ┃ 2 ┃─────────────────┐
+ │ ┃ ┃ ╔═══════════════════╗
+ │ ┃ ┃ ║ ║
+ │ ┗━━━━━━━━━━━━━━━━━━━┫ ║ C ║
+ └───────────────────────┘ ║ ║
+ ┌──────┐ ┏━━━━┓ ╔══════╗ ║ ║
+ │screen│ ┃CRTC┃ ║output║ ╚═══════════════════╝
+ └──────┘ ┗━━━━┛ ╚══════╝
+
+In this picture, the screen is covered (incompletely) by two CRTCs. CRTC1
+is connected to two outputs, A and B. CRTC2 is connected to output C.
+Outputs A and B will present exactly the same region of the screen using
+the same mode line. Output C will present a different (larger) region of
+the screen using a different mode line.
+
+RandR provides information about each available CRTC and output; the
+connection between CRTC and output is under application control, although
+the hardware will probably impose restrictions on the possible
+configurations. The protocol doesn't try to describe these restrictions,
+instead it provides a mechanism to find out what combinations are supported.
+
+For instance, dual-link DVI gangs two CRTC outputs together to provide higher
+bandwidth for large resolution screens. This is exposed in RandR by
+requiring that nothing be connected to the second CRTC when driving a high
+resolution screen on the first.
+
+1.3 Introduction to version 1.3 of the extension
+
+Version 1.3 builds on the changes made with version 1.2 and adds some new
+capabilities without fundmentally changing the extension again. The
+following features are added in this version:
+
+ • Projective Transforms. The implementation work for general rotation
+ support made it trivial to add full projective transformations. These
+ can be used to scale the screen up/down as well as perform projector
+ keystone correct or other effects.
+
+ • Panning. It was removed with RandR 1.2 because the old semantics didn't
+ fit any longer. With RandR 1.3 panning can be specified per crtc.
+
+1.4 Introduction to version 1.4 of the extension
+
+Version 1.4 adds a couple more capabilities to further expose the
+underlying hardware to clients
+
+ • Per-crtc pixmaps. This provides for multiple scan-out buffers
+ which applications can create and assign to arbitrary collections
+ of crtcs.
+
+ • Sprite position and image transforms. These provide a projective
+ transform for both the hot spot location and the sprite image
+ itself for each CRTC.
+
+ • RRSetCrtcConfigs request. This supplies a set of
+ crtc configurations to the server that must be applied together
+ or not at all. This can reduce screen flicker while also
+ providing the server a complete configuration for appropriate
+ resource management.
+
+The first two additions, per-crtc pixmaps and sprite transforms are
+designed to solve two problems:
+
+ 1) Screen transforms. The software transform code in the X server
+ uses a shadow frame buffer, adding another copy to every graphics
+ operation. Worse, the server has no idea about when clients are
+ done drawing a frame, so the user gets additional latency and
+ judder.
+
+ The goal is to move this operation out to the compositing manager
+ which already deals with an extra copy of the frame buffer for
+ many operations. Have the compositing manager create and draw to a
+ separate pixmap for scanout. It can perform whatever transforms
+ are required to get the image in the right orientation for the
+ user.
+
+ 2) Hardware scanout engine size limits. With a single scanout buffer
+ for the entire screen, it's possible for the user to ask for a
+ configuration which requires that scanout buffer to be larger than
+ the hardware is capable of scanning out from. Again, having the
+ compositing manager create a pixmap for each CRTC will allow for
+ any configuration where monitor position within the virtual space
+ isn't limited by the scanout limits.
+
+In both of these cases, the Sprite transforms are necessary to ensure
+that the sprite appears at the desired spot on each CRTC and with the
+right shape.
+
+1.99 Acknowledgements
+
+Our thanks to the contributors to the design found on the xpert mailing
+list, in particular:
+
+Alan Hourihane for work on the early implementation
+Andrew C. Aitchison for help with the XFree86 DDX implementation
+Andy Ritger for early questions about how mergefb/Xinerama work with RandR
+Carl Worth for editing the specification and Usenix paper
+David Dawes for XFree86 DDX integration work
+Thomas Winischhofer for the hardware-accelerated SiS rotation implementation
+Matthew Tippett and Kevin Martin for splitting outputs and CRTCs to more
+fully expose what video hardware can do
+
+ ❧❧❧❧❧❧❧❧❧❧❧
+
+2. Screen change model
+
+Screens may change dynamically, either under control of this extension, or
+due to external events. Examples include: monitors being swapped, pressing a
+button to switch from internal display to an external monitor on a laptop,
+or, eventually, the hotplug of a display card entirely on busses such as
+Cardbus or Express Card which permit hot-swap (which will require other work
+in addition to this extension).
+
+Since the screen configuration is dynamic and asynchronous to the client and
+may change at any time RandR provides mechanisms to ensure that your clients
+view is up to date with the configuration possibilities of the moment and
+enforces applications that wish to control the configuration to prove that
+their information is up to date before honoring requests to change the
+screen configuration (by requiring a timestamp on the request).
+
+Interested applications are notified whenever the screen configuration
+changes, providing the current size of the screen and subpixel order (see
+the Render extension [RENDER]), to enable proper rendering of subpixel
+decimated client text to continue, along with a time stamp of the
+configuration change. A client must refresh its knowledge of the screen
+configuration before attempting to change the configuration after a
+notification, or the request will fail.
+
+To avoid multiplicative explosion between orientation, reflection and sizes,
+the sizes are only those sizes in the normal (0) rotation.
+
+Rotation and reflection and how they interact can be confusing. In Randr,
+the coordinate system is rotated in a counter-clockwise direction relative
+to the normal orientation. Reflection is along the window system coordinate
+system, not the physical screen X and Y axis, so that rotation and
+reflection do not interact. The other way to consider reflection is to is
+specified in the "normal" orientation, before rotation, if you find the
+other way confusing.
+
+We expect that most clients and toolkits will be oblivious to changes to the
+screen structure, as they generally use the values in the connections Display
+structure directly. By toolkits updating the values on the fly, we believe
+pop-up menus and other pop up windows will position themselves correctly in
+the face of screen configuration changes (the issue is ensuring that pop-ups
+are visible on the reconfigured screen).
+
+ ❧❧❧❧❧❧❧❧❧❧❧
+
+3. Data Types
+
+The subpixel order is shared with the Render extension, and is documented
+there. The only datatype defined is the screen size, defined in the normal
+(0 degree) orientation.
+
+ ❧❧❧❧❧❧❧❧❧❧❧
+
+4. Errors
+
+Errors are sent using core X error reports.
+
+Output
+ A value for an OUTPUT argument does not name a defined OUTPUT.
+CRTC
+ A value for a CRTC argument does not name a defined CRTC.
+Mode
+ A value for a MODE argument does not name a defined MODE.
+
+ ❧❧❧❧❧❧❧❧❧❧❧
+
+5. Protocol Types
+
+RRCONFIGSTATUS { Success
+ InvalidConfigTime
+ InvalidTime
+ Failed }
+
+ A value of type RRCONFIGSTATUS returned when manipulating the output
+ configuration or querying information from the server that has some
+ time-dependency.
+
+ InvalidConfigTime indicates that the supplied configuration
+ timestamp does not match the current X server configuration
+ timestamp. Usually this means that the output configuration has
+ changed since the timestamp was received by the application.
+
+ InvalidTime indicates that the supplied output reconfiguration time
+ is earlier than the most recent output reconfiguration request.
+ Generally this indicates that another application has reconfigured
+ the output using a later timestamp.
+
+ Failed is returned whenever the operation is unsuccessful for some
+ other reason. This generally indicates that the requested output
+ configuration is unsupported by the hardware. The goal is to make
+ these limitations expressed by the protocol, but when that isn't
+ possible it is correct to return this error value. If, as a
+ implentor, you find this error code required, please submit the
+ hardware constraints that exist so that a future version of the
+ extension can correctly capture the configuration constraints in
+ your system.
+
+ROTATION { Rotate_0
+ Rotate_90
+ Rotate_180
+ Rotate_270
+ Reflect_X
+ Reflect_Y }
+
+ These values are used both to indicate a set of allowed rotations
+ and reflections as well as to indicate a specific rotation and
+ reflection combination.
+
+RRSELECTMASK { RRScreenChangeNotifyMask
+ RRCrtcChangeNotifyMask (New in version 1.2)
+ RROutputChangeNotifyMask (New in version 1.2)
+ RROutputPropertyNotifyMask (New in version 1.2) }
+
+SIZEID { CARD16 }
+
+MODE { XID or None }
+
+CRTC { XID }
+
+OUTPUT { XID }
+
+CONNECTION { Connected, Disconnected, UnknownConnection }
+
+ This value provides an indication of whether an output is actually
+ connected to a monitor or other presentation device.
+
+SUBPIXELORDER { SubPixelUnknown The subpixel order uses the Render
+ SubPixelHorizontalRGB extensions definitions; they are here
+ SubPixelHorizontalBGR only for convenience.
+ SubPixelVerticalRGB
+ SubPixelVerticalBGR
+ SubPixelNone }
+
+SCREENSIZE { widthInPixels, heightInPixels: CARD16
+ widthInMillimeters, heightInMillimeters: CARD16 }
+
+MODEFLAG { HSyncPositive
+ HSyncNegative
+ VSyncPositive
+ VSyncNegative
+ Interlace
+ DoubleScan
+ CSync
+ CSyncPositive
+ CSyncNegative
+ HSkewPresent
+ BCast
+ PixelMultiplex
+ DoubleClock
+ ClockDivideBy2 }
+
+MODEINFO { id: MODE
+ name: STRING
+ width, height: CARD16
+ dotClock: CARD32
+ hSyncStart, hSyncEnd, hTotal, hSkew: CARD16
+ vSyncStart, vSyncEnd, vTotal: CARD16
+ modeFlags: SETofMODEFLAG }
+
+REFRESH { rates: LISTofCARD16 }
+
+ ❧❧❧❧❧❧❧❧❧❧❧
+
+5.4. Protocol Types added in version 1.4 of the extension
+
+SCANOUTPIXMAPINFO { format: PICTFORMAT
+ maxWidth, maxHeight: CARD16
+ rotations: SETofROTATION }
+
+ 'format' is the format of the pixels within the scanout
+ pixmap. Only 'Direct' formats are supported, this will never
+ be an 'Indexed' format.
+
+ 'maxWidth' and 'maxHeight' define the largest supported
+ scanout pixmap. There is no minimum size; scanout pixmaps down
+ to 1x1 may be created.
+
+ 'rotations' lists the set of rotations which can be provided
+ without additional latency or memory usage within the
+ environment. This typically means that they are supported
+ directly by the hardware. It is expected that a compositing
+ manager will perform other transforms as a part of the
+ compositing process in conjunction with the sprite transforms
+ described in this extension.
+
+SCREENFLAG { SetScreenPixmapSize
+ SetScreenSize
+ SetScreenSizeInMillimeters
+ SetScreenCrtcs }
+
+CRTCFLAG { SetCrtcPosition
+ SetCrtcMode
+ SetCrtcRotation
+ SetCrtcOutputs
+ SetCrtcSpritePositionTransform
+ SetCrtcSpriteImageTransform
+ SetCrtcPixmap
+ SetCrtcPixmapPosition }
+
+CRTCCONFIG { crtc: CRTC
+ set: SETofCRTCFLAG
+ x, y: INT16
+ mode: MODE
+ rotation: ROTATION
+ sprite-position-transform: TRANSFORM
+ sprite-image-transform: TRANSFORM
+ outputs: LISTofOUTPUT
+ pixmap: PIXMAP or None
+ pixmap-x, pixmap-y: INT16 }
+
+ If 'set' includes SetCrtcSpritePositionTransform, then
+ sprite-position-transform is used as in the
+ RRSetCrtcSpriteTransform request position-transform parameter.
+
+ If 'set' includes SetCrtcSpriteImageTransform, then
+ sprite-image-transform is used as in the
+ RRSetCrtcSpriteTransform request image-transform parameter.
+
+ If 'set' includes SetCrtcPixmap, then 'pixmap' specifies the
+ origin of the pixel data to be presented on 'crtc'. If
+ 'pixmap' is None, then data will be presented from the screen
+ pixmap.
+
+ If 'set' includes SetCrtcPixmapPosition, then 'pixmap-x' and
+ 'pixmap-y' specify the origin of the scanout data within the
+ pixmap, the area from that location to pixmap-x +
+ width-of(mode), pixmap-y + height-of(mode) is what will be
+ seen on the connected outputs.
+
+ If 'set' includes SetCrtcPixmap, then 'pixmap' must specify a
+ scanout pixmap as created by RRCreateScanoutPixmap or
+ None. Otherwise a Match error results. Furthermore:
+
+ * 'pixmap' must be at least as large as the area to be
+ scanned out, or a Match error results.
+
+ * If 'pixmap' is destroyed while still being used as a
+ scanout pixmap, then the associated CRTC will have its
+ scanout pixmap set back to None, the CRTC origin set back
+ to 0,0 (to make sure it fits) and the screen pixmap width
+ and height increased to be at least as big as the current
+ CRTC mode.
+
+ * Future crtc changes that do not change the scanout pixmap
+ will cause an existing scanout pixmap to be resized to be
+ large enough to hold the new mode at the then-current
+ pixmap-x/pixmap-y location.
+
+ If 'set' includes SetCrtcRotation then:
+
+ * Any new or existing scanout pixmap must have had the
+ specified 'rotation' included as a part of its creation
+ parameters, or a Match error results.
+
+ * If no scanout pixmap is in use, then the crtc must support
+ 'rotation' else a Value error results.
+
+ ❧❧❧❧❧❧❧❧❧❧❧
+
+6. Extension Initialization
+
+The name of this extension is "RANDR".
+
+┌───
+ RRQueryVersion
+ client-major-version: CARD32
+ client-minor-version: CARD32
+ ▶
+ major-version: CARD32
+ minor-version: CARD32
+└───
+
+ The client sends the highest supported version to the server
+ and the server sends the highest version it supports, but no
+ higher than the requested version. Major versions changes can
+ introduce incompatibilities in existing functionality, minor
+ version changes introduce only backward compatible changes.
+ It is the clients responsibility to ensure that the server
+ supports a version which is compatible with its expectations.
+
+ ❧❧❧❧❧❧❧❧❧❧❧
+
+7. Extension Requests
+
+┌───
+ RRSelectInput
+ window: WINDOW
+ enable: SETofRRSELECTMASK
+└───
+ Errors: Window, Value
+
+ If 'enable' is RRScreenChangeNotifyMask, RRScreenChangeNotify events
+ will be sent when the screen configuration changes, either from
+ this protocol extension, or due to detected external screen
+ configuration changes. RRScreenChangeNotify may also be sent when
+ this request executes if the screen configuration has changed since
+ the client connected, to avoid race conditions.
+
+ New for version 1.2:
+
+ If 'enable' contains RRCrtcChangeMask, RRCrtcChangeNotify events
+ will be sent when a the configuration for a CRTC associated with the
+ screen changes, either through this protocol extension or due to
+ detected external changes. RRCrtcChangeNotify may also be sent when
+ this request executes if the CRTC configuration has changed since
+ the client connected, to avoid race conditions.
+
+ If 'enable' contains RROutputChangeMask, RROutputChangeNotify events
+ will be sent when a the configuration for an output associated with
+ the screen changes, either through this protocol extension or due to
+ detected external changes. RROutputChangeNotify may also be sent
+ when this request executes if the output configuration has changed
+ since the client connected, to avoid race conditions.
+
+ If 'enable' contains RROutputPropertyNotifyMask,
+ RROutputPropertyNotify events will be sent when properties change on
+ this output.
+
+┌───
+ RRSetScreenConfig
+ window: WINDOW
+ timestamp: TIMESTAMP
+ config-timestamp: TIMESTAMP
+ size-id: SIZEID
+ rotation: ROTATION
+ rate: CARD16
+ ▶
+ status: RRCONFIGSTATUS
+ new-timestamp: TIMESTAMP
+ config-timestamp: TIMESTAMP
+ root: WINDOW
+ subpixelOrder: SUBPIXELORDER
+└───
+ Errors: Value, Match
+
+ If 'timestamp' is less than the time when the configuration was last
+ successfully set, the request is ignored and InvalidTime returned in
+ status.
+
+ If 'config-timestamp' is not equal to when the server's screen
+ configurations last changed, the request is ignored and
+ InvalidConfigTime returned in status. This could occur if the
+ screen changed since you last made a RRGetScreenInfo request,
+ perhaps by a different piece of display hardware being installed.
+ Rather than allowing an incorrect call to be executed based on stale
+ data, the server will ignore the request.
+
+ 'rate' contains the desired refresh rate. If it is zero, the server
+ selects an appropriate rate.
+
+ This request may fail for other indeterminate reasons, in which case
+ 'status' will be set to Failed and no configuration change will be
+ made.
+
+ This request sets the screen to the specified size, rate, rotation
+ and reflection.
+
+ When this request succeeds, 'status' contains Success and the
+ requested changes to configuration will have been made.
+
+ 'new-time-stamp' contains the time at which this request was
+ executed.
+
+ 'config-timestamp' contains the time when the possible screen
+ configurations were last changed.
+
+ 'root' contains the root window for the screen indicated by the
+ window.
+
+ 'subpixelOrder' contains the resulting subpixel order of the screen
+ to allow correct subpixel rendering.
+
+ Value errors are generated when 'rotation', 'rate' or 'size-id'
+ are invalid.
+
+┌───
+ RRGetScreenInfo
+ window: WINDOW
+ ▶
+ rotations: SETofROTATION
+ root: WINDOW
+ timestamp: TIMESTAMP
+ config-timestamp: TIMESTAMP
+ size-id: SIZEID
+ rotation: ROTATION
+ rate: CARD16
+ sizes: LISTofSCREENSIZE
+ refresh: LISTofREFRESH
+└───
+
+ Errors: Window
+
+ RRGetScreenInfo returns information about the current and available
+ configurations for the screen associated with 'window'.
+
+ 'rotations' contains the set of rotations and reflections supported
+ by the screen.
+
+ 'root' is the root window of the screen.
+
+ 'config-timestamp' indicates when the screen configuration
+ information last changed: requests to set the screen will fail
+ unless the timestamp indicates that the information the client
+ is using is up to date, to ensure clients can be well behaved
+ in the face of race conditions.
+
+ 'timestamp' indicates when the configuration was last set.
+
+ 'size-id' indicates which size is active.
+
+ 'rate' is the current refresh rate. This is zero when the refresh
+ rate is unknown or on devices for which refresh is not relevant.
+
+ 'sizes' is the list of possible frame buffer sizes (at the normal
+ orientation. Each size indicates both the linear physical size of
+ the screen and the pixel size.
+
+ 'refresh' is the list of refresh rates for each size. Each element
+ of 'sizes' has a corresponding element in 'refresh'. An empty list
+ indicates no known rates, or a device for which refresh is not
+ relevant.
+
+ The default size of the screen (the size that would become the
+ current size when the server resets) is the first size in the
+ list.
+
+7.1. Extension Requests added in version 1.2 of the extension
+
+As introduced above, version 1.2 of the extension splits the screen size
+from the crtc and output configuration, permitting the subset of the screen
+presented by multiple outputs to be configured. As a separate notion, the
+size of the screen itself may be arbitrarily configured within a defined
+range. As crtcs and outputs are added and removed from the system, the set
+returned by the extension will change so that applications can detect
+dynamic changes in the display environment.
+
+┌───
+ RRGetScreenSizeRange
+ window: WINDOW
+ ▶
+ CARD16 minWidth, minHeight
+ CARD16 maxWidth, maxHeight
+└───
+ Errors: Window
+
+ Returns the range of possible screen sizes. The screen may be set to
+ any size within this range.
+
+┌───
+ RRSetScreenSize
+ window: WINDOW
+ width: CARD16
+ height: CARD16
+ width-in-millimeters: CARD32
+ height-in-millimeters: CARD32
+└───
+ Errors: Window, Match, Value
+
+ Sets the screen to the specified size. 'width' and 'height' must be
+ within the range allowed by GetScreenSizeRanges, otherwise a Value
+ error results. All active monitors must be configured to display a
+ subset of the specified size, else a Match error results.
+
+ 'width-in-millimeters' and 'height-in-millimeters' can be set to
+ reflect the physical size of the screen reported both through this
+ extension and the core protocol. They must be non-zero, or Value
+ error results.
+
+ If panning is enabled, the width and height of the panning and the
+ tracking areas are adapted to the new size and clamped afterwards.
+ Disabled panning axes remain disabled.
+ Panning borders are disabled if their requirements are no longer met
+ (see RRSetPanning).
+
+┌───
+ RRGetScreenResources
+ window: WINDOW
+ ▶
+ timestamp: TIMESTAMP
+ config-timestamp: TIMESTAMP
+ crtcs: LISTofCRTC
+ outputs: LISTofOUTPUT
+ modes: LISTofMODEINFO
+└───
+ Errors: Window
+
+ RRGetScreenResources returns the list of outputs and crtcs connected
+ to the screen associated with 'window'.
+
+ 'timestamp' indicates when the configuration was last set.
+
+ 'config-timestamp' indicates when the configuration information last
+ changed. Requests to configure the output will fail unless the
+ timestamp indicates that the information the client is using is up
+ to date, to ensure clients can be well behaved in the face of race
+ conditions.
+
+ 'crtcs' contains the list of CRTCs associated with the screen.
+
+ 'outputs' contains the list of outputs associated with the screen.
+
+ 'modes' contains the list of modes associated with the screen
+
+ This request explicitly asks the server to ensure that the
+ configuration data is up-to-date wrt the hardware. If that requires
+ polling, this is when such polling would take place. If the
+ current configuration is all that's required, use
+ RRGetScreenResourcesCurrent instead.
+
+┌───
+ RRGetOutputInfo
+ output: OUTPUT
+ config-timestamp: TIMESTAMP
+ ▶
+ status: RRCONFIGSTATUS
+ timestamp: TIMESTAMP
+ crtc: CRTC
+
+ name: STRING
+ connection: CONNECTION
+ subpixel-order: SUBPIXELORDER
+ widthInMillimeters, heightInMillimeters: CARD32
+ crtcs: LISTofCRTC
+ clones: LISTofOUTPUT
+ modes: LISTofMODE
+ num-preferred: CARD16
+└───
+ Errors: Output
+
+ RRGetOutputInfo returns information about the current and available
+ configurations 'output'.
+
+ If 'config-timestamp' does not match the current configuration
+ timestamp (as returned by RRGetScreenResources), 'status' is set to
+ InvalidConfigTime and the remaining reply data is empty. Otherwise,
+ 'status' is set to Success.
+
+ 'timestamp' indicates when the configuration was last set.
+
+ 'crtc' is the current source CRTC for video data, or Disabled if the
+ output is not connected to any CRTC.
+
+ 'name' is a UTF-8 encoded string designed to be presented to the
+ user to indicate which output this is. E.g. "S-Video" or "DVI".
+
+ 'connection' indicates whether the hardware was able to detect a
+ device connected to this output. If the hardware cannot determine
+ whether something is connected, it will set this to
+ UnknownConnection.
+
+ 'subpixel-order' contains the resulting subpixel order of the
+ connected device to allow correct subpixel rendering.
+
+ 'widthInMillimeters' and 'heightInMillimeters' report the physical
+ size of the displayed area. If unknown, or not really fixed (e.g.,
+ for a projector), these values are both zero.
+
+ 'crtcs' is the list of CRTCs that this output may be connected to.
+ Attempting to connect this output to a different CRTC results in a
+ Match error.
+
+ 'clones' is the list of outputs which may be simultaneously
+ connected to the same CRTC along with this output. Attempting to
+ connect this output with an output not in the 'clones' list
+ results in a Match error.
+
+ 'modes' is the list of modes supported by this output. Attempting to
+ connect this output to a CRTC not using one of these modes results
+ in a Match error.
+
+ The first 'num-preferred' modes in 'modes' are preferred by the
+ monitor in some way; for fixed-pixel devices, this would generally
+ indicate which modes match the resolution of the output device.
+
+┌───
+ RRListOutputProperties
+ output:OUTPUT
+ ▶
+ atoms: LISTof ATOM
+└───
+ Errors: Output
+
+ This request returns the atoms of properties currently defined on
+ the output.
+
+┌───
+ RRQueryOutputProperty
+ output: OUTPUT
+ property: ATOM
+ ▶
+ pending: BOOL
+ range: BOOL
+ immutable: BOOL
+ valid-values: LISTofINT32
+└───
+ Errors: Name, Atom, Output
+
+ If the specified property does not exist for the specified output,
+ then a Name error is returned.
+
+ If 'pending' is TRUE, changes made to property values with
+ RRChangeOutputProperty will be saved in the pending property value
+ and be automatically copied to the current value on the next
+ RRSetCrtcConfig request involving the named output. If 'pending' is
+ FALSE, changes are copied immediately.
+
+ If 'range' is TRUE, then the valid-values list will contain
+ precisely two values indicating the minimum and maximum allowed
+ values. If 'range' is FALSE, then the valid-values list will contain
+ the list of possible values; attempts to set other values will
+ result in a Value error.
+
+ If 'immutable' is TRUE, then the property configuration cannot be
+ changed by clients. Immutable properties are interpreted by the X
+ server.
+
+┌───
+ RRConfigureOutputProperty
+ output: OUTPUT
+ property: ATOM
+ pending: BOOL
+ range: BOOL
+ valid-values: LISTofINT32
+└───
+ Errors: Access, Name, Atom, Output
+
+ If the specified property is 'immutable', an Access error is
+ returned.
+
+ Otherwise, the configuration of the specified property is changed to
+ the values provided in this request.
+
+ If the specified property does not exist for the specified output,
+ it is created with an empty value and None type.
+
+┌───
+ RRChangeOutputProperty
+ output: OUTPUT
+ property, type: ATOM
+ format: {8, 16, 32}
+ mode: { Replace, Prepend, Append }
+ data: LISTofINT8 or LISTofINT16 or LISTofINT32
+└───
+ Errors: Alloc, Atom, Match, Value, Output
+
+ This request alters the value of the property for the specified
+ output. If the property is marked as a 'pending' property, only the
+ pending value of the property is changed. Otherwise, changes are
+ reflected in both the pending and current values of the property.
+ The type is uninterpreted by the server. The format specifies
+ whether the data should be viewed as a list of 8-bit, 16-bit, or
+ 32-bit quantities so that the server can correctly byte-swap as
+ necessary.
+
+ If the mode is Replace, the previous property value is discarded.
+ If the mode is Prepend or Append, then the type and format must
+ match the existing property value (or a Match error results). If
+ the property is undefined, it is treated as defined with the correct
+ type and format with zero-length data.
+
+ For Prepend, the data is tacked on to the beginning of the existing
+ data, and for Append, it is tacked on to the end of the existing data.
+
+ This request generates a OutputPropertyNotify
+
+ The lifetime of a property is not tied to the storing client.
+ Properties remain until explicitly deleted, until the output is
+ destroyed, or until server reset (see section 10).
+
+ The maximum size of a property is server-dependent and may vary
+ dynamically.
+
+┌───
+ RRDeleteOutputProperty
+ output: OUTPUT
+ property: ATOM
+└───
+ Errors: Atom, Output
+
+ This request deletes the property from the specified window if the
+ property exists and generates a OutputPropertyNotify event unless
+ the property does not exist.
+
+┌───
+ RRGetOutputProperty
+ output: OUTPUT
+ property: ATOM
+ type: ATOM or AnyPropertyType
+ long-offset, long-length: CARD32
+ delete: BOOL
+ pending: BOOL
+ ▶
+ type: ATOM or None
+ format: {0, 8, 16, 32}
+ bytes-after: CARD32
+ value: LISTofINT8 or LISTofINT16 or LISTofINT32
+└───
+ Errors: Atom, Value, Output
+
+ If the specified property does not exist for the specified output,
+ then the return type is None, the format and bytes-after are zero,
+ and the value is empty. The delete argument is ignored in this
+ case.
+
+ If the specified property exists but its type does not match the
+ specified type, then the return type is the actual type of the
+ property, the format is the actual format of the property (never
+ zero), the bytes-after is the length of the property in bytes (even
+ if the format is 16 or 32), and the value is empty. The delete
+ argument is ignored in this case.
+
+ If the specified property exists and either AnyPropertyType is
+ specified or the specified type matches the actual type of the
+ property, then the return type is the actual type of the property,
+ the format is the actual format of the property (never zero), and
+ the bytes-after and value are as follows, given:
+
+ N = actual length of the stored property in bytes
+ (even if the format is 16 or 32)
+ I = 4 × offset
+ T = N - I
+ L = MINIMUM(T, 4 × long-length)
+ A = N - (I + L)
+
+ If 'pending' is true, and if the property holds a pending value,
+ then the value returned will be the pending value of the property
+ rather than the current value. The returned value starts at byte
+ index I in the property (indexing from 0), and its length in bytes
+ is L. However, it is a Value error if long-offset is given such
+ that L is negative. The value of bytes-after is A, giving the
+ number of trailing unread bytes in the stored property. If delete
+ is True and the bytes-after is zero, the property is also deleted
+ from the output, and a RROutputPropertyNotify event is generated.
+
+┌───
+ RRCreateMode
+ window: WINDOW
+ modeinfo: MODEINFO
+ ▶
+ mode: MODE
+└───
+ Errors: Window, Name, Value
+
+ 'modeinfo' provides a new mode for outputs on the screen
+ associated with 'window'. If the name of 'modeinfo' names an
+ existing mode, a Name error is returned. If some parameter of the
+ mode is not valid in some other way, a Value error is returned.
+
+ The returned 'mode' provides the id for the mode.
+
+┌───
+ RRDestroyMode
+ mode: MODE
+└───
+ Errors: Mode, Access
+
+ The user-defined 'mode' is destroyed. 'mode' must name a mode
+ defined with RRCreateMode, else an Match error is returned. If
+ 'mode' is in use by some CRTC or Output, then an Access error is
+ returned.
+
+┌───
+ RRAddOutputMode
+ output: OUTPUT
+ mode: MODE
+└───
+ Errors: Output, Mode, Match
+
+ 'output' indicates which output is to be configured.
+
+ 'mode' specifies which mode to add. If 'mode' is not valid for
+ 'output', then a Match error is generated.
+
+ This request generates OutputChangeNotify events.
+
+┌───
+ RRDeleteOutputMode
+ output: OUTPUT
+ mode: MODE
+└───
+ Errors: Output, Mode
+
+ 'output' indicates which output is to be configured.
+
+ 'mode' specifies which mode to delete. 'mode' must have been added
+ with RRAddOutputMode, else an Access error is returned. 'mode' must
+ not be active, else a Match error is returned.
+
+ This request generates OutputChangeNotify events.
+
+┌───
+ RRGetCrtcInfo
+ crtc: CRTC
+ config-timestamp: TIMESTAMP
+ ▶
+ status: RRCONFIGSTATUS
+ timestamp: TIMESTAMP
+ x, y: INT16
+ width, height: CARD16
+ mode: MODE
+ rotation: ROTATION
+ outputs: LISTofOUTPUT
+
+ rotations: SETofROTATION
+ possible-outputs: LISTofOUTPUT
+└───
+
+ Errors: Window
+
+ RRGetCrtcModes returns information about the current and available
+ configurations for the specified crtc connected to the screen
+ associated with 'window'.
+
+ If 'config-timestamp' does not match the current configuration
+ timestamp (as returned by RRGetScreenResources), 'status' is set to
+ InvalidConfigTime and the remaining reply data is empty. Otherwise,
+ 'status' is set to Success.
+
+ 'timestamp' indicates when the configuration was last set.
+
+ 'x' and 'y' indicate the position of this CRTC within the screen
+ region. They will be set to 0 when the CRTC is disabled.
+
+ 'width' and 'height' indicate the size of the area within the screen
+ presented by this CRTC. This may be different than the size of the
+ mode due to rotation. They will be set to 0 when the CRTC
+ is disabled.
+
+ 'mode' indicates which mode is active, or None indicating that the
+ CRTC has been disabled and is not displaying the screen contents.
+
+ 'rotation' indicates the active rotation. It is set to Rotate_0
+ when the CRTC is disabled.
+
+ 'outputs' is the list of outputs currently connected to this CRTC
+ and is empty when the CRTC is disabled.
+
+ 'rotations' contains the set of rotations and reflections supported
+ by the CRTC.
+
+ 'possible-outputs' lists all of the outputs which may be connected
+ to this CRTC.
+
+┌───
+ RRSetCrtcConfig
+ crtc: CRTC
+ timestamp: TIMESTAMP
+ config-timestamp: TIMESTAMP
+ x, y: INT16
+ mode: MODE
+ rotation: ROTATION
+ outputs: LISTofOUTPUT
+ ▶
+ status: RRCONFIGSTATUS
+ new-timestamp: TIMESTAMP
+└───
+ Errors: Value, Match
+
+ If 'timestamp' is less than the time when the configuration was last
+ successfully set, the request is ignored and InvalidTime returned in
+ status.
+
+ If 'config-timestamp' is not equal to when the monitor's
+ configuration last changed, the request is ignored and
+ InvalidConfigTime returned in status. This could occur if the
+ monitor changed since you last made a RRGetScreenInfo request,
+ perhaps by a different monitor being connected to the machine.
+ Rather than allowing an incorrect call to be executed based on stale
+ data, the server will ignore the request.
+
+ 'x' and 'y' contain the desired location within the screen for this
+ monitor's content. 'x' and 'y' must be within the screen size, else
+ a Value error results.
+
+ 'mode' is either the desired mode or None indicating the CRTC should
+ be disabled. If 'mode' is not one of these values, a Value
+ error results. 'mode' must be valid for all of the configured outputs,
+ else a Match error.
+
+ 'rotation' contains the desired rotation along with which
+ reflections should be enabled. The rotation and reflection values
+ must be among those allowed for this monitor, else a Value error
+ results.
+
+ 'outputs' contains the set of outputs that this CRTC should be
+ connected to. The set must be among the list of acceptable output
+ sets for this CRTC or a Match error results.
+
+ If 'mode' is None, then 'outputs' must be empty, else a Match error
+ results. Conversely, if 'mode' is not None, then 'outputs' must not be
+ empty, else a Match error results.
+
+ This request may fail for other indeterminate reasons, in which case
+ 'status' will be set to Failed and no configuration change will be
+ made.
+
+ This request sets the CRTC to the specified position, mode, rotation
+ and reflection. The entire area of the CRTC must fit within the
+ screen size, else a Match error results. As an example, rotating the
+ screen so that a single CRTC fills the entire screen before and
+ after may necessitate disabling the CRTC, resizing the screen,
+ then re-enabling the CRTC at the new configuration to avoid an
+ invalid intermediate configuration.
+
+ If panning is enabled, the width and height of the panning and the
+ tracking areas are clamped to the new mode size.
+ Disabled panning axes remain disabled.
+ Panning borders are disabled if their requirements are no longer met
+ (see RRSetPanning).
+
+ When this request succeeds, 'status' contains Success and the
+ requested changes to configuration will have been made.
+
+ 'new-time-stamp' contains the time at which this request was
+ executed.
+
+┌───
+ RRGetCrtcGammaSize
+ crtc: CRTC
+ ▶
+ size: CARD16
+└───
+ Errors: Crtc
+
+ This request returns the size of the gamma ramps used by 'crtc'.
+
+┌───
+ RRGetCrtcGamma
+ crtc: CRTC
+ ▶
+ red: LISTofCARD16
+ green: LISTofCARD16
+ blue: LISTofCARD16
+└───
+ Errors: Crtc
+
+ This request returns the currently set gamma ramps for 'crtc'. All
+ three lists will be the size returned by the RRGetCrtcGammaSize
+ request.
+
+┌───
+ RRSetCrtcGamma
+ crtc: CRTC
+ red: LISTofCARD16
+ green: LISTofCARD16
+ blue: LISTofCARD16
+└───
+ Errors: Crtc, Match
+
+ This request sets the gamma ramps for 'crtc'. All three lists
+ must be the size returned by RRGetCrtcGammaSize else a Value error
+ results.
+
+7.2. Extension Requests added in version 1.3 of the extension
+
+┌───
+ RRGetScreenResourcesCurrent
+ window: WINDOW
+ ▶
+ timestamp: TIMESTAMP
+ config-timestamp: TIMESTAMP
+ crtcs: LISTofCRTC
+ outputs: LISTofOUTPUT
+ modes: LISTofMODEINFO
+└───
+ Errors: Window
+
+ RRGetScreenResourcesCurrent returns the list of outputs and crtcs
+ connected to the screen associated with 'window'.
+
+ 'timestamp' indicates when the configuration was last set.
+
+ 'config-timestamp' indicates when the configuration information last
+ changed. Requests to configure the output will fail unless the
+ timestamp indicates that the information the client is using is up
+ to date, to ensure clients can be well behaved in the face of race
+ conditions.
+
+ 'crtcs' contains the list of CRTCs associated with the screen.
+
+ 'outputs' contains the list of outputs associated with the screen.
+
+ 'modes' contains the list of modes associated with the screen.
+
+ Unlike RRGetScreenResources, this merely returns the current
+ configuration, and does not poll for hardware changes.
+
+┌───
+ RRSetCrtcTransform
+ crtc: CRTC
+ transform: TRANSFORM
+ filter: STRING8
+ values: LISTofFIXED
+└───
+ Errors: Crtc, Match
+
+ This request provides a mechanism that is more general than the
+ existing rotation and reflection values for describing the
+ transformation from frame buffer image to crtc presentation.
+ 'transform' is a full 2D projective transformation from screen
+ coordinate space to crtc coordinate space. This transformation is
+ applied before the rotation and reflection values to compute the
+ complete transform.
+
+ 'filter' and 'values' specify a Render filter that may be used by the
+ server when transforming data from frame buffer to crtc.
+
+ This request sets the transform to be used at the next
+ RRSetCrtcConfig request execution; it does not cause any change to
+ occur in the current configuration.
+
+ When a non-identity transformation is in use, the rectangle returned
+ by RRGetCrtcInfo defines the bounding rectangle of the screen that is
+ projected to the crtc. It is this projected rectangle which must be
+ within the area of the screen when the mode is set.
+
+┌───
+ RRGetCrtcTransform
+ crtc: CRTC
+ ▶
+ pending-transform: TRANSFORM
+ pending-filter: STRING8
+ pending-values: LISTofFIXED
+ current-transform: TRANSFORM
+ current-filter: STRING8
+ current-values: LISTofFIXED
+└───
+
+ This request returns the pending and current transforms for the
+ specified CRTC. The pending transform will be the same as the current
+ transform if no new pending transform has been set since the last call
+ to RRSetCrtcConfig.
+
+┌───
+ RRGetPanning
+ crtc: CRTC
+ ▶
+ status: RRCONFIGSTATUS
+ timestamp: TIMESTAMP
+ left, top, width, height: CARD16
+ track_left, track_top, track_width, track_height: CARD16
+ border_left, border_top, border_right, border_bottom: INT16
+└───
+
+ Errors: Crtc
+
+ Version 1.3 adds panning support again. If multiple crtcs are active
+ the panning behavior can be defined per crtc individually.
+ RRGetPanning returns information about the currently set panning
+ configuration for the specified crtc. If the CRTC does not support
+ panning, all fields (except timestamp) will be 0.
+
+ 'timestamp' indicates when the configuration was last set.
+
+ All other entries are explained for RRSetPanning.
+
+┌───
+ RRSetPanning
+ crtc: CRTC
+ timestamp: TIMESTAMP
+ left, top, width, height: CARD16
+ track_left, track_top, track_width, track_height: CARD16
+ border_left, border_top, border_right, border_bottom: INT16
+ ▶
+ status: RRCONFIGSTATUS
+ new-timestamp: TIMESTAMP
+└───
+ Errors: Crtc, Match
+
+ This request sets the panning parameters. As soon as panning is
+ enabled, the CRTC position can change with every pointer move.
+ RRCrtcChangeNotify events are sent to the clients requesting those.
+
+ If 'timestamp' is less than the time when the configuration was last
+ successfully set, the request is ignored and InvalidTime returned in
+ status.
+
+ ┌──┳━━━━━━━━━━━━━━┳─────┬ ─ ─ ─ ─ ─ ┐
+ │ ┃ CRTC ┃ │
+ │ ┃ ┃ │ │
+ │ ┃ X┃→ │
+ │ ┃ ┃ │ │ framebuffer
+ │ ┗━━━━━━━━━━━━━━┛ │
+ │ │ │
+ │panning area │
+ └───────────────────────┴ ─ ─ ─ ─ ─ ┘
+
+ 'left', 'top', 'width', and 'height' contain the total panning area
+ for this CRTC. 'width' has to be larger than or equal to the CRTC's
+ width or 0, and 'left'+'width' must be within the screen size, else a
+ Match error results. Equivalent restrictions for the height exist.
+ 'width' or 'height' set to 0 indicate that panning should be disabled
+ on the according axis. Setting 'width'/'height' to the CRTC's
+ width/height will disable panning on the X/Y axis as well, but
+ RRSetScreenSize will silently enable panning if the screen size is
+ increased. This does not happen if set to 0.
+
+ ┌────────┳━━━━━━━━━━━━━━┳ ─ ─ ─ ─ ─ ┐
+ │ ┃ CRTC ┃
+ │ ┃ ┃ │
+ │ ┃ ┃
+ │ ┃ ┃ │ tracking area
+ │ ┗━━━━━━━━━━━━━━┫ X
+ │ ↓ │ ↓ │
+ │panning area │
+ └───────────────────────┴ ─ ─ ─ ─ ─ ┘
+
+ 'track_left', 'track_top', 'track_width', and 'track_height' contain
+ the pointer area for which the panning region is updated. For normal
+ use cases it should enclose the panning area minus borders, and is
+ typically set to either the panning area minus borders, or to the
+ total screen size. If set to the total screen size, the CRTC will pan
+ in the remaining axis even if the pointer is outside the panning area
+ on a different CRTC, as shown in the figure above. If the pointer is
+ outside the tracking area, the CRTC will not pan. Zero can be used as
+ an alias for the total screen size.
+
+ ┌──┳━━━━━━━━━━━━━━┳────────────┐
+ │ ┃ CRTC ┃ │
+ │ ┃ ┃ │
+ │ ┃ ┃→ │
+ │ ┃ X←→┃ │
+ │ ┃ border_right │
+ │ ┗━━━━━━━━━━━━━━┛ │
+ │ │
+ │panning area │
+ └──────────────────────────────┘
+
+ 'border_left', 'border_top', 'border_right', and 'border_bottom'
+ define the distances from the CRTC borders that will activate panning
+ if the pointer hits them. If the borders are 0, the screen will pan
+ when the pointer hits the CRTC borders (behavior of pre-RandR Xserver
+ panning). If the borders are positive, the screen will pan when the
+ pointer gets close to the CRTC borders, if they are negative, the
+ screen will only pan when the pointer is already way past the CRTC
+ borders. Negative values might confuse users and disable panning to
+ the very edges of the screen. Thus they are discouraged.
+ border_left + border_right has to be lower or equal than the CRTC's
+ width, else a Match error results. An equivalent restriction for the
+ height exists.
+
+ Screen size changes update the panning and the tracking areas to the
+ new size. Both screen size changes and mode changes clamp these areas
+ to the current CRTC size. In these cases panning borders are disabled
+ if their requirements are no longer met.
+
+ When this request succeeds, 'status' contains Success and the
+ requested changes to configuration will have been made.
+
+ 'new-time-stamp' contains the time at which this request was
+ executed.
+
+┌───
+ RRSetOutputPrimary
+ window: WINDOW
+ output: OUTPUT
+└───
+ Errors: Match, Output, Window
+
+ RRSetOutputPrimary marks 'output' as the primary output for the
+ screen with the same root window as 'window'. This output's CRTC
+ will be sorted to the front of the list in Xinerama and RANDR
+ geometry requests for the benefit of older applications. The
+ default primary output is None, and None is a legal value to pass
+ to RRSetOutputPrimary. This request is expected to be used by
+ desktop environments to mark the screen that should hold the primary
+ menu bar or panel.
+
+ As this changes the logical layout of the screen, ConfigureNotify
+ and RRScreenChangeNotify will be generated on the appropriate root
+ window when the primary output is changed by this call. This request
+ also generates RROutputChangeNotify events on the outputs that gained
+ and lost primary status.
+
+ If an output is disconnected asynchronously (eg. due to recabling),
+ the primary status does not change, but RROutputChangeNotify events
+ will be generated if the hardware is capable of detecting this;
+ clients are expected to reconfigure if appropriate.
+
+ If an output is deleted (eg. due to device hotplug), the server will
+ act as though None was passed to RRSetOutputPrimary, including
+ generating the appropriate events.
+
+┌───
+ RRGetOutputPrimary
+ window: WINDOW
+ ▶
+ output: OUTPUT
+└───
+ Errors: Window
+
+ RRGetOutputPrimary returns the primary output for the screen.
+
+ ❧❧❧❧❧❧❧❧❧❧❧
+
+7.3. Extension Requests added in version 1.4 of the extension.
+
+┌───
+ RRQueryScanoutPixmaps
+ window: WINDOW
+ ▶
+ infos: LISTofSCANOUTPIXMAPINFO
+└───
+ Errors: Window
+
+ This request returns information about the server support for
+ alternate scanout pixmaps. For each pictformat, there is a set
+ of rotations and a maximum supported size. The rotations here
+ are those provided by the scanout hardware itself, not by
+ software emulation.
+
+┌───
+ RRCreateScanoutPixmap
+ pixmap: PIXMAP
+ drawable: DRAWABLE
+ width, height: CARD16
+ format: PICTFORMAT
+ rotations: SETofROTATION
+└───
+ Errors: Drawable, Match, Value
+
+ Creates a pixmap which can subsequently be used as a scanout
+ buffer for the screen associated with 'drawable'. 'rotations'
+ is the set of rotation values which may be used with the
+ resulting scanout buffer when it is associated with a CRTC.
+
+ 'format' must be one of the supported scanout formats, or a
+ Match error results.
+
+ 'width' and 'height' must be within the supported range for
+ the specified format or a Value error results.
+
+ 'rotations' must be a subset of those supported for the
+ specified format or a Match error results.
+
+┌───
+ RRSetCrtcSpriteTransform
+ crtc: CRTC
+ position-transform: TRANSFORM
+ image-transform: TRANSFORM
+└───
+ Sets the sprite transforms for the specified crtc, any sprites
+ presented on this crtc will have their positions transformed
+ by the position-transform matrix. Sprite images displayed on the crtc
+ will be transformed by the image-transform matrix.
+
+┌───
+ RRGetCrtcSpriteTransform
+ crtc: CRTC
+ ▶
+ position-transform: TRANSFORM
+ image-transform: TRANSFORM
+└───
+ Gets the sprite transforms for the specified crtc.
+
+┌───
+ RRSetCrtcConfigs
+ drawable: DRAWABLE
+ set: SETofSCREENFLAG
+ screen-pixmap-width: CARD16
+ screen-pixmap-height: CARD16
+ screen-width: CARD16
+ screen-height: CARD16
+ width-in-millimeters: CARD32
+ height-in-millimeters: CARD32
+ configs: LISTofCRTCCONFIG
+ ▶
+ status: RRCONFIGSTATUS
+└───
+ Errors: Value, Match
+
+ This works much like RRSetScreenSize followed by a sequence of
+ RRSetCrtcConfig, except that the entire configuration can be set
+ in a single operation, either succeeding or failing without
+ any partial execution.
+
+ If 'set' includes 'SetScreenPixmapSize', then
+ 'screen-pixmap-width' and 'screen-pixmap-height' specify the
+ new screen pixmap size.
+
+ If 'set' includes 'SetScreenSize', then 'screen-width' and
+ 'screen-height' specify the new screen size.
+
+ If 'set' includes 'SetScreenSizeInMillimeters', then
+ 'width-in-millimeters' and 'height-in-millimeters' specify
+ the new screen physical size.
+
+ If 'set' includes 'SetScreenCrtcs', then 'configs' includes
+ the list of new CRTC configurations.
+
+ In addition to the pre-1.4 semantics, this request adds the
+ ability to specific a scanout pixmap for each crtc, and
+ integrates the 1.4 sprite transform request as well.
+
+ ❧❧❧❧❧❧❧❧❧❧❧
+
+8. Extension Events
+
+Clients MAY select for ConfigureNotify on the root window to be
+informed of screen changes. This may be advantageous if all your
+client needs to know is the size of the root window, as it avoids
+round trips to set up the extension.
+
+RRScreenChangeNotify is sent if RRSelectInput has requested it
+whenever properties of the screen change, which may be due to external
+factors, such as re-cabling a monitor, etc.
+
+┌───
+ RRScreenChangeNotify
+
+ rotation: ROTATION; new rotation
+ sequenceNumber: CARD16 low 16 bits of request seq. number
+ timestamp: TIMESTAMP time screen was changed
+ configTimestamp: TIMESTAMP time config data was changed
+ root: WINDOW root window of screen
+ window: WINDOW window requesting notification
+ size-id: SIZEID index of new SCREENSIZE
+ subpixelOrder: SUBPIXELORDER order of subpixels
+ widthInPixels: CARD16 width in pixels of the new SCREENSIZE
+ heightInPixels: CARD16 height in pixels of the new SCREENSIZE
+ widthInMillimeters: CARD16 width in mm of the new SCREENSIZE
+ heightInMillimeters: CARD16 height in mm of the new SCREENSIZE
+└───
+ This event is generated whenever the screen configuration is changed
+ and sent to requesting clients. 'timestamp' indicates when the
+ screen configuration was changed. 'configTimestamp' says when the
+ last time the configuration was changed. 'root' is the root of the
+ screen the change occurred on, 'window' is window selecting for this
+ event. 'size-id' contains the index of the current size.
+
+ This event is sent whenever the screen's configuration changes
+ or if a new screen configuration becomes available that was
+ not available in the past. In this case (config-timestamp in
+ the event not being equal to the config-timestamp returned in
+ the last call to RRGetScreenInfo), the client MUST call
+ RRGetScreenInfo to update its view of possible screen
+ configurations to have a correct view of possible screen
+ organizations.
+
+ Clients which select screen change notification events may be
+ sent an event immediately if the screen configuration was
+ changed between when they connected to the X server and
+ selected for notification. This is to prevent a common race
+ that might occur on log-in, where many applications start up
+ just at the time when a display manager or log in script might
+ be changing the screen size or configuration.
+
+ Note that the sizes in this event reflect the new SCREENSIZE and
+ thus will appear rotated by the 'rotation' parameter from the sizes
+ of the screen itself. In other words, when rotation is 90 or 270,
+ widthInPixels in this event will be the same as the height value
+ from a ConfigureNotify that reflects the same size change. This
+ will probably confuse developers.
+
+8.1 Events added in version 1.2 of the RandR extension
+
+┌───
+ RROutputChangeNotify:
+ timestamp: TIMESTAMP time screen was reconfigured
+ config-timestamp: TIMESTAMP time available config data was changed
+ window: WINDOW window requesting notification
+ output: OUTPUT output affected by change
+ crtc: CRTC connected CRTC or None
+ mode: MODE mode in use on CRTC or None
+ connection: CONNECTION connection status
+└───
+
+ This event is generated whenever the available output configurations
+ have changed and is sent to requesting clients. 'timestamp'
+ indicates when the crtc configuration was changed by a client.
+ 'config-timestamp' says when the last time the available
+ configurations changed. 'root' is the root of the screen the change
+ occurred on, 'window' is window selecting for this event. The
+ precise change can be detected by examining the new state of the
+ system.
+
+┌───
+ RROutputPropertyNotify:
+ window: WINDOW window requesting notification
+ output: OUTPUT output affected by change
+ atom: ATOM affected property
+ time: TIMESTAMP time property was changed
+ subpixel-order: SUBPIXELORDER order of subpixels
+ state: { NewValue, Deleted } new property state
+└───
+
+ This event is reported to clients selecting RROutputPropertyChange
+ on the window and is generated with state NewValue when a property
+ of the window is changed using RRChangeOutputProperty even when
+ adding zero-length data and when replacing all or part of a property
+ with identical data. It is generated with state Deleted when a
+ property of the window is deleted using either
+ RRDeleteOutputProperty or RRGetOutputProperty. The timestamp
+ indicates the server time when the property was changed.
+
+┌───
+ RRCrtcChangeNotify
+ timestamp: TIMESTAMP time monitor was changed
+ window: WINDOW window requesting notification
+ crtc: CRTC CRTC which changed
+ mode: MODE new mode
+ rotation: ROTATION; new rotation
+ x: INT16 x position of CRTC within screen
+ y: INT16 y position of CRTC within screen
+ width: CARD16 width of new mode
+ height: CARD16 height of new mode
+└───
+ This event is generated whenever the CRTC configuration is changed
+ and sent to requesting clients. 'timestamp' indicates when the
+ CRTC configuration was changed. 'window' is window selecting for this
+ event. 'mode' is the new mode, or None if the crtc is disabled.
+ 'x' and 'y' mark the location in the screen where this CRTC
+ is reading data. 'width' and 'height' indicate the size of the
+ mode. 'x', 'y, 'width' and 'height' are all zero when 'mode' is None.
+
+ This event is sent whenever the monitor's configuration changes
+ or if a new monitor configuration becomes available that was
+ not available in the past. In this case, the client MUST call
+ RRGetCrtcModes to update its view of possible monitor
+ configurations to have a correct view of possible monitor
+ organizations.
+
+ Clients which select monitor change notification events may be
+ sent an event immediately if the monitor configuration was
+ changed between when they connected to the X server and
+ selected for notification. This is to prevent a common race
+ that might occur on log-in, where many applications start up
+ just at the time when a display manager or log in script might
+ be changing the monitor size or configuration.
+
+ ❧❧❧❧❧❧❧❧❧❧❧
+
+9. Properties
+
+Properties are used for output specific parameters, and for announcing
+static or rarely changing data. Announced data is typically
+immutable. Properties are also used for evaluating new parameters
+before adding them to the RandR protocol.
+
+The following properties are hereby declared official, and drivers SHOULD
+prefix driver specific properties with '_', unless they are planned to be
+added to this specification. List values, that are not declared by the table
+below, and will remain driver specific or are not planned to be added to this
+specification, SHOULD be prefixed with "_" as well in order to avoid name
+space or semantics clashes with future extensions of these values.
+
+Beginning with version 1.3 of the RandR extension, certain properties
+are mandatory and MUST be provided by implementations. Earlier
+versions of the RandR extension MAY provide these properties as well,
+as long as the semantics are not altered. Clients SHOULD fall back
+gracefully to lower version functionality, though, if the driver
+doesn't handle a mandatory property correctly.
+
+9.1 Known properties
+
+ "Backlight" aka RR_PROPERTY_BACKLIGHT
+ Type: int32
+ Flags: -
+ Range/List: 0-x (driver specific)
+
+ This property controls the brightness on laptop panels and equivalent
+ displays with a backlight controller. The driver specific maximum
+ value MUST turn the backlight to full brightness, 1 SHOULD turn the
+ backlight to minimum brightness, 0 SHOULD turn the backlight off.
+
+ "CloneList" aka RR_PROPERTY_CLONE_LIST
+ Type: int32 [2*n] / Atom pairs
+ Flags: Immutable
+ Range/List: 0-
+
+ Some combinations of outputs on some cards cannot be served
+ independently from each other, because they are wired up to the same
+ encoder outputs.
+ This property lists all output + signal format pairs that are
+ driven together with this output, and thus can only be programmed in
+ clone mode with the same CRTC.
+ This property MUST be symmetric, but may change with changing signal
+ format. I.e. if the property for DVI-1/VGA specifies VGA-1/VGA to be
+ cloned, VGA-1/VGA has to list DVI-1/VGA as well.
+ Outputs / format pairs listed in this property MUST be included in the
+ CompatibilityList.
+
+ "CompatibilityList" aka RR_PROPERTY_COMPATIBILITY_LIST
+ Type: int32 [2*n] / Atom pairs
+ Flags: Immutable
+ Range/List: 0-
+
+ Some combinations of outputs on some cards cannot be served at all,
+ because the according encoder is only capable of driving one output at
+ a time.
+ This property lists all output + signal format pairs that can be
+ driven together with this output. NULL atoms specify any output / any
+ signal format, respectively.
+ This property MUST be symmetric, but may change with changing signal
+ format. I.e. if the property for DVI-1/TMDS specifies VGA-1/VGA to be
+ available, VGA-1/VGA has to list DVI-1/TMDS as well.
+
+ "ConnectorNumber" aka RR_PROPERTY_CONNECTOR_NUMBER
+ Type: int32
+ Flags: Immutable, Static
+ Range/List: 0-
+
+ Outputs that route their signal to the same connector MUST
+ have the same connector number. Outputs with the same
+ connector number MUST route their signal to the same
+ connector, except if it is 0, which indicates unknown
+ connectivity. 1 is called the primary connector, 2 the
+ secondary. 3 is typically a TV connector, but that is completely
+ driver / hardware dependent.
+ Outputs with the same connector number SHOULD have the same
+ connector type. Meaning and client behavior for mismatching
+ connector types is undefined at the moment.
+
+ "ConnectorType" aka RR_PROPERTY_CONNECTOR_TYPE
+ Type: int32 / Atom
+ Flags: Immutable, Static
+ Range/List: unknown VGA DVI DVI‐I DVI‐A DVI‐D HDMI Panel
+ TV TV-Composite TV-SVideo TV-Component
+ TV-SCART TV-C4 DisplayPort
+
+ Connector type, as far as known to the driver.
+ Values with dashes (TV‐Composite) describe more specific versions of
+ the base values (TV). The former SHOULD be used if the connector is
+ not capable of producing other signal formats. The later SHOULD be
+ used if the exact connector is unknown, or the connector is a
+ multi‐format connector that is not described otherwise. DVI, for
+ instance, SHOULD be handled like a DVI‐I connector, unless additional
+ information is available to the user agent. PANEL describes
+ laptop‐internal (normally LVDS) displays. TV, TV‐SCART, TV‐Component,
+ and TV‐C4 with signal format VGA are valid combinations and describe
+ RGB TV signals.
+
+ "EDID" aka RR_PROPERTY_RANDR_EDID
+ Type: int8 [n]
+ Flags: Immutable
+ Range/List: -
+
+ Raw EDID data from the device attached to the according
+ output. Should include main EDID data and all extension
+ blocks. Previously known as EdidData.
+
+ "SignalFormat" aka RR_PROPERTY_SIGNAL_FORMAT
+ Type: int32 / Atom
+ Flags: -
+ Range/List: unknown VGA TMDS LVDS Composite Composite-PAL
+ Composite-NTSC Composite-SECAM SVideo
+ Component DisplayPort
+
+ Signal format / physical protocol format that is used for the
+ specified output. valid-values lists all possible formats on this
+ output, which SHOULD be a subset of the list above and MUST be static.
+ Values with dashes (Composite-PAL) describe more specific versions of
+ the base values (Composite) and SHOULD be used if known to the driver.
+ A driver MAY change this property of an output if the underlying
+ hardware indicates a protocol change (e.g. TV formats). Clients are
+ allowed to change the signal format in order to select a different
+ signal format (e.g. Composite etc.) or physical protocol (e.g. VGA or
+ TMDS on DVI-I).
+ Laptop panels SHOULD not be detected with this property, but rather by
+ ConnectorType.
+
+ "SignalProperties" aka RR_PROPERTY_SIGNAL_FORMAT
+ Type: int32 [n] / Atom
+ Flags: -
+ Range/List: For Composite signals:
+ NTSC NTSC-M NTSC-J NTSC-N NTSC-4.43 NTSC-film
+ PAL PAL-B PAL-G PAL-H PAL-H PAL-I PAL-M PAL-D
+ PAL-N PAL-Nc PAL-L PAL-60
+ SECAM SECAM-L SECAM-B SECAM-G SECAM-D SECAM-K
+ SECAM-H SECAM-K
+ For TMDS signals:
+ SingleLink DualLink
+ For DisplayPort signals:
+ Lane1 Lane2 Lane4 LowSpeed HiSpeed
+
+ Properties of the signal format that is currently used for the
+ specified output. valid-values lists all possible properties on this
+ output, which SHOULD be a subset of the list above. It will change if
+ SignalFormat changes. Multiple properties are allowed.
+ Values with dashes (PAL-B) describe more specific versions of the base
+ values (PAL) and SHOULD be used if known to the driver. A driver MAY
+ change this property of an output if the underlying hardware indicates
+ a signal change (e.g. TV formats). Clients are allowed to change the
+ properties in order to select a different signal subformat.
+
+
+9.2 Properties introduced with version 1.2 of the RandR extension
+
+Property Immutable Mandatory since
+──────── ───────── ───────────────
+EDID yes n/a
+
+EDID is provided by the RandR frontend, thus not driver specific.
+
+
+9.3 Properties introduced with version 1.3 of the RandR extension
+
+Property Immutable Mandatory since
+──────── ───────── ───────────────
+CloneList yes not mandatory
+CompatibilityList yes not mandatory
+ConnectorNumber yes: static not mandatory
+ConnectorType yes: static RandR 1.3
+SignalFormat no RandR 1.3
+SignalProperties no not mandatory
+
+9.4 Properties introduced with version 1.3.1 of the RandR extension
+
+Property Immutable Mandatory since
+──────── ───────── ───────────────
+Backlight no not mandatory
+
+ ❧❧❧❧❧❧❧❧❧❧❧
+
+10. Extension Versioning
+
+The RandR extension was developed in parallel with the implementation
+to ensure the feasibility of various portions of the design. As
+portions of the extension are implemented, the version number of the
+extension has changed to reflect the portions of the standard provided.
+This document describes the version 1.2 of the specification, the
+partial implementations have version numbers less than that. Here's a
+list of what each version provided:
+
+ 0.0: This prototype implemented resize and rotation in the
+ TinyX server Used approximately the protocol described in
+ the Usenix paper. Appeared in the TinyX server in
+ XFree86 4.2, but not in the XFree86 main server.
+
+ 0.1: Added subpixel order, added an event for subpixel order.
+ This version was never checked in to XFree86 CVS.
+
+ 1.0: Implements resize, rotation, and reflection. Implemented
+ both in the XFree86 main server (size change only at this
+ date), and fully (size change, rotation, and reflection)
+ in XFree86's TinyX server.
+
+ 1.1: Added refresh rates
+
+ 1.2: Separate screens from CRTCs and outputs, switch to full VESA
+ modes
+
+ 1.3: Added cheap version of RRGetScreenResources. Added CRTC
+ transformations. Added panning. Added primary outputs.
+ Added standard properties.
+
+Compatibility between 0.0 and 1.0 was *NOT* preserved, and 0.0 clients
+will fail against 1.0 servers. The wire encoding op-codes were
+changed for GetScreenInfo to ensure this failure in a relatively
+graceful way. Version 1.1 servers and clients are cross compatible with
+1.0. Version 1.1 is considered to be stable and we intend upward
+compatibility from this point. Version 1.2 offers an extended model of the
+system with multiple output support. Version 1.3 adds a cheap version of
+GetScreenResources to avoid expensive DDC operations, CRTC transformations,
+panning, and the primary output concept. 1.2 and 1.3 are backward-compatible
+with 1.1.
+
+ ❧❧❧❧❧❧❧❧❧❧❧
+
+11. Relationship with other extensions
+
+Two other extensions have a direct relationship with this extension. This
+section attempts to explain how these three are supposed to work together.
+
+11.1 XFree86-VidModeExtension
+
+XFree86-VidModeExtension changes the configuration of a single monitor
+attached to the screen without changing the configuration of the screen
+itself. It provides the ability to specify new mode lines for the server to
+use along with selecting among existing mode lines. As it uses screen
+numbers instead of window identifiers, it can be used to affect multiple
+monitors in a single-screen Xinerama configuration. However, the association
+between screen numbers and root windows in a multi-Screen environment is not
+defined by the extension. Version 2.0 of this extension added the ability to
+adjust the DAC values in a TrueColor server to modify the brightness curves
+of the display.
+
+All of the utility of this extension is subsumed by RandR version 1.2, RandR
+should be used in preference to XFree86-VidModeExtension where both are
+present.
+
+11.2 Xinerama
+
+Xinerama provides a mechanism for describing the relationship between the
+overall screen display and monitors placed within that area. As such, it
+provides the query functionality of RandR 1.2 without any of the
+configuration functionality. Applications using Xinerama to discover
+monitor geometry can continue to do so, with the caveat that they will not be
+informed of changes when they occur. However, Xinerama configuration data
+will be updated, so applications selecting for RandR notification and
+re-querying the configuration with the Xinerama extension will get updated
+information. It is probably better to view RandR as a superset of Xinerama
+at this point and use it in preference to Xinerama where both are present.
+
+ ❧❧❧❧❧❧❧❧❧❧❧
+
+Appendix A. Protocol Encoding
+
+Syntactic Conventions
+
+This document uses the same syntactic conventions as the core X
+protocol encoding document.
+
+A.1 Common Types
+
+┌───
+ ROTATION
+ 0x0001 Rotate_0
+ 0x0002 Rotate_90
+ 0x0004 Rotate_180
+ 0x0008 Rotate_270
+ 0x0010 Reflect_X
+ 0x0020 Reflect_Y
+└───
+ Used to encode both sets of possible rotations and individual
+ selected rotations.
+
+┌───
+ RRSELECTMASK
+ 0x0001 ScreenChangeNotifyMask
+ 0x0002 CrtcChangeNotifyMask Added in version 1.2
+ 0x0004 OutputChangeNotifyMask Added in version 1.2
+ 0x0008 OutputPropertyNotifyMask Added in version 1.2
+└───
+ Event select mask for RRSelectInput
+
+┌───
+ RRCONFIGSTATUS
+ 0x0 Success
+ 0x1 InvalidConfigTime
+ 0x2 InvalidTime
+ 0x3 Failed
+└───
+ Return status for requests which depend on time.
+
+┌───
+ MODEINFO (32) Added in version 1.2
+ 4 CARD32 id
+ 2 CARD16 width in pixels
+ 2 CARD16 height in pixels
+ 4 CARD32 dot clock
+ 2 CARD16 h sync start
+ 2 CARD16 h sync end
+ 2 CARD16 h total
+ 2 CARD16 h skew
+ 2 CARD16 v sync start
+ 2 CARD16 v sync end
+ 2 CARD16 v total
+ 2 CARD16 name length
+ 4 SETofMODEFLAG mode flags
+└───
+
+ An output mode specifies the complete CRTC timings for
+ a specific mode. The vertical and horizontal synchronization rates
+ can be computed given the dot clock and the h total/v total
+ values. If the dot clock is zero, then all of the timing
+ parameters and flags are not used, and must be zero as this
+ indicates that the timings are unknown or otherwise unused.
+ The name itself will be encoded separately in each usage.
+
+┌───
+ MODEFLAG
+ 0x00000001 HSyncPositive
+ 0x00000002 HSyncNegative
+ 0x00000004 VSyncPositive
+ 0x00000008 VSyncNegative
+ 0x00000010 Interlace
+ 0x00000020 DoubleScan
+ 0x00000040 CSync
+ 0x00000080 CSyncPositive
+ 0x00000100 CSyncNegative
+ 0x00000200 HSkewPresent
+ 0x00000400 BCast
+ 0x00000800 PixelMultiplex
+ 0x00001000 DoubleClock
+ 0x00002000 ClockDivideBy2
+└───
+┌───
+ CONNECTION
+ 0 Connected
+ 1 Disconnected
+ 2 UnknownConnection
+└───
+
+
+A.2 Protocol Requests
+
+Opcodes 1 and 3 were used in the 0.0 protocols, and will return
+errors if used in version 1.0.
+
+┌───
+ RRQueryVersion
+
+ 1 CARD8 major opcode
+ 1 0 RandR opcode
+ 2 3 length
+ 4 CARD32 major version
+ 4 CARD32 minor version
+ ▶
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 1 CARD32 major version
+ 1 CARD32 minor version
+└───
+┌───
+ RRSetScreenConfig
+
+ 1 CARD8 major opcode
+ 1 2 RandR opcode
+ 2 6 length
+ 4 WINDOW window on screen to be configured
+ 4 TIMESTAMP timestamp
+ 4 TIMESTAMP config timestamp
+ 2 SIZEID size index
+ 2 ROTATION rotation/reflection
+ 2 CARD16 refresh rate (1.1 only)
+ 2 CARD16 pad
+ ▶
+ 1 1 Reply
+ 1 RRCONFIGSTATUS status
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 TIMESTAMP new timestamp
+ 4 TIMESTAMP new configuration timestamp
+ 4 WINDOW root
+ 2 SUBPIXELORDER subpixel order defined in Render
+ 2 CARD16 pad4
+ 4 CARD32 pad5
+ 4 CARD32 pad6
+└───
+┌───
+ RRSelectInput
+
+ 1 CARD8 major opcode
+ 1 4 RandR opcode
+ 2 3 length
+ 4 WINDOW window
+ 2 SETofRRSELECTMASK enable
+ 2 CARD16 pad
+└───
+┌───
+ RRGetScreenInfo
+
+ 1 CARD8 major opcode
+ 1 5 RandR opcode
+ 2 2 length
+ 4 WINDOW window
+ ▶
+ 1 1 Reply
+ 1 CARD8 set of Rotations
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 WINDOW root window
+ 4 TIMESTAMP timestamp
+ 4 TIMESTAMP config timestamp
+ 2 CARD16 number of SCREENSIZE following
+ 2 SIZEID current size index
+ 2 ROTATION current rotation and reflection
+ 2 CARD16 current rate (added in version 1.1)
+ 2 CARD16 length of rate info (number of CARD16s)
+ 2 CARD16 pad
+
+ SCREENSIZE
+ 2 CARD16 width in pixels
+ 2 CARD16 height in pixels
+ 2 CARD16 width in millimeters
+ 2 CARD16 height in millimeters
+
+ REFRESH
+ 2 CARD16 number of rates (n)
+ 2n CARD16 rates
+└───
+
+A.2.1 Protocol Requests added with version 1.2
+
+┌───
+ RRGetScreenSizeRange
+ 1 CARD8 major opcode
+ 1 6 RandR opcode
+ 2 2 length
+ 4 WINDOW window
+ ▶
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 CARD16 minWidth
+ 2 CARD16 minHeight
+ 2 CARD16 maxWidth
+ 2 CARD16 maxHeight
+ 16 unused
+└───
+┌───
+ RRSetScreenSize
+ 1 CARD8 major opcode
+ 1 7 RandR opcode
+ 2 5 length
+ 4 WINDOW window
+ 2 CARD16 width
+ 2 CARD16 height
+ 4 CARD32 width in millimeters
+ 4 CARD32 height in millimeters
+└───
+┌───
+ RRGetScreenResources
+ 1 CARD8 major opcode
+ 1 8 RandR opcode
+ 2 2 length
+ 4 WINDOW window
+ ▶
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 c+o+8m+(b+p)/4 reply length
+ 4 TIMESTAMP timestamp
+ 4 TIMESTAMP config-timestamp
+ 2 c number of CRTCs
+ 2 o number of outputs
+ 2 m number of modeinfos
+ 2 b total bytes in mode names
+ 8 unused
+ 4c LISTofCRTC crtcs
+ 4o LISTofOUTPUT outputs
+ 32m LISTofMODEINFO modeinfos
+ b STRING8 mode names
+ p unused, p=pad(b)
+└───
+┌───
+ RRGetOutputInfo
+ 1 CARD8 major opcode
+ 1 9 RandR opcode
+ 2 3 length
+ 4 OUTPUT output
+ 4 TIMESTAMP config-timestamp
+ ▶
+ 1 1 Reply
+ 1 RRCONFIGSTATUS status
+ 2 CARD16 sequence number
+ 4 1+c+m+(n+p)/4 reply length
+ 4 TIMESTAMP timestamp
+ 4 CRTC current connected crtc
+ 4 CARD32 width in millimeters
+ 4 CARD32 height in millimeters
+ 1 CONNECTION connection
+ 1 SUBPIXELORDER subpixel-order
+ 2 c number of CRTCs
+ 2 m number of modes
+ 2 p number of preferred modes
+ 2 o number of clones
+ 2 n length of name
+ 4c LISTofCRTC crtcs
+ 4m LISTofMODE modes
+ 4o LISTofOUTPUT clones
+ n STRING8 name
+ p unused, p=pad(n)
+└───
+┌───
+ RRListOutputProperties
+ 1 CARD8 major opcode
+ 1 10 RandR opcode
+ 2 2 length
+ 4 OUTPUT output
+ ▶
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n reply length
+ 2 n number of ATOMs in atoms
+ 22 unused
+ 4n LISTofATOM atoms
+└───
+┌───
+ RRQueryOutputProperty
+ 1 CARD8 major opcode
+ 1 11 RandR opcode
+ 2 3 request length
+ 4 OUTPUT output
+ 4 ATOM property
+ ▶
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n reply length
+ 1 BOOL pending
+ 1 BOOL range
+ 1 BOOL immutable
+ 21 unused
+ 4n LISTofINT32 valid values
+└───
+┌───
+ RRConfigureOutputProperty
+ 1 CARD8 major opcode
+ 1 12 RandR opcode
+ 2 4+n request length
+ 4 OUTPUT output
+ 4 ATOM property
+ 1 BOOL pending
+ 1 BOOL range
+ 2 unused
+ 4n LISTofINT32 valid values
+└───
+┌───
+ RRChangeOutputProperty
+ 1 CARD8 major opcode
+ 1 13 RandR opcode
+ 2 6+(n+p)/4 request length
+ 4 OUTPUT output
+ 4 ATOM property
+ 4 ATOM type
+ 1 CARD8 format
+ 1 mode
+ 0 Replace
+ 1 Prepend
+ 2 Append
+ 2 unused
+ 4 CARD32 length of data in format units
+ (= n for format = 8)
+ (= n/2 for format = 16)
+ (= n/4 for format = 32)
+ n LISTofBYTE data
+ (n is a multiple of 2 for format = 16)
+ (n is a multiple of 4 for format = 32)
+ p unused, p=pad(n)
+└───
+┌───
+ RRDeleteOutputProperty
+ 1 CARD8 major opcode
+ 1 14 RandR opcode
+ 2 3 request length
+ 4 OUTPUT output
+ 4 ATOM property
+└───
+┌───
+ RRGetOutputProperty
+ 1 CARD8 major opcode
+ 1 15 RandR opcode
+ 2 7 request length
+ 4 OUTPUT output
+ 4 ATOM property
+ 4 ATOM type
+ 0 AnyPropertyType
+ 4 CARD32 long-offset
+ 4 CARD32 long-length
+ 1 BOOL delete
+ 1 BOOL pending
+ 2 unused
+ ▶
+ 1 1 Reply
+ 1 CARD8 format
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 4 ATOM type
+ 0 None
+ 4 CARD32 bytes-after
+ 4 CARD32 length of value in format units
+ (= 0 for format = 0)
+ (= n for format = 8)
+ (= n/2 for format = 16)
+ (= n/4 for format = 32)
+ 12 unused
+ n LISTofBYTE value
+ (n is zero for format = 0)
+ (n is a multiple of 2 for format = 16)
+ (n is a multiple of 4 for format = 32)
+ p unused, p=pad(n)
+└───
+┌───
+ RRCreateMode
+ 1 CARD8 major opcode
+ 1 16 RandR opcode
+ 2 12+(n+p)/4 length
+ 4 WINDOW window
+ 32 MODEINFO mode
+ n STRING8 mode name
+ p unused, p=pad(n)
+ ▶
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 MODE mode
+ 20 unused
+└───
+┌───
+ RRDestroyMode
+ 1 CARD8 major opcode
+ 1 17 RandR opcode
+ 2 2 length
+ 4 MODE mode
+└───
+┌───
+ RRAddOutputMode
+ 1 CARD8 major opcode
+ 1 18 RandR opcode
+ 2 3 length
+ 4 OUTPUT output
+ 4 MODE mode
+└───
+┌───
+ RRDeleteOutputMode
+ 1 CARD8 major opcode
+ 1 19 RandR opcode
+ 2 3 length
+ 4 OUTPUT output
+ 4 MODE mode
+└───
+┌───
+ RRGetCrtcInfo
+ 1 CARD8 major opcode
+ 1 20 RandR opcode
+ 2 3 length
+ 4 CRTC crtc
+ 4 TIMESTAMP config-timestamp
+ ▶
+ 1 1 Reply
+ 1 RRCONFIGSTATUS status
+ 2 CARD16 sequence number
+ 4 o+p reply length
+ 4 TIMESTATMP timestamp
+ 2 INT16 x
+ 2 INT16 y
+ 2 CARD16 width
+ 2 CARD16 height
+ 4 MODE mode
+ 2 ROTATION current rotation and reflection
+ 2 ROTATION set of possible rotations
+ 2 o number of outputs
+ 2 p number of possible outputs
+ 4o LISTofOUTPUT outputs
+ 4p LISTofOUTPUT possible outputs
+└───
+┌───
+ RRSetCrtcConfig
+ 1 CARD8 major opcode
+ 1 21 RandR opcode
+ 2 7+2n length
+ 4 CRTC crtc
+ 4 TIMESTAMP timestamp
+ 4 TIMESTAMP config timestamp
+ 2 INT16 x
+ 2 INT16 y
+ 4 MODE mode
+ 2 ROTATION rotation/reflection
+ 2 unused
+ 8n LISTofOUTPUT outputs
+ ▶
+ 1 1 Reply
+ 1 RRCONFIGSTATUS status
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 TIMESTAMP new timestamp
+ 20 unused
+└───
+┌───
+ RRGetCrtcGammaSize
+ 1 CARD8 major opcode
+ 1 22 RandR opcode
+ 2 2 length
+ 4 CRTC crtc
+ ▶
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 CARD16 size
+ 22 unused
+└───
+┌───
+ RRGetCrtcGamma
+ 1 CARD8 major opcode
+ 1 23 RandR opcode
+ 2 2 length
+ 4 CRTC crtc
+ ▶
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 (6n+2)/4 reply length
+ 2 n size
+ 20 unused
+ 2n LISTofCARD16 red
+ 2n LISTofCARD16 green
+ 2n LISTofCARD16 blue
+ p unused, p=pad(6n)
+└───
+┌───
+ RRSetCrtcGamma
+ 1 CARD8 major opcode
+ 1 24 RandR opcode
+ 2 3+(6n+2)/4 length
+ 4 CRTC crtc
+ 2 n size
+ 2 unused
+ 2n LISTofCARD16 red
+ 2n LISTofCARD16 green
+ 2n LISTofCARD16 blue
+ p unused, p=pad(6n)
+└───
+
+A.2.2 Protocol Requests added with version 1.3
+
+┌───
+ RRGetScreenResourcesCurrent
+ 1 CARD8 major opcode
+ 1 25 RandR opcode
+ 2 2 length
+ 4 WINDOW window
+ ▶
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 c+o+8m+(b+p)/4 reply length
+ 4 TIMESTAMP timestamp
+ 4 TIMESTAMP config-timestamp
+ 2 c number of CRTCs
+ 2 o number of outputs
+ 2 m number of modeinfos
+ 2 b total bytes in mode names
+ 8 unused
+ 4c LISTofCRTC crtcs
+ 4o LISTofOUTPUT outputs
+ 32m LISTofMODEINFO modeinfos
+ b STRING8 mode names
+ p unused, p=pad(b)
+└───
+
+┌───
+ RRSetCrtcTransform
+ 1 CARD8 major opcode
+ 1 26 RandR opcode
+ 2 12+(n+p)/4+v length
+ 4 CRTC crtc
+ 36 TRANSFORM transform
+ 2 CARD16 filter length
+ 2 unused
+ n STRING8 filter name
+ p unused, p=pad(n)
+ 4v FIXED filter params
+└───
+
+┌───
+ RRGetCrtcTransform
+ 1 CARD8 major opcode
+ 1 27 RandR opcode
+ 2 2 length
+ 4 CRTC crtc
+ ▶
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 16+(pn+pnp)/4+(cn+cnp)/4+pf+cf reply length
+ 36 TRANSFORM pending transform
+ 1 BOOL has transforms
+ 3 unused
+ 36 TRANSFORM current transform
+ 4 unused
+ 2 pn pending filter name length
+ 2 pf pending filter num params
+ 2 cn current filter name length
+ 2 cf current filter num params
+ pn STRING8 pending filter name
+ pnp unused, pnp=pad(pn)
+ 4*pf FIXED pending filter params
+ cn STRING8 current filter name
+ cnp unused, cnp=pad(cn)
+ 4*cf FIXED current filter params
+└───
+
+┌───
+ RRGetPanning
+ 1 CARD8 major opcode
+ 1 28 RandR opcode
+ 2 2 length
+ 4 CRTC crtc
+ ▶
+ 1 1 Reply
+ 1 RRCONFIGSTATUS status
+ 2 CARD16 sequence number
+ 4 1 reply length
+ 4 TIMESTAMP timestamp
+ 2 CARD16 left
+ 2 CARD16 top
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 CARD16 track_left
+ 2 CARD16 track_top
+ 2 CARD16 track_width
+ 2 CARD16 track_height
+ 2 INT16 border_left
+ 2 INT16 border_top
+ 2 INT16 border_right
+ 2 INT16 border_bottom
+└───
+┌───
+ RRSetPanning
+ 1 CARD8 major opcode
+ 1 29 RandR opcode
+ 2 9 length
+ 4 CRTC crtc
+ 4 TIMESTAMP timestamp
+ 2 CARD16 left
+ 2 CARD16 top
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 CARD16 track_left
+ 2 CARD16 track_top
+ 2 CARD16 track_width
+ 2 CARD16 track_height
+ 2 INT16 border_left
+ 2 INT16 border_top
+ 2 INT16 border_right
+ 2 INT16 border_bottom
+ ▶
+ 1 1 Reply
+ 1 RRCONFIGSTATUS status
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 TIMESTAMP new timestamp
+ 20 unused
+└───
+
+┌───
+ RRSetOutputPrimary
+ 1 CARD8 major opcode
+ 1 30 RandR opcode
+ 2 3 length
+ 4 WINDOW window
+ 4 OUTPUT output
+└───
+
+┌───
+ RRGetOutputPrimary
+ 1 CARD8 major opcode
+ 1 31 RandR opcode
+ 2 2 length
+ 4 WINDOW window
+ ▶
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 CARD32 length
+ 4 OUTPUT output
+ 4 CARD32 pad1
+ 4 CARD32 pad2
+ 4 CARD32 pad3
+ 4 CARD32 pad4
+└───
+
+A.3 Protocol Events
+
+┌───
+ RRScreenChangeNotify
+ 1 Base + 0 code
+ 1 ROTATION new rotation and reflection
+ 2 CARD16 sequence number
+ 4 TIMESTAMP timestamp
+ 4 TIMESTAMP configuration timestamp
+ 4 WINDOW root window
+ 4 WINDOW request window
+ 2 SIZEID size ID
+ 2 SUBPIXELORDER subpixel order defined in Render
+ 2 CARD16 width in pixels
+ 2 CARD16 height in pixels
+ 2 CARD16 width in millimeters
+ 2 CARD16 height in millimeters
+└───
+
+A.3.1 Protocol Events added with version 1.2
+
+┌───
+ RRCrtcChangeNotify
+ 1 Base + 1 code
+ 1 0 sub-code
+ 2 CARD16 sequence number
+ 4 TIMESTAMP timestamp
+ 4 WINDOW request window
+ 4 CRTC crtc affected
+ 4 MODE mode in use
+ 2 ROTATION new rotation and reflection
+ 2 unused
+ 2 INT16 x
+ 2 INT16 y
+ 2 CARD16 width
+ 2 CARD16 height
+└───
+┌───
+ RROutputChangeNotify
+ 1 Base + 1 code
+ 1 1 sub-code
+ 2 CARD16 sequence number
+ 4 TIMESTAMP timestamp
+ 4 TIMESTAMP configuration timestamp
+ 4 WINDOW request window
+ 4 OUTPUT output affected
+ 4 CRTC crtc in use
+ 4 MODE mode in use
+ 2 ROTATION rotation in use
+ 1 CONNECTION connection status
+ 1 SUBPIXELORDER subpixel order
+└───
+┌───
+ RROutputPropertyNotify
+ 1 Base + 1 code
+ 1 2 sub-code
+ 2 CARD16 sequence number
+ 4 WINDOW window
+ 4 OUTPUT output
+ 4 ATOM atom
+ 4 TIMESTAMP time
+ 1 state
+ 0 NewValue
+ 1 Deleted
+ 11 unused
+└───
+
+A.4 Protocol Errors
+
+┌───
+ ERRORS
+ Base + 0 Output
+ Base + 1 Crtc
+ Base + 2 Mode
+└───
+
+Bibliography
+
+[RANDR] Gettys, Jim and Keith Packard, "The X Resize and Rotate
+ Extension - RandR", Proceedings of the 2001 USENIX Annual
+ Technical Conference, Boston, MA
+
+[RENDER]
+ Packard, Keith, "The X Rendering Extension", work in progress,
+ http://cgit.freedesktop.org/xorg/proto/renderproto/tree/renderproto.txt
diff --git a/X11/extensions/recordstr.h b/X11/extensions/recordstr.h
index 7f269b77e..983af4dc8 100644
--- a/X11/extensions/recordstr.h
+++ b/X11/extensions/recordstr.h
@@ -1,4 +1,4 @@
-#warning "recordstr.h is obsolete and may be removed in the future."
-#warning "include <X11/extensions/record.h> for the library interfaces."
-#warning "include <X11/extensions/recordproto.h> for the protocol defines."
+#pragma message( "recordstr.h is obsolete and may be removed in the future.")
+#pragma message("include <X11/extensions/record.h> for the library interfaces.")
+#pragma message( "include <X11/extensions/recordproto.h> for the protocol defines.")
#include <X11/extensions/recordproto.h>
diff --git a/X11/extensions/security.h b/X11/extensions/security.h
index fc7ade236..90abc07ee 100644
--- a/X11/extensions/security.h
+++ b/X11/extensions/security.h
@@ -1,111 +1,77 @@
-/* $Xorg: security.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $ */
-/*
-Copyright 1996, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-*/
-/* $XFree86: xc/include/extensions/security.h,v 1.3 2001/12/14 19:53:29 dawes Exp $ */
-
-#ifndef _SECURITY_H
-#define _SECURITY_H
-
-#define _XAUTH_STRUCT_ONLY
-#include <X11/Xauth.h>
-
-/* constants that server, library, and application all need */
-
-#define XSecurityNumberEvents 1
-#define XSecurityNumberErrors 2
-#define XSecurityBadAuthorization 0
-#define XSecurityBadAuthorizationProtocol 1
-
-/* trust levels */
-#define XSecurityClientTrusted 0
-#define XSecurityClientUntrusted 1
-
-/* authorization attribute masks */
-#define XSecurityTimeout (1<<0)
-#define XSecurityTrustLevel (1<<1)
-#define XSecurityGroup (1<<2)
-#define XSecurityEventMask (1<<3)
-#define XSecurityAllAuthorizationAttributes \
- (XSecurityTimeout | XSecurityTrustLevel | XSecurityGroup | XSecurityEventMask)
-
-/* event masks */
-#define XSecurityAuthorizationRevokedMask (1<<0)
-#define XSecurityAllEventMasks XSecurityAuthorizationRevokedMask
-
-/* event offsets */
-#define XSecurityAuthorizationRevoked 0
-
-#define XSecurityAuthorizationName "XC-QUERY-SECURITY-1"
-#define XSecurityAuthorizationNameLen 19
-
-
-#ifndef _SECURITY_SERVER
-
-_XFUNCPROTOBEGIN
-
-Status XSecurityQueryExtension (
- Display *dpy,
- int *major_version_return,
- int *minor_version_return);
-
-Xauth *XSecurityAllocXauth(void);
-
-void XSecurityFreeXauth(Xauth *auth);
-
-/* type for returned auth ids */
-typedef unsigned long XSecurityAuthorization;
-
-typedef struct {
- unsigned int timeout;
- unsigned int trust_level;
- XID group;
- long event_mask;
-} XSecurityAuthorizationAttributes;
-
-Xauth *XSecurityGenerateAuthorization(
- Display *dpy,
- Xauth *auth_in,
- unsigned long valuemask,
- XSecurityAuthorizationAttributes *attributes,
- XSecurityAuthorization *auth_id_return);
-
-Status XSecurityRevokeAuthorization(
- Display *dpy,
- XSecurityAuthorization auth_id);
-
-_XFUNCPROTOEND
-
-typedef struct {
- int type; /* event base + XSecurityAuthorizationRevoked */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- XSecurityAuthorization auth_id; /* revoked authorization id */
-} XSecurityAuthorizationRevokedEvent;
-
-#endif /* _SECURITY_SERVER */
-
-#endif /* _SECURITY_H */
+/*
+Copyright 1996, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+*/
+
+#ifndef _SECURITY_H
+#define _SECURITY_H
+
+#define _XAUTH_STRUCT_ONLY
+#include <X11/Xauth.h>
+
+#include <X11/extensions/secur.h>
+
+_XFUNCPROTOBEGIN
+
+Status XSecurityQueryExtension (
+ Display *dpy,
+ int *major_version_return,
+ int *minor_version_return);
+
+Xauth *XSecurityAllocXauth(void);
+
+void XSecurityFreeXauth(Xauth *auth);
+
+/* type for returned auth ids */
+typedef unsigned long XSecurityAuthorization;
+
+typedef struct {
+ unsigned int timeout;
+ unsigned int trust_level;
+ XID group;
+ long event_mask;
+} XSecurityAuthorizationAttributes;
+
+Xauth *XSecurityGenerateAuthorization(
+ Display *dpy,
+ Xauth *auth_in,
+ unsigned long valuemask,
+ XSecurityAuthorizationAttributes *attributes,
+ XSecurityAuthorization *auth_id_return);
+
+Status XSecurityRevokeAuthorization(
+ Display *dpy,
+ XSecurityAuthorization auth_id);
+
+_XFUNCPROTOEND
+
+typedef struct {
+ int type; /* event base + XSecurityAuthorizationRevoked */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ XSecurityAuthorization auth_id; /* revoked authorization id */
+} XSecurityAuthorizationRevokedEvent;
+
+#endif /* _SECURITY_H */
diff --git a/X11/extensions/shape.h b/X11/extensions/shape.h
index d173efef8..e2f62d0bc 100644
--- a/X11/extensions/shape.h
+++ b/X11/extensions/shape.h
@@ -1,180 +1,152 @@
-/* $XFree86: xc/include/extensions/shape.h,v 1.3 2001/12/14 19:53:29 dawes Exp $ */
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-/* $Xorg: shape.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $ */
-
-#ifndef _SHAPE_H_
-#define _SHAPE_H_
-
-#include <X11/Xfuncproto.h>
-
-#define X_ShapeQueryVersion 0
-#define X_ShapeRectangles 1
-#define X_ShapeMask 2
-#define X_ShapeCombine 3
-#define X_ShapeOffset 4
-#define X_ShapeQueryExtents 5
-#define X_ShapeSelectInput 6
-#define X_ShapeInputSelected 7
-#define X_ShapeGetRectangles 8
-
-#define ShapeSet 0
-#define ShapeUnion 1
-#define ShapeIntersect 2
-#define ShapeSubtract 3
-#define ShapeInvert 4
-
-#define ShapeBounding 0
-#define ShapeClip 1
-#define ShapeInput 2
-
-#define ShapeNotifyMask (1L << 0)
-#define ShapeNotify 0
-
-#define ShapeNumberEvents (ShapeNotify + 1)
-
-#ifndef _SHAPE_SERVER_
-
-#include <X11/Xutil.h>
-
-typedef struct {
- int type; /* of event */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came frome a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window of event */
- int kind; /* ShapeBounding or ShapeClip */
- int x, y; /* extents of new region */
- unsigned width, height;
- Time time; /* server timestamp when region changed */
- Bool shaped; /* true if the region exists */
-} XShapeEvent;
-
-_XFUNCPROTOBEGIN
-
-extern Bool XShapeQueryExtension (
- Display* /* display */,
- int* /* event_base */,
- int* /* error_base */
-);
-
-extern Status XShapeQueryVersion (
- Display* /* display */,
- int* /* major_version */,
- int* /* minor_version */
-);
-
-extern void XShapeCombineRegion (
- Display* /* display */,
- Window /* dest */,
- int /* dest_kind */,
- int /* x_off */,
- int /* y_off */,
- Region /* region */,
- int /* op */
-);
-
-extern void XShapeCombineRectangles (
- Display* /* display */,
- Window /* dest */,
- int /* dest_kind */,
- int /* x_off */,
- int /* y_off */,
- XRectangle* /* rectangles */,
- int /* n_rects */,
- int /* op */,
- int /* ordering */
-);
-
-extern void XShapeCombineMask (
- Display* /* display */,
- Window /* dest */,
- int /* dest_kind */,
- int /* x_off */,
- int /* y_off */,
- Pixmap /* src */,
- int /* op */
-);
-
-extern void XShapeCombineShape (
- Display* /* display */,
- Window /* dest */,
- int /* dest_kind */,
- int /* x_off */,
- int /* y_off */,
- Window /* src */,
- int /* src_kind */,
- int /* op */
-);
-
-extern void XShapeOffsetShape (
- Display* /* display */,
- Window /* dest */,
- int /* dest_kind */,
- int /* x_off */,
- int /* y_off */
-);
-
-extern Status XShapeQueryExtents (
- Display* /* display */,
- Window /* window */,
- Bool* /* bounding_shaped */,
- int* /* x_bounding */,
- int* /* y_bounding */,
- unsigned int* /* w_bounding */,
- unsigned int* /* h_bounding */,
- Bool* /* clip_shaped */,
- int* /* x_clip */,
- int* /* y_clip */,
- unsigned int* /* w_clip */,
- unsigned int* /* h_clip */
-);
-
-extern void XShapeSelectInput (
- Display* /* display */,
- Window /* window */,
- unsigned long /* mask */
-);
-
-extern unsigned long XShapeInputSelected (
- Display* /* display */,
- Window /* window */
-);
-
-extern XRectangle *XShapeGetRectangles (
- Display* /* display */,
- Window /* window */,
- int /* kind */,
- int* /* count */,
- int* /* ordering */
-);
-
-_XFUNCPROTOEND
-
-#endif /* _SHAPE_SERVER_ */
-
-#endif /* _SHAPE_H_ */
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+********************************************************/
+
+#ifndef _SHAPE_H_
+#define _SHAPE_H_
+
+#include <X11/Xfuncproto.h>
+#include <X11/extensions/shapeconst.h>
+
+#ifndef _SHAPE_SERVER_
+#include <X11/Xutil.h>
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came frome a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* window of event */
+ int kind; /* ShapeBounding or ShapeClip */
+ int x, y; /* extents of new region */
+ unsigned width, height;
+ Time time; /* server timestamp when region changed */
+ Bool shaped; /* true if the region exists */
+} XShapeEvent;
+
+_XFUNCPROTOBEGIN
+
+extern Bool XShapeQueryExtension (
+ Display* /* display */,
+ int* /* event_base */,
+ int* /* error_base */
+);
+
+extern Status XShapeQueryVersion (
+ Display* /* display */,
+ int* /* major_version */,
+ int* /* minor_version */
+);
+
+extern void XShapeCombineRegion (
+ Display* /* display */,
+ Window /* dest */,
+ int /* dest_kind */,
+ int /* x_off */,
+ int /* y_off */,
+ Region /* region */,
+ int /* op */
+);
+
+extern void XShapeCombineRectangles (
+ Display* /* display */,
+ Window /* dest */,
+ int /* dest_kind */,
+ int /* x_off */,
+ int /* y_off */,
+ XRectangle* /* rectangles */,
+ int /* n_rects */,
+ int /* op */,
+ int /* ordering */
+);
+
+extern void XShapeCombineMask (
+ Display* /* display */,
+ Window /* dest */,
+ int /* dest_kind */,
+ int /* x_off */,
+ int /* y_off */,
+ Pixmap /* src */,
+ int /* op */
+);
+
+extern void XShapeCombineShape (
+ Display* /* display */,
+ Window /* dest */,
+ int /* dest_kind */,
+ int /* x_off */,
+ int /* y_off */,
+ Window /* src */,
+ int /* src_kind */,
+ int /* op */
+);
+
+extern void XShapeOffsetShape (
+ Display* /* display */,
+ Window /* dest */,
+ int /* dest_kind */,
+ int /* x_off */,
+ int /* y_off */
+);
+
+extern Status XShapeQueryExtents (
+ Display* /* display */,
+ Window /* window */,
+ Bool* /* bounding_shaped */,
+ int* /* x_bounding */,
+ int* /* y_bounding */,
+ unsigned int* /* w_bounding */,
+ unsigned int* /* h_bounding */,
+ Bool* /* clip_shaped */,
+ int* /* x_clip */,
+ int* /* y_clip */,
+ unsigned int* /* w_clip */,
+ unsigned int* /* h_clip */
+);
+
+extern void XShapeSelectInput (
+ Display* /* display */,
+ Window /* window */,
+ unsigned long /* mask */
+);
+
+extern unsigned long XShapeInputSelected (
+ Display* /* display */,
+ Window /* window */
+);
+
+extern XRectangle *XShapeGetRectangles (
+ Display* /* display */,
+ Window /* window */,
+ int /* kind */,
+ int* /* count */,
+ int* /* ordering */
+);
+
+_XFUNCPROTOEND
+
+#endif /* !_SHAPE_SERVER_ */
+
+#endif /* _SHAPE_H_ */
diff --git a/X11/extensions/sync.h b/X11/extensions/sync.h
index 9fbe6d72f..0ed5b728d 100644
--- a/X11/extensions/sync.h
+++ b/X11/extensions/sync.h
@@ -1,469 +1,375 @@
-/* $Xorg: sync.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $ */
-/*
-
-Copyright 1991, 1993, 1994, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-/***********************************************************
-Copyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
-and Olivetti Research Limited, Cambridge, England.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-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 names of Digital or Olivetti
-not be used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL THEY 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.
-
-******************************************************************/
-/* $XFree86: xc/include/extensions/sync.h,v 1.4 2001/12/20 19:40:59 tsi Exp $ */
-
-#ifndef _SYNC_H_
-#define _SYNC_H_
-
-#include <X11/Xfuncproto.h>
-
-_XFUNCPROTOBEGIN
-
-#define SYNC_NAME "SYNC"
-
-#define SYNC_MAJOR_VERSION 3
-#define SYNC_MINOR_VERSION 0
-
-#define X_SyncInitialize 0
-#define X_SyncListSystemCounters 1
-#define X_SyncCreateCounter 2
-#define X_SyncSetCounter 3
-#define X_SyncChangeCounter 4
-#define X_SyncQueryCounter 5
-#define X_SyncDestroyCounter 6
-#define X_SyncAwait 7
-#define X_SyncCreateAlarm 8
-#define X_SyncChangeAlarm 9
-#define X_SyncQueryAlarm 10
-#define X_SyncDestroyAlarm 11
-#define X_SyncSetPriority 12
-#define X_SyncGetPriority 13
-
-#define XSyncCounterNotify 0
-#define XSyncAlarmNotify 1
-#define XSyncAlarmNotifyMask (1L << XSyncAlarmNotify)
-
-#define XSyncNumberEvents 2L
-
-#define XSyncBadCounter 0L
-#define XSyncBadAlarm 1L
-#define XSyncNumberErrors (XSyncBadAlarm + 1)
-
-/*
- * Flags for Alarm Attributes
- */
-#define XSyncCACounter (1L<<0)
-#define XSyncCAValueType (1L<<1)
-#define XSyncCAValue (1L<<2)
-#define XSyncCATestType (1L<<3)
-#define XSyncCADelta (1L<<4)
-#define XSyncCAEvents (1L<<5)
-
-/*
- * Constants for the value_type argument of various requests
- */
-typedef enum {
- XSyncAbsolute,
- XSyncRelative
-} XSyncValueType;
-
-/*
- * Alarm Test types
- */
-typedef enum {
- XSyncPositiveTransition,
- XSyncNegativeTransition,
- XSyncPositiveComparison,
- XSyncNegativeComparison
-} XSyncTestType;
-
-/*
- * Alarm state constants
- */
-typedef enum {
- XSyncAlarmActive,
- XSyncAlarmInactive,
- XSyncAlarmDestroyed
-} XSyncAlarmState;
-
-
-typedef XID XSyncCounter;
-typedef XID XSyncAlarm;
-typedef struct _XSyncValue {
- int hi;
- unsigned int lo;
-} XSyncValue;
-
-/*
- * Macros/functions for manipulating 64 bit values
- */
-
-/* have to put these prototypes before the corresponding macro definitions */
-
-extern void XSyncIntToValue(
- XSyncValue* /*pv*/,
- int /*i*/
-);
-
-extern void XSyncIntsToValue(
- XSyncValue* /*pv*/,
- unsigned int /*l*/,
- int /*h*/
-);
-
-extern Bool XSyncValueGreaterThan(
- XSyncValue /*a*/,
- XSyncValue /*b*/
-);
-
-extern Bool XSyncValueLessThan(
- XSyncValue /*a*/,
- XSyncValue /*b*/
-);
-
-extern Bool XSyncValueGreaterOrEqual(
- XSyncValue /*a*/,
- XSyncValue /*b*/
-);
-
-extern Bool XSyncValueLessOrEqual(
- XSyncValue /*a*/,
- XSyncValue /*b*/
-);
-
-extern Bool XSyncValueEqual(
- XSyncValue /*a*/,
- XSyncValue /*b*/
-);
-
-extern Bool XSyncValueIsNegative(
- XSyncValue /*v*/
-);
-
-extern Bool XSyncValueIsZero(
- XSyncValue /*a*/
-);
-
-extern Bool XSyncValueIsPositive(
- XSyncValue /*v*/
-);
-
-extern unsigned int XSyncValueLow32(
- XSyncValue /*v*/
-);
-
-extern int XSyncValueHigh32(
- XSyncValue /*v*/
-);
-
-extern void XSyncValueAdd(
- XSyncValue* /*presult*/,
- XSyncValue /*a*/,
- XSyncValue /*b*/,
- int* /*poverflow*/
-);
-
-extern void XSyncValueSubtract(
- XSyncValue* /*presult*/,
- XSyncValue /*a*/,
- XSyncValue /*b*/,
- int* /*poverflow*/
-);
-
-extern void XSyncMaxValue(
- XSyncValue* /*pv*/
-);
-
-extern void XSyncMinValue(
- XSyncValue* /*pv*/
-);
-
-_XFUNCPROTOEND
-
-/* The _XSync macros below are for library internal use only. They exist
- * so that if we have to make a fix, we can change it in this one place
- * and have both the macro and function variants inherit the fix.
- */
-
-#define _XSyncIntToValue(pv, i) ((pv)->hi=((i<0)?~0:0),(pv)->lo=(i))
-#define _XSyncIntsToValue(pv, l, h) ((pv)->lo = (l), (pv)->hi = (h))
-#define _XSyncValueGreaterThan(a, b)\
- ((a).hi>(b).hi || ((a).hi==(b).hi && (a).lo>(b).lo))
-#define _XSyncValueLessThan(a, b)\
- ((a).hi<(b).hi || ((a).hi==(b).hi && (a).lo<(b).lo))
-#define _XSyncValueGreaterOrEqual(a, b)\
- ((a).hi>(b).hi || ((a).hi==(b).hi && (a).lo>=(b).lo))
-#define _XSyncValueLessOrEqual(a, b)\
- ((a).hi<(b).hi || ((a).hi==(b).hi && (a).lo<=(b).lo))
-#define _XSyncValueEqual(a, b) ((a).lo==(b).lo && (a).hi==(b).hi)
-#define _XSyncValueIsNegative(v) (((v).hi & 0x80000000) ? 1 : 0)
-#define _XSyncValueIsZero(a) ((a).lo==0 && (a).hi==0)
-#define _XSyncValueIsPositive(v) (((v).hi & 0x80000000) ? 0 : 1)
-#define _XSyncValueLow32(v) ((v).lo)
-#define _XSyncValueHigh32(v) ((v).hi)
-#define _XSyncValueAdd(presult,a,b,poverflow) {\
- int t = (a).lo;\
- Bool signa = XSyncValueIsNegative(a);\
- Bool signb = XSyncValueIsNegative(b);\
- ((presult)->lo = (a).lo + (b).lo);\
- ((presult)->hi = (a).hi + (b).hi);\
- if (t>(presult)->lo) (presult)->hi++;\
- *poverflow = ((signa == signb) && !(signa == XSyncValueIsNegative(*presult)));\
- }
-#define _XSyncValueSubtract(presult,a,b,poverflow) {\
- int t = (a).lo;\
- Bool signa = XSyncValueIsNegative(a);\
- Bool signb = XSyncValueIsNegative(b);\
- ((presult)->lo = (a).lo - (b).lo);\
- ((presult)->hi = (a).hi - (b).hi);\
- if (t>(presult)->lo) (presult)->hi--;\
- *poverflow = ((signa == signb) && !(signa == XSyncValueIsNegative(*presult)));\
- }
-#define _XSyncMaxValue(pv) ((pv)->hi = 0x7fffffff, (pv)->lo = 0xffffffff)
-#define _XSyncMinValue(pv) ((pv)->hi = 0x80000000, (pv)->lo = 0)
-
-/*
- * These are the publically usable macros. If you want the function version
- * of one of these, just #undef the macro to uncover the function.
- * (This is the same convention that the ANSI C library uses.)
- */
-
-#define XSyncIntToValue(pv, i) _XSyncIntToValue(pv, i)
-#define XSyncIntsToValue(pv, l, h) _XSyncIntsToValue(pv, l, h)
-#define XSyncValueGreaterThan(a, b) _XSyncValueGreaterThan(a, b)
-#define XSyncValueLessThan(a, b) _XSyncValueLessThan(a, b)
-#define XSyncValueGreaterOrEqual(a, b) _XSyncValueGreaterOrEqual(a, b)
-#define XSyncValueLessOrEqual(a, b) _XSyncValueLessOrEqual(a, b)
-#define XSyncValueEqual(a, b) _XSyncValueEqual(a, b)
-#define XSyncValueIsNegative(v) _XSyncValueIsNegative(v)
-#define XSyncValueIsZero(a) _XSyncValueIsZero(a)
-#define XSyncValueIsPositive(v) _XSyncValueIsPositive(v)
-#define XSyncValueLow32(v) _XSyncValueLow32(v)
-#define XSyncValueHigh32(v) _XSyncValueHigh32(v)
-#define XSyncValueAdd(presult,a,b,poverflow) _XSyncValueAdd(presult,a,b,poverflow)
-#define XSyncValueSubtract(presult,a,b,poverflow) _XSyncValueSubtract(presult,a,b,poverflow)
-#define XSyncMaxValue(pv) _XSyncMaxValue(pv)
-#define XSyncMinValue(pv) _XSyncMinValue(pv)
-
-#ifndef _SYNC_SERVER
-
-typedef struct _XSyncSystemCounter {
- char *name; /* null-terminated name of system counter */
- XSyncCounter counter; /* counter id of this system counter */
- XSyncValue resolution; /* resolution of this system counter */
-} XSyncSystemCounter;
-
-
-typedef struct {
- XSyncCounter counter; /* counter to trigger on */
- XSyncValueType value_type; /* absolute/relative */
- XSyncValue wait_value; /* value to compare counter to */
- XSyncTestType test_type; /* pos/neg comparison/transtion */
-} XSyncTrigger;
-
-typedef struct {
- XSyncTrigger trigger; /* trigger for await */
- XSyncValue event_threshold; /* send event if past threshold */
-} XSyncWaitCondition;
-
-
-typedef struct {
- XSyncTrigger trigger;
- XSyncValue delta;
- Bool events;
- XSyncAlarmState state;
-} XSyncAlarmAttributes;
-
-/*
- * Events
- */
-
-typedef struct {
- int type; /* event base + XSyncCounterNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- XSyncCounter counter; /* counter involved in await */
- XSyncValue wait_value; /* value being waited for */
- XSyncValue counter_value; /* counter value when this event was sent */
- Time time; /* milliseconds */
- int count; /* how many more events to come */
- Bool destroyed; /* True if counter was destroyed */
-} XSyncCounterNotifyEvent;
-
-typedef struct {
- int type; /* event base + XSyncCounterNotify */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- XSyncAlarm alarm; /* alarm that triggered */
- XSyncValue counter_value; /* value that triggered the alarm */
- XSyncValue alarm_value; /* test value of trigger in alarm */
- Time time; /* milliseconds */
- XSyncAlarmState state; /* new state of alarm */
-} XSyncAlarmNotifyEvent;
-
-/*
- * Errors
- */
-
-typedef struct {
- int type;
- Display *display; /* Display the event was read from */
- XSyncAlarm alarm; /* resource id */
- unsigned long serial; /* serial number of failed request */
- unsigned char error_code; /* error base + XSyncBadAlarm */
- unsigned char request_code; /* Major op-code of failed request */
- unsigned char minor_code; /* Minor op-code of failed request */
-} XSyncAlarmError;
-
-typedef struct {
- int type;
- Display *display; /* Display the event was read from */
- XSyncCounter counter; /* resource id */
- unsigned long serial; /* serial number of failed request */
- unsigned char error_code; /* error base + XSyncBadCounter */
- unsigned char request_code; /* Major op-code of failed request */
- unsigned char minor_code; /* Minor op-code of failed request */
-} XSyncCounterError;
-
-/*
- * Prototypes
- */
-
-_XFUNCPROTOBEGIN
-
-extern Status XSyncQueryExtension(
- Display* /*dpy*/,
- int* /*event_base_return*/,
- int* /*error_base_return*/
-);
-
-extern Status XSyncInitialize(
- Display* /*dpy*/,
- int* /*major_version_return*/,
- int* /*minor_version_return*/
-);
-
-extern XSyncSystemCounter *XSyncListSystemCounters(
- Display* /*dpy*/,
- int* /*n_counters_return*/
-);
-
-extern void XSyncFreeSystemCounterList(
- XSyncSystemCounter* /*list*/
-);
-
-extern XSyncCounter XSyncCreateCounter(
- Display* /*dpy*/,
- XSyncValue /*initial_value*/
-);
-
-extern Status XSyncSetCounter(
- Display* /*dpy*/,
- XSyncCounter /*counter*/,
- XSyncValue /*value*/
-);
-
-extern Status XSyncChangeCounter(
- Display* /*dpy*/,
- XSyncCounter /*counter*/,
- XSyncValue /*value*/
-);
-
-extern Status XSyncDestroyCounter(
- Display* /*dpy*/,
- XSyncCounter /*counter*/
-);
-
-extern Status XSyncQueryCounter(
- Display* /*dpy*/,
- XSyncCounter /*counter*/,
- XSyncValue* /*value_return*/
-);
-
-extern Status XSyncAwait(
- Display* /*dpy*/,
- XSyncWaitCondition* /*wait_list*/,
- int /*n_conditions*/
-);
-
-extern XSyncAlarm XSyncCreateAlarm(
- Display* /*dpy*/,
- unsigned long /*values_mask*/,
- XSyncAlarmAttributes* /*values*/
-);
-
-extern Status XSyncDestroyAlarm(
- Display* /*dpy*/,
- XSyncAlarm /*alarm*/
-);
-
-extern Status XSyncQueryAlarm(
- Display* /*dpy*/,
- XSyncAlarm /*alarm*/,
- XSyncAlarmAttributes* /*values_return*/
-);
-
-extern Status XSyncChangeAlarm(
- Display* /*dpy*/,
- XSyncAlarm /*alarm*/,
- unsigned long /*values_mask*/,
- XSyncAlarmAttributes* /*values*/
-);
-
-extern Status XSyncSetPriority(
- Display* /*dpy*/,
- XID /*client_resource_id*/,
- int /*priority*/
-);
-
-extern Status XSyncGetPriority(
- Display* /*dpy*/,
- XID /*client_resource_id*/,
- int* /*return_priority*/
-);
-
-#endif /* _SYNC_SERVER */
-
-_XFUNCPROTOEND
-
-#endif /* _SYNC_H_ */
+/*
+
+Copyright 1991, 1993, 1994, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+/***********************************************************
+Copyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
+and Olivetti Research Limited, Cambridge, England.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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 names of Digital or Olivetti
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THEY 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 _SYNC_H_
+#define _SYNC_H_
+
+#include <X11/Xfuncproto.h>
+#include <X11/extensions/syncconst.h>
+
+#ifdef _SYNC_SERVER
+#include <X11/extensions/syncproto.h>
+#else
+
+_XFUNCPROTOBEGIN
+/* get rid of macros so we can define corresponding functions */
+#undef XSyncIntToValue
+#undef XSyncIntsToValue
+#undef XSyncValueGreaterThan
+#undef XSyncValueLessThan
+#undef XSyncValueGreaterOrEqual
+#undef XSyncValueLessOrEqual
+#undef XSyncValueEqual
+#undef XSyncValueIsNegative
+#undef XSyncValueIsZero
+#undef XSyncValueIsPositive
+#undef XSyncValueLow32
+#undef XSyncValueHigh32
+#undef XSyncValueAdd
+#undef XSyncValueSubtract
+#undef XSyncMaxValue
+#undef XSyncMinValue
+
+extern void XSyncIntToValue(
+ XSyncValue* /*pv*/,
+ int /*i*/
+);
+
+extern void XSyncIntsToValue(
+ XSyncValue* /*pv*/,
+ unsigned int /*l*/,
+ int /*h*/
+);
+
+extern Bool XSyncValueGreaterThan(
+ XSyncValue /*a*/,
+ XSyncValue /*b*/
+);
+
+extern Bool XSyncValueLessThan(
+ XSyncValue /*a*/,
+ XSyncValue /*b*/
+);
+
+extern Bool XSyncValueGreaterOrEqual(
+ XSyncValue /*a*/,
+ XSyncValue /*b*/
+);
+
+extern Bool XSyncValueLessOrEqual(
+ XSyncValue /*a*/,
+ XSyncValue /*b*/
+);
+
+extern Bool XSyncValueEqual(
+ XSyncValue /*a*/,
+ XSyncValue /*b*/
+);
+
+extern Bool XSyncValueIsNegative(
+ XSyncValue /*v*/
+);
+
+extern Bool XSyncValueIsZero(
+ XSyncValue /*a*/
+);
+
+extern Bool XSyncValueIsPositive(
+ XSyncValue /*v*/
+);
+
+extern unsigned int XSyncValueLow32(
+ XSyncValue /*v*/
+);
+
+extern int XSyncValueHigh32(
+ XSyncValue /*v*/
+);
+
+extern void XSyncValueAdd(
+ XSyncValue* /*presult*/,
+ XSyncValue /*a*/,
+ XSyncValue /*b*/,
+ int* /*poverflow*/
+);
+
+extern void XSyncValueSubtract(
+ XSyncValue* /*presult*/,
+ XSyncValue /*a*/,
+ XSyncValue /*b*/,
+ int* /*poverflow*/
+);
+
+extern void XSyncMaxValue(
+ XSyncValue* /*pv*/
+);
+
+extern void XSyncMinValue(
+ XSyncValue* /*pv*/
+);
+
+_XFUNCPROTOEND
+
+
+typedef struct _XSyncSystemCounter {
+ char *name; /* null-terminated name of system counter */
+ XSyncCounter counter; /* counter id of this system counter */
+ XSyncValue resolution; /* resolution of this system counter */
+} XSyncSystemCounter;
+
+
+typedef struct {
+ XSyncCounter counter; /* counter to trigger on */
+ XSyncValueType value_type; /* absolute/relative */
+ XSyncValue wait_value; /* value to compare counter to */
+ XSyncTestType test_type; /* pos/neg comparison/transtion */
+} XSyncTrigger;
+
+typedef struct {
+ XSyncTrigger trigger; /* trigger for await */
+ XSyncValue event_threshold; /* send event if past threshold */
+} XSyncWaitCondition;
+
+
+typedef struct {
+ XSyncTrigger trigger;
+ XSyncValue delta;
+ Bool events;
+ XSyncAlarmState state;
+} XSyncAlarmAttributes;
+
+/*
+ * Events
+ */
+
+typedef struct {
+ int type; /* event base + XSyncCounterNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ XSyncCounter counter; /* counter involved in await */
+ XSyncValue wait_value; /* value being waited for */
+ XSyncValue counter_value; /* counter value when this event was sent */
+ Time time; /* milliseconds */
+ int count; /* how many more events to come */
+ Bool destroyed; /* True if counter was destroyed */
+} XSyncCounterNotifyEvent;
+
+typedef struct {
+ int type; /* event base + XSyncCounterNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ XSyncAlarm alarm; /* alarm that triggered */
+ XSyncValue counter_value; /* value that triggered the alarm */
+ XSyncValue alarm_value; /* test value of trigger in alarm */
+ Time time; /* milliseconds */
+ XSyncAlarmState state; /* new state of alarm */
+} XSyncAlarmNotifyEvent;
+
+/*
+ * Errors
+ */
+
+typedef struct {
+ int type;
+ Display *display; /* Display the event was read from */
+ XSyncAlarm alarm; /* resource id */
+ unsigned long serial; /* serial number of failed request */
+ unsigned char error_code; /* error base + XSyncBadAlarm */
+ unsigned char request_code; /* Major op-code of failed request */
+ unsigned char minor_code; /* Minor op-code of failed request */
+} XSyncAlarmError;
+
+typedef struct {
+ int type;
+ Display *display; /* Display the event was read from */
+ XSyncCounter counter; /* resource id */
+ unsigned long serial; /* serial number of failed request */
+ unsigned char error_code; /* error base + XSyncBadCounter */
+ unsigned char request_code; /* Major op-code of failed request */
+ unsigned char minor_code; /* Minor op-code of failed request */
+} XSyncCounterError;
+
+/*
+ * Prototypes
+ */
+
+_XFUNCPROTOBEGIN
+
+extern Status XSyncQueryExtension(
+ Display* /*dpy*/,
+ int* /*event_base_return*/,
+ int* /*error_base_return*/
+);
+
+extern Status XSyncInitialize(
+ Display* /*dpy*/,
+ int* /*major_version_return*/,
+ int* /*minor_version_return*/
+);
+
+extern XSyncSystemCounter *XSyncListSystemCounters(
+ Display* /*dpy*/,
+ int* /*n_counters_return*/
+);
+
+extern void XSyncFreeSystemCounterList(
+ XSyncSystemCounter* /*list*/
+);
+
+extern XSyncCounter XSyncCreateCounter(
+ Display* /*dpy*/,
+ XSyncValue /*initial_value*/
+);
+
+extern Status XSyncSetCounter(
+ Display* /*dpy*/,
+ XSyncCounter /*counter*/,
+ XSyncValue /*value*/
+);
+
+extern Status XSyncChangeCounter(
+ Display* /*dpy*/,
+ XSyncCounter /*counter*/,
+ XSyncValue /*value*/
+);
+
+extern Status XSyncDestroyCounter(
+ Display* /*dpy*/,
+ XSyncCounter /*counter*/
+);
+
+extern Status XSyncQueryCounter(
+ Display* /*dpy*/,
+ XSyncCounter /*counter*/,
+ XSyncValue* /*value_return*/
+);
+
+extern Status XSyncAwait(
+ Display* /*dpy*/,
+ XSyncWaitCondition* /*wait_list*/,
+ int /*n_conditions*/
+);
+
+extern XSyncAlarm XSyncCreateAlarm(
+ Display* /*dpy*/,
+ unsigned long /*values_mask*/,
+ XSyncAlarmAttributes* /*values*/
+);
+
+extern Status XSyncDestroyAlarm(
+ Display* /*dpy*/,
+ XSyncAlarm /*alarm*/
+);
+
+extern Status XSyncQueryAlarm(
+ Display* /*dpy*/,
+ XSyncAlarm /*alarm*/,
+ XSyncAlarmAttributes* /*values_return*/
+);
+
+extern Status XSyncChangeAlarm(
+ Display* /*dpy*/,
+ XSyncAlarm /*alarm*/,
+ unsigned long /*values_mask*/,
+ XSyncAlarmAttributes* /*values*/
+);
+
+extern Status XSyncSetPriority(
+ Display* /*dpy*/,
+ XID /*client_resource_id*/,
+ int /*priority*/
+);
+
+extern Status XSyncGetPriority(
+ Display* /*dpy*/,
+ XID /*client_resource_id*/,
+ int* /*return_priority*/
+);
+
+extern XSyncFence XSyncCreateFence(
+ Display* /*dpy*/,
+ Drawable /*d*/,
+ Bool /*initially_triggered*/
+);
+
+extern Bool XSyncTriggerFence(
+ Display* /*dpy*/,
+ XSyncFence /*fence*/
+);
+
+extern Bool XSyncResetFence(
+ Display* /*dpy*/,
+ XSyncFence /*fence*/
+);
+
+extern Bool XSyncDestroyFence(
+ Display* /*dpy*/,
+ XSyncFence /*fence*/
+);
+
+extern Bool XSyncQueryFence(
+ Display* /*dpy*/,
+ XSyncFence /*fence*/,
+ Bool* /*triggered*/
+);
+
+extern Bool XSyncAwaitFence(
+ Display* /*dpy*/,
+ const XSyncFence* /*fence_list*/,
+ int /*n_fences*/
+);
+
+_XFUNCPROTOEND
+
+#endif /* _SYNC_SERVER */
+
+#endif /* _SYNC_H_ */
diff --git a/X11/extensions/xcmiscstr.h b/X11/extensions/xcmiscstr.h
index c2b643308..43ab9ff8b 100644
--- a/X11/extensions/xcmiscstr.h
+++ b/X11/extensions/xcmiscstr.h
@@ -1,3 +1,3 @@
-#warning "xcmiscstr.h is obsolete and may be removed in the future."
-#warning "include <X11/extensions/xcmiscproto.h> for the protocol defines."
+#pragma message( "xcmiscstr.h is obsolete and may be removed in the future." )
+#pragma message( "include <X11/extensions/xcmiscproto.h> for the protocol defines." )
#include <X11/extensions/xcmiscproto.h>
diff --git a/X11/extensions/xfixesproto.h b/X11/extensions/xfixesproto.h
index fcf409a6e..3a802ce37 100644
--- a/X11/extensions/xfixesproto.h
+++ b/X11/extensions/xfixesproto.h
@@ -1,551 +1,551 @@
-/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2010 Red Hat, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-/*
- * Copyright © 2002 Keith Packard, member of The XFree86 Project, 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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 _XFIXESPROTO_H_
-#define _XFIXESPROTO_H_
-
-#include <X11/Xmd.h>
-#include <X11/extensions/xfixeswire.h>
-#include <X11/extensions/shapeconst.h>
-
-#define Window CARD32
-#define Drawable CARD32
-#define Font CARD32
-#define Pixmap CARD32
-#define Cursor CARD32
-#define Colormap CARD32
-#define GContext CARD32
-#define Atom CARD32
-#define VisualID CARD32
-#define Time CARD32
-#define KeyCode CARD8
-#define KeySym CARD32
-#define Picture CARD32
-
-/*************** Version 1 ******************/
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
-} xXFixesReq;
-
-/*
- * requests and replies
- */
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- CARD32 majorVersion B32;
- CARD32 minorVersion B32;
-} xXFixesQueryVersionReq;
-
-#define sz_xXFixesQueryVersionReq 12
-
-typedef struct {
- BYTE type; /* X_Reply */
- BYTE pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 majorVersion B32;
- CARD32 minorVersion B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xXFixesQueryVersionReply;
-
-#define sz_xXFixesQueryVersionReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- BYTE mode; /* SetModeInsert/SetModeDelete*/
- BYTE target; /* SaveSetNearest/SaveSetRoot*/
- BYTE map; /* SaveSetMap/SaveSetUnmap */
- BYTE pad1;
- Window window;
-} xXFixesChangeSaveSetReq;
-
-#define sz_xXFixesChangeSaveSetReq 12
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Window window B32;
- Atom selection B32;
- CARD32 eventMask B32;
-} xXFixesSelectSelectionInputReq;
-
-#define sz_xXFixesSelectSelectionInputReq 16
-
-typedef struct {
- CARD8 type;
- CARD8 subtype;
- CARD16 sequenceNumber B16;
- Window window B32;
- Window owner B32;
- Atom selection B32;
- Time timestamp B32;
- Time selectionTimestamp B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
-} xXFixesSelectionNotifyEvent;
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Window window B32;
- CARD32 eventMask B32;
-} xXFixesSelectCursorInputReq;
-
-#define sz_xXFixesSelectCursorInputReq 12
-
-typedef struct {
- CARD8 type;
- CARD8 subtype;
- CARD16 sequenceNumber B16;
- Window window B32;
- CARD32 cursorSerial B32;
- Time timestamp;
- Atom name B32; /* Version 2 */
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
-} xXFixesCursorNotifyEvent;
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
-} xXFixesGetCursorImageReq;
-
-#define sz_xXFixesGetCursorImageReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- BYTE pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- INT16 x B16;
- INT16 y B16;
- CARD16 width B16;
- CARD16 height B16;
- CARD16 xhot B16;
- CARD16 yhot B16;
- CARD32 cursorSerial B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
-} xXFixesGetCursorImageReply;
-
-#define sz_xXFixesGetCursorImageReply 32
-
-/*************** Version 2 ******************/
-
-#define Region CARD32
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region region B32;
- /* LISTofRECTANGLE */
-} xXFixesCreateRegionReq;
-
-#define sz_xXFixesCreateRegionReq 8
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region region B32;
- Pixmap bitmap B32;
-} xXFixesCreateRegionFromBitmapReq;
-
-#define sz_xXFixesCreateRegionFromBitmapReq 12
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region region B32;
- Window window B32;
- CARD8 kind;
- CARD8 pad1;
- CARD16 pad2 B16;
-} xXFixesCreateRegionFromWindowReq;
-
-#define sz_xXFixesCreateRegionFromWindowReq 16
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region region B32;
- GContext gc B32;
-} xXFixesCreateRegionFromGCReq;
-
-#define sz_xXFixesCreateRegionFromGCReq 12
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region region B32;
- Picture picture B32;
-} xXFixesCreateRegionFromPictureReq;
-
-#define sz_xXFixesCreateRegionFromPictureReq 12
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region region B32;
-} xXFixesDestroyRegionReq;
-
-#define sz_xXFixesDestroyRegionReq 8
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region region B32;
- /* LISTofRECTANGLE */
-} xXFixesSetRegionReq;
-
-#define sz_xXFixesSetRegionReq 8
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region source B32;
- Region destination B32;
-} xXFixesCopyRegionReq;
-
-#define sz_xXFixesCopyRegionReq 12
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region source1 B32;
- Region source2 B32;
- Region destination B32;
-} xXFixesCombineRegionReq,
- xXFixesUnionRegionReq,
- xXFixesIntersectRegionReq,
- xXFixesSubtractRegionReq;
-
-#define sz_xXFixesCombineRegionReq 16
-#define sz_xXFixesUnionRegionReq sz_xXFixesCombineRegionReq
-#define sz_xXFixesIntersectRegionReq sz_xXFixesCombineRegionReq
-#define sz_xXFixesSubtractRegionReq sz_xXFixesCombineRegionReq
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region source B32;
- INT16 x B16, y B16;
- CARD16 width B16, height B16;
- Region destination B32;
-} xXFixesInvertRegionReq;
-
-#define sz_xXFixesInvertRegionReq 20
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region region B32;
- INT16 dx B16, dy B16;
-} xXFixesTranslateRegionReq;
-
-#define sz_xXFixesTranslateRegionReq 12
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region source B32;
- Region destination B32;
-} xXFixesRegionExtentsReq;
-
-#define sz_xXFixesRegionExtentsReq 12
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region region B32;
-} xXFixesFetchRegionReq;
-
-#define sz_xXFixesFetchRegionReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BYTE pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- INT16 x B16, y B16;
- CARD16 width B16, height B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xXFixesFetchRegionReply;
-
-#define sz_xXFixesFetchRegionReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- GContext gc B32;
- Region region B32;
- INT16 xOrigin B16, yOrigin B16;
-} xXFixesSetGCClipRegionReq;
-
-#define sz_xXFixesSetGCClipRegionReq 16
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Window dest;
- BYTE destKind;
- CARD8 pad1;
- CARD16 pad2 B16;
- INT16 xOff B16, yOff B16;
- Region region;
-} xXFixesSetWindowShapeRegionReq;
-
-#define sz_xXFixesSetWindowShapeRegionReq 20
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Picture picture B32;
- Region region B32;
- INT16 xOrigin B16, yOrigin B16;
-} xXFixesSetPictureClipRegionReq;
-
-#define sz_xXFixesSetPictureClipRegionReq 16
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Cursor cursor B32;
- CARD16 nbytes B16;
- CARD16 pad B16;
-} xXFixesSetCursorNameReq;
-
-#define sz_xXFixesSetCursorNameReq 12
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Cursor cursor B32;
-} xXFixesGetCursorNameReq;
-
-#define sz_xXFixesGetCursorNameReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BYTE pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Atom atom B32;
- CARD16 nbytes B16;
- CARD16 pad2 B16;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xXFixesGetCursorNameReply;
-
-#define sz_xXFixesGetCursorNameReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
-} xXFixesGetCursorImageAndNameReq;
-
-#define sz_xXFixesGetCursorImageAndNameReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- BYTE pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- INT16 x B16;
- INT16 y B16;
- CARD16 width B16;
- CARD16 height B16;
- CARD16 xhot B16;
- CARD16 yhot B16;
- CARD32 cursorSerial B32;
- Atom cursorName B32;
- CARD16 nbytes B16;
- CARD16 pad B16;
-} xXFixesGetCursorImageAndNameReply;
-
-#define sz_xXFixesGetCursorImageAndNameReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Cursor source B32;
- Cursor destination B32;
-} xXFixesChangeCursorReq;
-
-#define sz_xXFixesChangeCursorReq 12
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Cursor source B32;
- CARD16 nbytes;
- CARD16 pad;
-} xXFixesChangeCursorByNameReq;
-
-#define sz_xXFixesChangeCursorByNameReq 12
-
-/*************** Version 3 ******************/
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Region source B32;
- Region destination B32;
- CARD16 left B16;
- CARD16 right B16;
- CARD16 top B16;
- CARD16 bottom B16;
-} xXFixesExpandRegionReq;
-
-#define sz_xXFixesExpandRegionReq 20
-
-/*************** Version 4.0 ******************/
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Window window B32;
-} xXFixesHideCursorReq;
-
-#define sz_xXFixesHideCursorReq sizeof(xXFixesHideCursorReq)
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Window window B32;
-} xXFixesShowCursorReq;
-
-#define sz_xXFixesShowCursorReq sizeof(xXFixesShowCursorReq)
-
-/*************** Version 5.0 ******************/
-
-#define Barrier CARD32
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Barrier barrier B32;
- Window window B32;
- INT16 x1 B16;
- INT16 y1 B16;
- INT16 x2 B16;
- INT16 y2 B16;
- CARD32 directions;
- CARD16 pad B16;
- CARD16 num_devices B16;
- /* array of CARD16 devices */
-} xXFixesCreatePointerBarrierReq;
-
-#define sz_xXFixesCreatePointerBarrierReq 28
-
-typedef struct {
- CARD8 reqType;
- CARD8 xfixesReqType;
- CARD16 length B16;
- Barrier barrier B32;
-} xXFixesDestroyPointerBarrierReq;
-
-#define sz_xXFixesDestroyPointerBarrierReq 8
-
-#undef Barrier
-#undef Region
-#undef Picture
-#undef Window
-#undef Drawable
-#undef Font
-#undef Pixmap
-#undef Cursor
-#undef Colormap
-#undef GContext
-#undef Atom
-#undef VisualID
-#undef Time
-#undef KeyCode
-#undef KeySym
-
-#endif /* _XFIXESPROTO_H_ */
+/*
+ * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2010 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+/*
+ * Copyright © 2002 Keith Packard, member of The XFree86 Project, 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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 _XFIXESPROTO_H_
+#define _XFIXESPROTO_H_
+
+#include <X11/Xmd.h>
+#include <X11/extensions/xfixeswire.h>
+#include <X11/extensions/shapeconst.h>
+
+#define Window CARD32
+#define Drawable CARD32
+#define Font CARD32
+#define Pixmap CARD32
+#define Cursor CARD32
+#define Colormap CARD32
+#define GContext CARD32
+#define Atom CARD32
+#define VisualID CARD32
+#define Time CARD32
+#define KeyCode CARD8
+#define KeySym CARD32
+#define Picture CARD32
+
+/*************** Version 1 ******************/
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+} xXFixesReq;
+
+/*
+ * requests and replies
+ */
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ CARD32 majorVersion B32;
+ CARD32 minorVersion B32;
+} xXFixesQueryVersionReq;
+
+#define sz_xXFixesQueryVersionReq 12
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BYTE pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 majorVersion B32;
+ CARD32 minorVersion B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xXFixesQueryVersionReply;
+
+#define sz_xXFixesQueryVersionReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ BYTE mode; /* SetModeInsert/SetModeDelete*/
+ BYTE target; /* SaveSetNearest/SaveSetRoot*/
+ BYTE map; /* SaveSetMap/SaveSetUnmap */
+ BYTE pad1;
+ Window window;
+} xXFixesChangeSaveSetReq;
+
+#define sz_xXFixesChangeSaveSetReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Window window B32;
+ Atom selection B32;
+ CARD32 eventMask B32;
+} xXFixesSelectSelectionInputReq;
+
+#define sz_xXFixesSelectSelectionInputReq 16
+
+typedef struct {
+ CARD8 type;
+ CARD8 subtype;
+ CARD16 sequenceNumber B16;
+ Window window B32;
+ Window owner B32;
+ Atom selection B32;
+ Time timestamp B32;
+ Time selectionTimestamp B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xXFixesSelectionNotifyEvent;
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Window window B32;
+ CARD32 eventMask B32;
+} xXFixesSelectCursorInputReq;
+
+#define sz_xXFixesSelectCursorInputReq 12
+
+typedef struct {
+ CARD8 type;
+ CARD8 subtype;
+ CARD16 sequenceNumber B16;
+ Window window B32;
+ CARD32 cursorSerial B32;
+ Time timestamp;
+ Atom name B32; /* Version 2 */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xXFixesCursorNotifyEvent;
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+} xXFixesGetCursorImageReq;
+
+#define sz_xXFixesGetCursorImageReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BYTE pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ INT16 x B16;
+ INT16 y B16;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD16 xhot B16;
+ CARD16 yhot B16;
+ CARD32 cursorSerial B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xXFixesGetCursorImageReply;
+
+#define sz_xXFixesGetCursorImageReply 32
+
+/*************** Version 2 ******************/
+
+#define Region CARD32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region region B32;
+ /* LISTofRECTANGLE */
+} xXFixesCreateRegionReq;
+
+#define sz_xXFixesCreateRegionReq 8
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region region B32;
+ Pixmap bitmap B32;
+} xXFixesCreateRegionFromBitmapReq;
+
+#define sz_xXFixesCreateRegionFromBitmapReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region region B32;
+ Window window B32;
+ CARD8 kind;
+ CARD8 pad1;
+ CARD16 pad2 B16;
+} xXFixesCreateRegionFromWindowReq;
+
+#define sz_xXFixesCreateRegionFromWindowReq 16
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region region B32;
+ GContext gc B32;
+} xXFixesCreateRegionFromGCReq;
+
+#define sz_xXFixesCreateRegionFromGCReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region region B32;
+ Picture picture B32;
+} xXFixesCreateRegionFromPictureReq;
+
+#define sz_xXFixesCreateRegionFromPictureReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region region B32;
+} xXFixesDestroyRegionReq;
+
+#define sz_xXFixesDestroyRegionReq 8
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region region B32;
+ /* LISTofRECTANGLE */
+} xXFixesSetRegionReq;
+
+#define sz_xXFixesSetRegionReq 8
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region source B32;
+ Region destination B32;
+} xXFixesCopyRegionReq;
+
+#define sz_xXFixesCopyRegionReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region source1 B32;
+ Region source2 B32;
+ Region destination B32;
+} xXFixesCombineRegionReq,
+ xXFixesUnionRegionReq,
+ xXFixesIntersectRegionReq,
+ xXFixesSubtractRegionReq;
+
+#define sz_xXFixesCombineRegionReq 16
+#define sz_xXFixesUnionRegionReq sz_xXFixesCombineRegionReq
+#define sz_xXFixesIntersectRegionReq sz_xXFixesCombineRegionReq
+#define sz_xXFixesSubtractRegionReq sz_xXFixesCombineRegionReq
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region source B32;
+ INT16 x B16, y B16;
+ CARD16 width B16, height B16;
+ Region destination B32;
+} xXFixesInvertRegionReq;
+
+#define sz_xXFixesInvertRegionReq 20
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region region B32;
+ INT16 dx B16, dy B16;
+} xXFixesTranslateRegionReq;
+
+#define sz_xXFixesTranslateRegionReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region source B32;
+ Region destination B32;
+} xXFixesRegionExtentsReq;
+
+#define sz_xXFixesRegionExtentsReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region region B32;
+} xXFixesFetchRegionReq;
+
+#define sz_xXFixesFetchRegionReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BYTE pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ INT16 x B16, y B16;
+ CARD16 width B16, height B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xXFixesFetchRegionReply;
+
+#define sz_xXFixesFetchRegionReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ GContext gc B32;
+ Region region B32;
+ INT16 xOrigin B16, yOrigin B16;
+} xXFixesSetGCClipRegionReq;
+
+#define sz_xXFixesSetGCClipRegionReq 16
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Window dest;
+ BYTE destKind;
+ CARD8 pad1;
+ CARD16 pad2 B16;
+ INT16 xOff B16, yOff B16;
+ Region region;
+} xXFixesSetWindowShapeRegionReq;
+
+#define sz_xXFixesSetWindowShapeRegionReq 20
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Picture picture B32;
+ Region region B32;
+ INT16 xOrigin B16, yOrigin B16;
+} xXFixesSetPictureClipRegionReq;
+
+#define sz_xXFixesSetPictureClipRegionReq 16
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Cursor cursor B32;
+ CARD16 nbytes B16;
+ CARD16 pad B16;
+} xXFixesSetCursorNameReq;
+
+#define sz_xXFixesSetCursorNameReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Cursor cursor B32;
+} xXFixesGetCursorNameReq;
+
+#define sz_xXFixesGetCursorNameReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BYTE pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ Atom atom B32;
+ CARD16 nbytes B16;
+ CARD16 pad2 B16;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xXFixesGetCursorNameReply;
+
+#define sz_xXFixesGetCursorNameReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+} xXFixesGetCursorImageAndNameReq;
+
+#define sz_xXFixesGetCursorImageAndNameReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BYTE pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ INT16 x B16;
+ INT16 y B16;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD16 xhot B16;
+ CARD16 yhot B16;
+ CARD32 cursorSerial B32;
+ Atom cursorName B32;
+ CARD16 nbytes B16;
+ CARD16 pad B16;
+} xXFixesGetCursorImageAndNameReply;
+
+#define sz_xXFixesGetCursorImageAndNameReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Cursor source B32;
+ Cursor destination B32;
+} xXFixesChangeCursorReq;
+
+#define sz_xXFixesChangeCursorReq 12
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Cursor source B32;
+ CARD16 nbytes;
+ CARD16 pad;
+} xXFixesChangeCursorByNameReq;
+
+#define sz_xXFixesChangeCursorByNameReq 12
+
+/*************** Version 3 ******************/
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Region source B32;
+ Region destination B32;
+ CARD16 left B16;
+ CARD16 right B16;
+ CARD16 top B16;
+ CARD16 bottom B16;
+} xXFixesExpandRegionReq;
+
+#define sz_xXFixesExpandRegionReq 20
+
+/*************** Version 4.0 ******************/
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Window window B32;
+} xXFixesHideCursorReq;
+
+#define sz_xXFixesHideCursorReq sizeof(xXFixesHideCursorReq)
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Window window B32;
+} xXFixesShowCursorReq;
+
+#define sz_xXFixesShowCursorReq sizeof(xXFixesShowCursorReq)
+
+/*************** Version 5.0 ******************/
+
+#define Barrier CARD32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Barrier barrier B32;
+ Window window B32;
+ INT16 x1 B16;
+ INT16 y1 B16;
+ INT16 x2 B16;
+ INT16 y2 B16;
+ CARD32 directions;
+ CARD16 pad B16;
+ CARD16 num_devices B16;
+ /* array of CARD16 devices */
+} xXFixesCreatePointerBarrierReq;
+
+#define sz_xXFixesCreatePointerBarrierReq 28
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 xfixesReqType;
+ CARD16 length B16;
+ Barrier barrier B32;
+} xXFixesDestroyPointerBarrierReq;
+
+#define sz_xXFixesDestroyPointerBarrierReq 8
+
+#undef Barrier
+#undef Region
+#undef Picture
+#undef Window
+#undef Drawable
+#undef Font
+#undef Pixmap
+#undef Cursor
+#undef Colormap
+#undef GContext
+#undef Atom
+#undef VisualID
+#undef Time
+#undef KeyCode
+#undef KeySym
+
+#endif /* _XFIXESPROTO_H_ */
diff --git a/X11/extensions/xfixeswire.h b/X11/extensions/xfixeswire.h
index 432349a92..664f28e40 100644
--- a/X11/extensions/xfixeswire.h
+++ b/X11/extensions/xfixeswire.h
@@ -1,139 +1,139 @@
-/*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2010 Red Hat, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-/*
- * Copyright © 2002 Keith Packard, member of The XFree86 Project, 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 Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD 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 _XFIXESWIRE_H_
-#define _XFIXESWIRE_H_
-
-#define XFIXES_NAME "XFIXES"
-#define XFIXES_MAJOR 5
-#define XFIXES_MINOR 0
-
-/*************** Version 1 ******************/
-#define X_XFixesQueryVersion 0
-#define X_XFixesChangeSaveSet 1
-#define X_XFixesSelectSelectionInput 2
-#define X_XFixesSelectCursorInput 3
-#define X_XFixesGetCursorImage 4
-/*************** Version 2 ******************/
-#define X_XFixesCreateRegion 5
-#define X_XFixesCreateRegionFromBitmap 6
-#define X_XFixesCreateRegionFromWindow 7
-#define X_XFixesCreateRegionFromGC 8
-#define X_XFixesCreateRegionFromPicture 9
-#define X_XFixesDestroyRegion 10
-#define X_XFixesSetRegion 11
-#define X_XFixesCopyRegion 12
-#define X_XFixesUnionRegion 13
-#define X_XFixesIntersectRegion 14
-#define X_XFixesSubtractRegion 15
-#define X_XFixesInvertRegion 16
-#define X_XFixesTranslateRegion 17
-#define X_XFixesRegionExtents 18
-#define X_XFixesFetchRegion 19
-#define X_XFixesSetGCClipRegion 20
-#define X_XFixesSetWindowShapeRegion 21
-#define X_XFixesSetPictureClipRegion 22
-#define X_XFixesSetCursorName 23
-#define X_XFixesGetCursorName 24
-#define X_XFixesGetCursorImageAndName 25
-#define X_XFixesChangeCursor 26
-#define X_XFixesChangeCursorByName 27
-/*************** Version 3 ******************/
-#define X_XFixesExpandRegion 28
-/*************** Version 4 ******************/
-#define X_XFixesHideCursor 29
-#define X_XFixesShowCursor 30
-/*************** Version 5 ******************/
-#define X_XFixesCreatePointerBarrier 31
-#define X_XFixesDestroyPointerBarrier 32
-
-#define XFixesNumberRequests (X_XFixesDestroyPointerBarrier+1)
-
-/* Selection events share one event number */
-#define XFixesSelectionNotify 0
-
-/* Within the selection, the 'subtype' field distinguishes */
-#define XFixesSetSelectionOwnerNotify 0
-#define XFixesSelectionWindowDestroyNotify 1
-#define XFixesSelectionClientCloseNotify 2
-
-#define XFixesSetSelectionOwnerNotifyMask (1L << 0)
-#define XFixesSelectionWindowDestroyNotifyMask (1L << 1)
-#define XFixesSelectionClientCloseNotifyMask (1L << 2)
-
-/* There's only one cursor event so far */
-#define XFixesCursorNotify 1
-
-#define XFixesDisplayCursorNotify 0
-
-#define XFixesDisplayCursorNotifyMask (1L << 0)
-
-#define XFixesNumberEvents (2)
-
-/* errors */
-#define BadRegion 0
-#define BadBarrier 1
-#define XFixesNumberErrors (BadBarrier+1)
-
-#define SaveSetNearest 0
-#define SaveSetRoot 1
-
-#define SaveSetMap 0
-#define SaveSetUnmap 1
-
-/*************** Version 2 ******************/
-
-#define WindowRegionBounding 0
-#define WindowRegionClip 1
-
-/*************** Version 5 ******************/
-
-#define BarrierPositiveX (1L << 0)
-#define BarrierPositiveY (1L << 1)
-#define BarrierNegativeX (1L << 2)
-#define BarrierNegativeY (1L << 3)
-
-#endif /* _XFIXESWIRE_H_ */
+/*
+ * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2010 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+/*
+ * Copyright © 2002 Keith Packard, member of The XFree86 Project, 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 Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD 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 _XFIXESWIRE_H_
+#define _XFIXESWIRE_H_
+
+#define XFIXES_NAME "XFIXES"
+#define XFIXES_MAJOR 5
+#define XFIXES_MINOR 0
+
+/*************** Version 1 ******************/
+#define X_XFixesQueryVersion 0
+#define X_XFixesChangeSaveSet 1
+#define X_XFixesSelectSelectionInput 2
+#define X_XFixesSelectCursorInput 3
+#define X_XFixesGetCursorImage 4
+/*************** Version 2 ******************/
+#define X_XFixesCreateRegion 5
+#define X_XFixesCreateRegionFromBitmap 6
+#define X_XFixesCreateRegionFromWindow 7
+#define X_XFixesCreateRegionFromGC 8
+#define X_XFixesCreateRegionFromPicture 9
+#define X_XFixesDestroyRegion 10
+#define X_XFixesSetRegion 11
+#define X_XFixesCopyRegion 12
+#define X_XFixesUnionRegion 13
+#define X_XFixesIntersectRegion 14
+#define X_XFixesSubtractRegion 15
+#define X_XFixesInvertRegion 16
+#define X_XFixesTranslateRegion 17
+#define X_XFixesRegionExtents 18
+#define X_XFixesFetchRegion 19
+#define X_XFixesSetGCClipRegion 20
+#define X_XFixesSetWindowShapeRegion 21
+#define X_XFixesSetPictureClipRegion 22
+#define X_XFixesSetCursorName 23
+#define X_XFixesGetCursorName 24
+#define X_XFixesGetCursorImageAndName 25
+#define X_XFixesChangeCursor 26
+#define X_XFixesChangeCursorByName 27
+/*************** Version 3 ******************/
+#define X_XFixesExpandRegion 28
+/*************** Version 4 ******************/
+#define X_XFixesHideCursor 29
+#define X_XFixesShowCursor 30
+/*************** Version 5 ******************/
+#define X_XFixesCreatePointerBarrier 31
+#define X_XFixesDestroyPointerBarrier 32
+
+#define XFixesNumberRequests (X_XFixesDestroyPointerBarrier+1)
+
+/* Selection events share one event number */
+#define XFixesSelectionNotify 0
+
+/* Within the selection, the 'subtype' field distinguishes */
+#define XFixesSetSelectionOwnerNotify 0
+#define XFixesSelectionWindowDestroyNotify 1
+#define XFixesSelectionClientCloseNotify 2
+
+#define XFixesSetSelectionOwnerNotifyMask (1L << 0)
+#define XFixesSelectionWindowDestroyNotifyMask (1L << 1)
+#define XFixesSelectionClientCloseNotifyMask (1L << 2)
+
+/* There's only one cursor event so far */
+#define XFixesCursorNotify 1
+
+#define XFixesDisplayCursorNotify 0
+
+#define XFixesDisplayCursorNotifyMask (1L << 0)
+
+#define XFixesNumberEvents (2)
+
+/* errors */
+#define BadRegion 0
+#define BadBarrier 1
+#define XFixesNumberErrors (BadBarrier+1)
+
+#define SaveSetNearest 0
+#define SaveSetRoot 1
+
+#define SaveSetMap 0
+#define SaveSetUnmap 1
+
+/*************** Version 2 ******************/
+
+#define WindowRegionBounding 0
+#define WindowRegionClip 1
+
+/*************** Version 5 ******************/
+
+#define BarrierPositiveX (1L << 0)
+#define BarrierPositiveY (1L << 1)
+#define BarrierNegativeX (1L << 2)
+#define BarrierNegativeY (1L << 3)
+
+#endif /* _XFIXESWIRE_H_ */
diff --git a/X11/extensions/xtestext1.h b/X11/extensions/xtestext1.h
index 8f49cad07..d6fae784e 100644
--- a/X11/extensions/xtestext1.h
+++ b/X11/extensions/xtestext1.h
@@ -1,326 +1,84 @@
-/* $Xorg: xtestext1.h,v 1.4 2001/02/09 02:03:24 xorgcvs Exp $ */
-/*
- * xtestext1.h
- *
- * X11 Input Synthesis Extension include file
- */
-
-/*
-
-
-Copyright 1986, 1987, 1988, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1986, 1987, 1988 by Hewlett-Packard Corporation
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, 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 Hewlett-Packard not be used in
-advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-Hewlett-Packard makes no representations about the
-suitability of this software for any purpose. It is provided
-"as is" without express or implied warranty.
-
-This software is not subject to any license of the American
-Telephone and Telegraph Company or of the Regents of the
-University of California.
-
-*/
-
-/*
- * the typedefs for CARD8, CARD16, and CARD32 are defined in Xmd.h
- */
-
-/*
- * used in the XTestPressButton and XTestPressKey functions
- */
-#define XTestPRESS 1 << 0
-#define XTestRELEASE 1 << 1
-#define XTestSTROKE 1 << 2
-
-/*
- * When doing a key or button stroke, the number of milliseconds
- * to delay between the press and the release of a key or button
- * in the XTestPressButton and XTestPressKey functions.
- */
-
-#define XTestSTROKE_DELAY_TIME 10
-
-/*
- * used in the XTestGetInput function
- */
-#define XTestEXCLUSIVE 1 << 0
-#define XTestPACKED_ACTIONS 1 << 1
-#define XTestPACKED_MOTION 1 << 2
-
-/*
- * used in the XTestFakeInput function
- */
-#define XTestFAKE_ACK_NOT_NEEDED 0
-#define XTestFAKE_ACK_REQUEST 1
-
-/*
- * used in the XTest extension initialization routine
- */
-#define XTestEXTENSION_NAME "XTestExtension1"
-#define XTestEVENT_COUNT 2
-
-/*
- * XTest request type values
- *
- * used in the XTest extension protocol requests
- */
-#define X_TestFakeInput 1
-#define X_TestGetInput 2
-#define X_TestStopInput 3
-#define X_TestReset 4
-#define X_TestQueryInputSize 5
-
-/*
- * This defines the maximum size of a list of input actions
- * to be sent to the server. It should always be a multiple of
- * 4 so that the entire xTestFakeInputReq structure size is a
- * multiple of 4.
- */
-#define XTestMAX_ACTION_LIST_SIZE 64
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestFakeInput */
- CARD16 length B16; /* 2 + XTestMAX_ACTION_LIST_SIZE/4 */
- CARD32 ack B32;
- CARD8 action_list[XTestMAX_ACTION_LIST_SIZE];
-} xTestFakeInputReq;
-#define sz_xTestFakeInputReq (XTestMAX_ACTION_LIST_SIZE + 8)
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestGetInput */
- CARD16 length B16; /* 2 */
- CARD32 mode B32;
-} xTestGetInputReq;
-#define sz_xTestGetInputReq 8
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestStopInput */
- CARD16 length B32; /* 1 */
-} xTestStopInputReq;
-#define sz_xTestStopInputReq 4
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestReset */
- CARD16 length B16; /* 1 */
-} xTestResetReq;
-#define sz_xTestResetReq 4
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestQueryInputSize */
- CARD16 length B16; /* 1 */
-} xTestQueryInputSizeReq;
-#define sz_xTestQueryInputSizeReq 4
-
-/*
- * This is the definition of the reply for the xTestQueryInputSize
- * request. It should remain the same minimum size as other replies
- * (32 bytes).
- */
-typedef struct {
- CARD8 type; /* always X_Reply */
- CARD8 pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32; /* always 0 */
- CARD32 size_return B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xTestQueryInputSizeReply;
-
-/*
- * This is the definition for the input action wire event structure.
- * This event is sent to the client when the server has one or
- * more user input actions to report to the client. It must
- * remain the same size as all other wire events (32 bytes).
- */
-#define XTestACTIONS_SIZE 28
-
-typedef struct {
- CARD8 type; /* always XTestInputActionType */
- CARD8 pad00;
- CARD16 sequenceNumber B16;
- CARD8 actions[XTestACTIONS_SIZE];
-} xTestInputActionEvent;
-
-/*
- * This is the definition for the xTestFakeAck wire event structure.
- * This event is sent to the client when the server has completely
- * processed its input action buffer, and is ready for more.
- * It must remain the same size as all other wire events (32 bytes).
- */
-typedef struct {
- CARD8 type; /* always XTestFakeAckType */
- CARD8 pad00;
- CARD16 sequenceNumber B16;
- CARD32 pad02 B32;
- CARD32 pad03 B32;
- CARD32 pad04 B32;
- CARD32 pad05 B32;
- CARD32 pad06 B32;
- CARD32 pad07 B32;
- CARD32 pad08 B32;
-} xTestFakeAckEvent;
-
-/*
- * The server side of this extension does not (and should not) have
- * definitions for Display and Window. The ifndef allows the server
- * side of the extension to ignore the following typedefs.
- */
-#ifndef XTestSERVER_SIDE
-/*
- * This is the definition for the input action host format event structure.
- * This is the form that a client using this extension will see when
- * it receives an input action event.
- */
-typedef struct {
- int type; /* always XTestInputActionType */
- Display *display;
- Window window;
- CARD8 actions[XTestACTIONS_SIZE];
-} XTestInputActionEvent;
-
-/*
- * This is the definition for the xTestFakeAck host format event structure.
- * This is the form that a client using this extension will see when
- * it receives an XTestFakeAck event.
- */
-typedef struct {
- int type; /* always XTestFakeAckType */
- Display *display;
- Window window;
-} XTestFakeAckEvent;
-#endif
-
-/*
- * This is the definition for the format of the header byte
- * in the input action structures.
- */
-#define XTestACTION_TYPE_MASK 0x03 /* bits 0 and 1 */
-#define XTestKEY_STATE_MASK 0x04 /* bit 2 (key action) */
-#define XTestX_SIGN_BIT_MASK 0x04 /* bit 2 (motion action) */
-#define XTestY_SIGN_BIT_MASK 0x08 /* bit 3 (motion action) */
-#define XTestDEVICE_ID_MASK 0xf0 /* bits 4 through 7 */
-
-#define XTestMAX_DEVICE_ID 0x0f
-#define XTestPackDeviceID(x) (((x) & XTestMAX_DEVICE_ID) << 4)
-#define XTestUnpackDeviceID(x) (((x) & XTestDEVICE_ID_MASK) >> 4)
-
-/*
- * These are the possible action types.
- */
-#define XTestDELAY_ACTION 0
-#define XTestKEY_ACTION 1
-#define XTestMOTION_ACTION 2
-#define XTestJUMP_ACTION 3
-
-/*
- * These are the definitions for key/button motion input actions.
- */
-#define XTestKEY_UP 0x04
-#define XTestKEY_DOWN 0x00
-
-typedef struct {
- CARD8 header; /* which device, key up/down */
- CARD8 keycode; /* which key/button to move */
- CARD16 delay_time B16; /* how long to delay (in ms) */
-} XTestKeyInfo;
-
-/*
- * This is the definition for pointer jump input actions.
- */
-typedef struct {
- CARD8 header; /* which pointer */
- CARD8 pad1; /* unused padding byte */
- CARD16 jumpx B16; /* x coord to jump to */
- CARD16 jumpy B16; /* y coord to jump to */
- CARD16 delay_time B16; /* how long to delay (in ms) */
-} XTestJumpInfo;
-
-/*
- * These are the definitions for pointer relative motion input
- * actions.
- *
- * The sign bits for the x and y relative motions are contained
- * in the header byte. The x and y relative motions are packed
- * into one byte to make things fit in 32 bits. If the relative
- * motion range is larger than +/-15, use the pointer jump action.
- */
-#define XTestMOTION_MAX 15
-#define XTestMOTION_MIN -15
-
-#define XTestX_NEGATIVE 0x04
-#define XTestY_NEGATIVE 0x08
-
-#define XTestX_MOTION_MASK 0x0f
-#define XTestY_MOTION_MASK 0xf0
-
-#define XTestPackXMotionValue(x) ((x) & XTestX_MOTION_MASK)
-#define XTestPackYMotionValue(x) (((x) << 4) & XTestY_MOTION_MASK)
-
-#define XTestUnpackXMotionValue(x) ((x) & XTestX_MOTION_MASK)
-#define XTestUnpackYMotionValue(x) (((x) & XTestY_MOTION_MASK) >> 4)
-
-typedef struct {
- CARD8 header; /* which pointer */
- CARD8 motion_data; /* x,y relative motion */
- CARD16 delay_time B16; /* how long to delay (in ms) */
-} XTestMotionInfo;
-
-/*
- * These are the definitions for a long delay input action. It is
- * used when more than XTestSHORT_DELAY_TIME milliseconds of delay
- * (approximately one minute) is needed.
- *
- * The device ID for a delay is always set to XTestDELAY_DEVICE_ID.
- * This guarantees that a header byte with a value of 0 is not
- * a valid header, so it can be used as a flag to indicate that
- * there are no more input actions in an XTestInputAction event.
- */
-
-#define XTestSHORT_DELAY_TIME 0xffff
-#define XTestDELAY_DEVICE_ID 0x0f
-
-typedef struct {
- CARD8 header; /* always XTestDELAY_DEVICE_ID */
- CARD8 pad1; /* unused padding byte */
- CARD16 pad2 B16; /* unused padding word */
- CARD32 delay_time B32; /* how long to delay (in ms) */
-} XTestDelayInfo;
+/*
+ * xtestext1.h
+ *
+ * X11 Input Synthesis Extension include file
+ */
+
+/*
+
+
+Copyright 1986, 1987, 1988, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1986, 1987, 1988 by Hewlett-Packard Corporation
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, 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 Hewlett-Packard not be used in
+advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+Hewlett-Packard makes no representations about the
+suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+This software is not subject to any license of the American
+Telephone and Telegraph Company or of the Regents of the
+University of California.
+
+*/
+
+#ifndef _XTESTEXT1_H
+#define _XTESTEXT1_H
+/*
+ * the typedefs for CARD8, CARD16, and CARD32 are defined in Xmd.h
+ */
+
+#include <X11/extensions/xtestext1const.h>
+/*
+ * This is the definition for the input action host format event structure.
+ * This is the form that a client using this extension will see when
+ * it receives an input action event.
+ */
+typedef struct {
+ int type; /* always XTestInputActionType */
+ Display *display;
+ Window window;
+ CARD8 actions[XTestACTIONS_SIZE];
+} XTestInputActionEvent;
+
+/*
+ * This is the definition for the xTestFakeAck host format event structure.
+ * This is the form that a client using this extension will see when
+ * it receives an XTestFakeAck event.
+ */
+typedef struct {
+ int type; /* always XTestFakeAckType */
+ Display *display;
+ Window window;
+} XTestFakeAckEvent;
+
+#endif /* _XTESTEXT1_H */