6.13. Data Definitions for libXext

This section defines global identifiers and their values that are associated with interfaces contained in libXext. These definitions are organized into groups that correspond to system headers. This convention is used as a convenience for the reader, and does not imply the existence of these headers, or their content. Where an interface is defined as requiring a particular system header file all of the data definitions for that system header file presented here shall be in effect.

This section gives data definitions to promote binary application portability, not to repeat source interface definitions available elsewhere. System providers and application developers should use this ABI to supplement - not to replace - source interface definition specifications.

This specification uses the ISO C (1999) C Language as the reference programming language, and data definitions are specified in ISO C format. The C language is used here as a convenient notation. Using a C language description of these data objects does not preclude their use by other programming languages.

6.13.1. X11/extensions/XEVI.h


#define XEVI_TRANSPARENCY_NONE	0
#define X_EVIQueryVersion	0
#define XEVI_TRANSPARENCY_PIXEL	1
#define X_EVIGetVisualInfo	1
#define XEVI_TRANSPARENCY_MASK	2

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;
extern int XeviGetVisualInfo(Display *, VisualID *, int,
			     ExtendedVisualInfo * *, int *);
extern int XeviQueryExtension(Display *);
extern int XeviQueryVersion(Display *, int *, int *);

6.13.2. X11/extensions/XEVIstr.h


#define XEVI_MINOR_VERSION	0
#define XEVI_MAJOR_VERSION	1
#define _EVISTR_H_	1
#define sz_xExtendedVisualInfo	16
#define sz_xEVIGetVisualInfoReply	32
#define sz_xEVIQueryVersionReply	32
#define sz_VisualID32	4
#define sz_xEVIQueryVersionReq	4
#define sz_xEVIGetVisualInfoReq	8
#define EVINAME	"Extended-Visual-Information"

typedef unsigned int VisualID32;
typedef struct _xExtendedVisualInfo {
    CARD32 core_visual_id;
    INT8 screen;
    INT8 level;
    CARD8 transparency_type;
    CARD8 pad0;
    CARD32 transparency_value;
    CARD8 min_hw_colormaps;
    CARD8 max_hw_colormaps;
    CARD16 num_colormap_conflicts;
} xExtendedVisualInfo;
typedef struct _XEVIQueryVersion {
    CARD8 reqType;
    CARD8 xeviReqType;
    CARD16 length;
} xEVIQueryVersionReq;
typedef struct {
    BYTE type;
    CARD8 unused;
    CARD16 sequenceNumber;
    CARD32 length;
    CARD16 majorVersion;
    CARD16 minorVersion;
    CARD32 pad0;
    CARD32 pad1;
    CARD32 pad2;
    CARD32 pad3;
    CARD32 pad4;
} xEVIQueryVersionReply;
typedef struct _XEVIGetVisualInfoReq {
    CARD8 reqType;
    CARD8 xeviReqType;
    CARD16 length;
    CARD32 n_visual;
} xEVIGetVisualInfoReq;
typedef struct _XEVIGetVisualInfoReply {
    BYTE type;
    CARD8 unused;
    CARD16 sequenceNumber;
    CARD32 length;
    CARD32 n_info;
    CARD32 n_conflicts;
    CARD32 pad0;
    CARD32 pad1;
    CARD32 pad2;
    CARD32 pad3;
} xEVIGetVisualInfoReply;

6.13.3. X11/extensions/XKBbells.h


#define _XKBBELLS_H_
#define XkbBI_Info	0
#define XkbBI_Warning	1
#define XkbBI_Failure	10
#define XkbBI_Wait	11
#define XkbBI_Proceed	12
#define XkbBI_Ignore	13
#define XkbBI_Iconify	14
#define XkbBI_Deiconify	15
#define XkbBI_Open	16
#define XkbBI_Close	17
#define XkbBI_TerminalBell	18
#define XkbBI_MarginBell	19
#define XkbBI_MinorError	2
#define XkbBI_CursorStuck	20
#define XkbBI_NewMail	21
#define XkbBI_LaunchApp	22
#define XkbBI_AppDeath	23
#define XkbBI_ImAlive	24
#define XkbBI_ClockChimeHour	25
#define XkbBI_ClockChimeHalf	26
#define XkbBI_ClockChimeQuarter	27
#define XkbBI_RepeatingLastBell	28
#define XkbBI_ComposeFail	29
#define XkbBI_MajorError	3
#define XkbBI_AX_FeatureOn	30
#define XkbBI_AX_FeatureOff	31
#define XkbBI_AX_FeatureChange	32
#define XkbBI_AX_IndicatorOn	33
#define XkbBI_AX_IndicatorOff	34
#define XkbBI_AX_IndicatorChange	35
#define XkbBI_AX_SlowKeysWarning	36
#define XkbBI_AX_SlowKeyPress	37
#define XkbBI_AX_SlowKeyAccept	38
#define XkbBI_AX_SlowKeyReject	39
#define XkbBI_BadValue	4
#define XkbBI_AX_SlowKeyRelease	40
#define XkbBI_AX_BounceKeyReject	41
#define XkbBI_AX_StickyLatch	42
#define XkbBI_AX_StickyLock	43
#define XkbBI_AX_StickyUnlock	44
#define XkbBI_NumBells	45
#define XkbBI_InvalidLocation	5
#define XkbBI_Question	6
#define XkbBI_Start	7
#define XkbBI_End	8
#define XkbBI_Success	9
#define XkbBN_AppDeath	"AppDeath"
#define XkbBN_AX_BounceKeyReject	"AX_BounceKeyReject"
#define XkbBN_AX_FeatureChange	"AX_FeatureChange"
#define XkbBN_AX_FeatureOff	"AX_FeatureOff"
#define XkbBN_AX_FeatureOn	"AX_FeatureOn"
#define XkbBN_AX_IndicatorChange	"AX_IndicatorChange"
#define XkbBN_AX_IndicatorOff	"AX_IndicatorOff"
#define XkbBN_AX_IndicatorOn	"AX_IndicatorOn"
#define XkbBN_AX_SlowKeyAccept	"AX_SlowKeyAccept"
#define XkbBN_AX_SlowKeyPress	"AX_SlowKeyPress"
#define XkbBN_AX_SlowKeyReject	"AX_SlowKeyReject"
#define XkbBN_AX_SlowKeyRelease	"AX_SlowKeyRelease"
#define XkbBN_AX_SlowKeysWarning	"AX_SlowKeysWarning"
#define XkbBN_AX_StickyLatch	"AX_StickyLatch"
#define XkbBN_AX_StickyLock	"AX_StickyLock"
#define XkbBN_AX_StickyUnlock	"AX_StickyUnlock"
#define XkbBN_BadValue	"BadValue"
#define XkbBN_ClockChimeHalf	"ClockChimeHalf"
#define XkbBN_ClockChimeHour	"ClockChimeHour"
#define XkbBN_ClockChimeQuarter	"ClockChimeQuarter"
#define XkbBN_Close	"Close"
#define XkbBN_ComposeFail	"ComposeFail"
#define XkbBN_CursorStuck	"CursorStuck"
#define XkbBN_Deiconify	"Deconify"
#define XkbBN_End	"End"
#define XkbBN_Failure	"Failure"
#define XkbBN_Iconify	"Iconify"
#define XkbBN_Ignore	"Ignore"
#define XkbBN_ImAlive	"ImAlive"
#define XkbBN_Info	"Info"
#define XkbBN_InvalidLocation	"InvalidLocation"
#define XkbBN_LaunchApp	"LaunchApp"
#define XkbBN_MajorError	"MajorError"
#define XkbBN_MarginBell	"MarginBell"
#define XkbBN_MinorError	"MinorError"
#define XkbBN_NewMail	"NewMail"
#define XkbBN_Open	"Open"
#define XkbBN_Proceed	"Proceed"
#define XkbBN_Question	"Question"
#define XkbBN_RepeatingLastBell	"RepeatingLastBell"
#define XkbBN_Start	"Start"
#define XkbBN_Success	"Success"
#define XkbBN_TerminalBell	"TerminalBell"
#define XkbBN_Wait	"Wait"
#define XkbBN_Warning	"Warning"

6.13.4. X11/extensions/XShm.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 int ShmSeg;
typedef struct {
    int type;
    unsigned long int serial;
    int send_event;
    Display *display;
    Drawable drawable;
    int major_code;
    int minor_code;
    ShmSeg shmseg;
    unsigned long int offset;
} XShmCompletionEvent;
typedef struct {
    ShmSeg shmseg;
    int shmid;
    char *shmaddr;
    int readOnly;
} XShmSegmentInfo;
extern int XShmAttach(Display *, XShmSegmentInfo *);
extern XImage *XShmCreateImage(Display *, Visual *, unsigned int, int,
			       char *, XShmSegmentInfo *, unsigned int,
			       unsigned int);
extern Pixmap XShmCreatePixmap(Display *, Drawable, char *,
			       XShmSegmentInfo *, unsigned int,
			       unsigned int, unsigned int);
extern int XShmDetach(Display *, XShmSegmentInfo *);
extern int XShmGetEventBase(Display *);
extern int XShmGetImage(Display *, Drawable, XImage *, int, int,
			unsigned long int);
extern int XShmPixmapFormat(Display *);
extern int XShmPutImage(Display *, Drawable, GC, XImage *, int, int, int,
			int, unsigned int, unsigned int, int);
extern int XShmQueryExtension(Display *);
extern int XShmQueryVersion(Display *, int *, int *, int *);

6.13.5. X11/extensions/Xdbe.h


#define XdbeBadBuffer	0

typedef Drawable XdbeBackBuffer;
typedef unsigned char XdbeSwapAction;
typedef struct {
    Window swap_window;
    XdbeSwapAction swap_action;
} XdbeSwapInfo;
typedef struct {
    Window window;
} XdbeBackBufferAttributes;
typedef struct {
    int type;
    Display *display;
    XdbeBackBuffer buffer;
    unsigned long int serial;
    unsigned char error_code;
    unsigned char request_code;
    unsigned char minor_code;
} XdbeBufferError;
extern XdbeBackBuffer XdbeAllocateBackBufferName(Display *, Window,
						 XdbeSwapAction);
extern int XdbeBeginIdiom(Display *);
extern int XdbeDeallocateBackBufferName(Display *, XdbeBackBuffer);
extern int XdbeEndIdiom(Display *);
extern void XdbeFreeVisualInfo(XdbeScreenVisualInfo *);
extern XdbeBackBufferAttributes *XdbeGetBackBufferAttributes(Display *,
							     XdbeBackBuffer);
extern XdbeScreenVisualInfo *XdbeGetVisualInfo(Display *, Drawable *,
					       int *);
extern int XdbeQueryExtension(Display *, int *, int *);
extern int XdbeSwapBuffers(Display *, XdbeSwapInfo *, int);

6.13.6. X11/extensions/Xdbeproto.h


#define DbeNumberErrors	(DbeBadBuffer + 1)
#define DBE_MINOR_VERSION	0
#define DbeBadBuffer	0
#define DbeNumberEvents	0
#define X_DbeGetVersion	0
#define XdbeUndefined	0
#define DBE_MAJOR_VERSION	1
#define X_DbeAllocateBackBufferName	1
#define XdbeBackground	1
#define X_DbeDeallocateBackBufferName	2
#define XdbeUntouched	2
#define X_DbeSwapBuffers	3
#define XdbeCopied	3
#define X_DbeBeginIdiom	4
#define X_DbeEndIdiom	5
#define X_DbeGetVisualInfo	6
#define X_DbeGetBackBufferAttributes	7
#define DBE_PROTOCOL_NAME	"DOUBLE-BUFFER"

typedef CARD8 xDbeSwapAction;
typedef CARD32 xDbeBackBuffer;

6.13.7. X11/extensions/Xext.h


#define X_EXTENSION_MISSING	"missing"
#define X_EXTENSION_UNKNOWN	"unknown"

extern int XMissingExtension(Display *, const char *);
extern
    int (*XSetExtensionErrorHandler(int (*)(Display *, char *, char *)))
    (Display *, char *, char *);

6.13.8. X11/extensions/dpms.h


#define DPMSModeOn	0
#define DPMSModeStandby	1
#define DPMSModeSuspend	2
#define DPMSModeOff	3

extern int DPMSCapable(Display *);
extern int DPMSDisable(Display *);
extern int DPMSEnable(Display *);
extern int DPMSForceLevel(Display *, CARD16);
extern int DPMSGetTimeouts(Display *, CARD16 *, CARD16 *, CARD16 *);
extern int DPMSGetVersion(Display *, int *, int *);
extern int DPMSInfo(Display *, CARD16 *, BOOL *);
extern int DPMSQueryExtension(Display *, int *, int *);
extern int DPMSSetTimeouts(Display *, CARD16, CARD16, CARD16);

6.13.9. X11/extensions/dpmsstr.h


#define DPMSNumberErrors	0
#define DPMSNumberEvents	0
#define X_DPMSGetVersion	0
#define DPMSMajorVersion	1
#define DPMSMinorVersion	1
#define X_DPMSCapable	1
#define _DPMSSTR_H_	1
#define sz_xDPMSSetTimeoutsReq	12
#define X_DPMSGetTimeouts	2
#define X_DPMSSetTimeouts	3
#define sz_xDPMSCapableReply	32
#define sz_xDPMSGetTimeoutsReply	32
#define sz_xDPMSGetVersionReply	32
#define sz_xDPMSInfoReply	32
#define X_DPMSEnable	4
#define sz_xDPMSCapableReq	4
#define sz_xDPMSDisableReq	4
#define sz_xDPMSEnableReq	4
#define sz_xDPMSGetTimeoutsReq	4
#define sz_xDPMSInfoReq	4
#define X_DPMSDisable	5
#define X_DPMSForceLevel	6
#define X_DPMSInfo	7
#define sz_xDPMSForceLevelReq	8
#define sz_xDPMSGetVersionReq	8
#define DPMSExtensionName	"DPMS"

typedef struct {
    CARD8 reqType;
    CARD8 dpmsReqType;
    CARD16 length;
    CARD16 majorVersion;
    CARD16 minorVersion;
} xDPMSGetVersionReq;
typedef struct {
    BYTE type;
    CARD8 pad0;
    CARD16 sequenceNumber;
    CARD32 length;
    CARD16 majorVersion;
    CARD16 minorVersion;
    CARD32 pad1;
    CARD32 pad2;
    CARD32 pad3;
    CARD32 pad4;
    CARD32 pad5;
} xDPMSGetVersionReply;
typedef struct {
    CARD8 reqType;
    CARD8 dpmsReqType;
    CARD16 length;
} xDPMSCapableReq;
typedef struct {
    BYTE type;
    CARD8 pad0;
    CARD16 sequenceNumber;
    CARD32 length;
    BOOL capable;
    CARD8 pad1;
    CARD16 pad2;
    CARD32 pad3;
    CARD32 pad4;
    CARD32 pad5;
    CARD32 pad6;
    CARD32 pad7;
} xDPMSCapableReply;
typedef struct {
    CARD8 reqType;
    CARD8 dpmsReqType;
    CARD16 length;
} xDPMSGetTimeoutsReq;
typedef struct {
    BYTE type;
    CARD8 pad0;
    CARD16 sequenceNumber;
    CARD32 length;
    CARD16 standby;
    CARD16 suspend;
    CARD16 off;
    CARD16 pad1;
    CARD32 pad2;
    CARD32 pad3;
    CARD32 pad4;
    CARD32 pad5;
} xDPMSGetTimeoutsReply;
typedef struct {
    CARD8 reqType;
    CARD8 dpmsReqType;
    CARD16 length;
    CARD16 standby;
    CARD16 suspend;
    CARD16 off;
    CARD16 pad0;
} xDPMSSetTimeoutsReq;
typedef struct {
    CARD8 reqType;
    CARD8 dpmsReqType;
    CARD16 length;
} xDPMSEnableReq;
typedef struct {
    CARD8 reqType;
    CARD8 dpmsReqType;
    CARD16 length;
} xDPMSDisableReq;
typedef struct {
    CARD8 reqType;
    CARD8 dpmsReqType;
    CARD16 length;
    CARD16 level;
    CARD16 pad0;
} xDPMSForceLevelReq;
typedef struct {
    CARD8 reqType;
    CARD8 dpmsReqType;
    CARD16 length;
} xDPMSInfoReq;
typedef struct {
    BYTE type;
    CARD8 pad0;
    CARD16 sequenceNumber;
    CARD32 length;
    CARD16 power_level;
    BOOL state;
    CARD8 pad1;
    CARD32 pad2;
    CARD32 pad3;
    CARD32 pad4;
    CARD32 pad5;
    CARD32 pad6;
} xDPMSInfoReply;

6.13.10. X11/extensions/extutil.h


#define XextHasExtension(i)	((i) && ((i)->codes))
#define XEXT_ERROR_STRING_PROTO(proc)	\
        char *proc(Display *dpy, int code, XExtCodes *codes, char *buf, int n)
#define XEXT_CLOSE_DISPLAY_PROTO(proc)	\
        int proc(Display *dpy, XExtCodes *codes)
#define XEXT_FIND_DISPLAY_PROTO(proc)	\
        XExtDisplayInfo *proc(Display *dpy)
#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; }
#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_GENERATE_CLOSE_DISPLAY(proc,extinfo)	\
int proc (Display *dpy, XExtCodes *codes) \
{ \
    return XextRemoveDisplay (extinfo, dpy); \
}
#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; \
}

typedef struct _XExtDisplayInfo {
    struct _XExtDisplayInfo *next;
    Display *display;
    XExtCodes *codes;
    XPointer data;
} XExtDisplayInfo;
typedef struct _XExtensionInfo {
    XExtDisplayInfo *head;
    XExtDisplayInfo *cur;
    int ndisplays;
} XExtensionInfo;
typedef struct _XExtensionHooks {
    int (*create_gc) (Display *, GC, XExtCodes *);
    int (*copy_gc) (Display *, GC, XExtCodes *);
    int (*flush_gc) (Display *, GC, XExtCodes *);
    int (*free_gc) (Display *, GC, XExtCodes *);
    int (*create_font) (Display *, XFontStruct *, XExtCodes *);
    int (*free_font) (Display *, XFontStruct *, XExtCodes *);
    int (*close_display) (Display *, XExtCodes *);
    int (*wire_to_event) (Display *, XEvent *, xEvent *);
    int (*event_to_wire) (Display *, XEvent *, xEvent *);
    int (*error) (Display *, xError *, XExtCodes *, int *);
    char *(*error_string) (Display *, int, XExtCodes *, char *, int);
} XExtensionHooks;
extern XExtDisplayInfo *XextAddDisplay(XExtensionInfo *, Display *, char *,
				       XExtensionHooks *, int, XPointer);
extern XExtensionInfo *XextCreateExtension(void);
extern void XextDestroyExtension(XExtensionInfo *);
extern XExtDisplayInfo *XextFindDisplay(XExtensionInfo *, Display *);
extern int XextRemoveDisplay(XExtensionInfo *, Display *);

6.13.11. X11/extensions/security.h


#define XSecurityAuthorizationName	"XC-QUERY-SECURITY-1"
#define XSecurityAuthorizationRevokedMask	(1<<0)
#define XSecurityTimeout	(1<<0)
#define XSecurityTrustLevel	(1<<1)
#define XSecurityGroup	(1<<2)
#define XSecurityEventMask	(1<<3)
#define XSecurityAllAuthorizationAttributes	(XSecurityTimeout | XSecurityTrustLevel | XSecurityGroup | XSecurityEventMask)
#define XSecurityAuthorizationRevoked	0
#define XSecurityBadAuthorization	0
#define XSecurityClientTrusted	0
#define XSecurityBadAuthorizationProtocol	1
#define XSecurityClientUntrusted	1
#define XSecurityNumberEvents	1
#define XSecurityAuthorizationNameLen	19
#define XSecurityNumberErrors	2
#define XSecurityAllEventMasks	XSecurityAuthorizationRevokedMask

typedef unsigned long int XSecurityAuthorization;
typedef struct {
    unsigned int timeout;
    unsigned int trust_level;
    XID group;
    long int event_mask;
} XSecurityAuthorizationAttributes;
typedef struct {
    int type;
    unsigned long int serial;
    int send_event;
    Display *display;
    XSecurityAuthorization auth_id;
} XSecurityAuthorizationRevokedEvent;
extern Xauth *XSecurityAllocXauth(void);
extern void XSecurityFreeXauth(Xauth *);
extern Xauth *XSecurityGenerateAuthorization(Display *, Xauth *,
					     unsigned long int,
					     XSecurityAuthorizationAttributes
					     *, XSecurityAuthorization *);
extern int XSecurityQueryExtension(Display *, int *, int *);
extern int XSecurityRevokeAuthorization(Display *, XSecurityAuthorization);

6.13.12. X11/extensions/shape.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)

typedef struct {
    int type;
    unsigned long int serial;
    int send_event;
    Display *display;
    Window window;
    int kind;
    int x;
    int y;
    unsigned int width;
    unsigned int height;
    Time time;
    int shaped;
} XShapeEvent;
extern void XShapeCombineMask(Display *, Window, int, int, int, Pixmap,
			      int);
extern void XShapeCombineRectangles(Display *, Window, int, int, int,
				    XRectangle *, int, int, int);
extern void XShapeCombineRegion(Display *, Window, int, int, int, Region,
				int);
extern void XShapeCombineShape(Display *, Window, int, int, int, Window,
			       int, int);
extern XRectangle *XShapeGetRectangles(Display *, Window, int, int *,
				       int *);
extern unsigned long int XShapeInputSelected(Display *, Window);
extern void XShapeOffsetShape(Display *, Window, int, int, int);
extern int XShapeQueryExtension(Display *, int *, int *);
extern int XShapeQueryExtents(Display *, Window, int *, int *, int *,
			      unsigned int *, unsigned int *, int *, int *,
			      int *, unsigned int *, unsigned int *);
extern int XShapeQueryVersion(Display *, int *, int *);
extern void XShapeSelectInput(Display *, Window, unsigned long int);

6.13.13. X11/extensions/sync.h


typedef XID XSyncCounter;
typedef XID XSyncAlarm;
typedef struct _XSyncValue {
    int hi;
    unsigned int lo;
} XSyncValue;
typedef enum {
    XSyncAbsolute,
    XSyncRelative
} XSyncValueType;
typedef enum {
    XSyncPositiveTransition,
    XSyncNegativeTransition,
    XSyncPositiveComparison,
    XSyncNegativeComparison
} XSyncTestType;
typedef enum {
    XSyncAlarmActive,
    XSyncAlarmInactive,
    XSyncAlarmDestroyed
} XSyncAlarmState;

#define SYNC_NAME	"SYNC"
#define _XSyncValueIsPositive(v)	(((v).hi&0x80000000)?0:1)
#define _XSyncValueIsNegative(v)	(((v).hi&0x80000000)?1:0)
#define _XSyncValueLessThan(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 _XSyncValueGreaterThan(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 _XSyncValueEqual(a,b)	((a).lo==(b).lo && (a).hi==(b).hi)
#define _XSyncValueIsZero(a)	((a).lo==0&&(a).hi==0)
#define _XSyncIntToValue(pv,i)	((pv)->hi=((i<0)?~0:0),(pv)->lo=(i))
#define _XSyncMaxValue(pv)	((pv)->hi=0x7fffffff,(pv)->lo=0xffffffff)
#define _XSyncMinValue(pv)	((pv)->hi=0x80000000,(pv)->lo=0)
#define _XSyncIntsToValue(pv,l,h)	((pv)->lo = (l), (pv)->hi = (h))
#define _XSyncValueHigh32(v)	((v).hi)
#define _XSyncValueLow32(v)	((v).lo)
#define XSyncCACounter	(1L<<0)
#define XSyncCAValueType	(1L<<1)
#define XSyncCAValue	(1L<<2)
#define XSyncCATestType	(1L<<3)
#define XSyncCADelta	(1L<<4)
#define XSyncCAEvents	(1L<<5)
#define XSyncAlarmNotifyMask	(1L<<XSyncAlarmNotify)
#define XSyncNumberErrors	(XSyncBadAlarm+1)
#define SYNC_MINOR_VERSION	0
#define XSyncCounterNotify	0
#define X_SyncInitialize	0
#define XSyncBadCounter	0L
#define XSyncAlarmNotify	1
#define X_SyncListSystemCounters	1
#define X_SyncQueryAlarm	10
#define X_SyncDestroyAlarm	11
#define X_SyncSetPriority	12
#define X_SyncGetPriority	13
#define XSyncBadAlarm	1L
#define X_SyncCreateCounter	2
#define XSyncNumberEvents	2L
#define SYNC_MAJOR_VERSION	3
#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 _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)));\
}

typedef struct _XSyncSystemCounter {
    char *name;
    XSyncCounter counter;
    XSyncValue resolution;
} XSyncSystemCounter;
typedef struct {
    XSyncCounter counter;
    XSyncValueType value_type;
    XSyncValue wait_value;
    XSyncTestType test_type;
} XSyncTrigger;
typedef struct {
    XSyncTrigger trigger;
    XSyncValue event_threshold;
} XSyncWaitCondition;
typedef struct {
    XSyncTrigger trigger;
    XSyncValue delta;
    int events;
    XSyncAlarmState state;
} XSyncAlarmAttributes;
typedef struct {
    int type;
    unsigned long int serial;
    int send_event;
    Display *display;
    XSyncCounter counter;
    XSyncValue wait_value;
    XSyncValue counter_value;
    Time time;
    int count;
    int destroyed;
} XSyncCounterNotifyEvent;
typedef struct {
    int type;
    unsigned long int serial;
    int send_event;
    Display *display;
    XSyncAlarm alarm;
    XSyncValue counter_value;
    XSyncValue alarm_value;
    Time time;
    XSyncAlarmState state;
} XSyncAlarmNotifyEvent;
typedef struct {
    int type;
    Display *display;
    XSyncAlarm alarm;
    unsigned long int serial;
    unsigned char error_code;
    unsigned char request_code;
    unsigned char minor_code;
} XSyncAlarmError;
typedef struct {
    int type;
    Display *display;
    XSyncCounter counter;
    unsigned long int serial;
    unsigned char error_code;
    unsigned char request_code;
    unsigned char minor_code;
} XSyncCounterError;
extern int XSyncAwait(Display *, XSyncWaitCondition *, int);
extern int XSyncChangeAlarm(Display *, XSyncAlarm, unsigned long int,
			    XSyncAlarmAttributes *);
extern int XSyncChangeCounter(Display *, XSyncCounter, XSyncValue);
extern XSyncAlarm XSyncCreateAlarm(Display *, unsigned long int,
				   XSyncAlarmAttributes *);
extern XSyncCounter XSyncCreateCounter(Display *, XSyncValue);
extern int XSyncDestroyAlarm(Display *, XSyncAlarm);
extern int XSyncDestroyCounter(Display *, XSyncCounter);
extern void XSyncFreeSystemCounterList(XSyncSystemCounter *);
extern int XSyncGetPriority(Display *, XID, int *);
extern int XSyncInitialize(Display *, int *, int *);
extern void XSyncIntToValue(XSyncValue *, int);
extern void XSyncIntsToValue(XSyncValue *, unsigned int, int);
extern XSyncSystemCounter *XSyncListSystemCounters(Display *, int *);
extern void XSyncMaxValue(XSyncValue *);
extern void XSyncMinValue(XSyncValue *);
extern int XSyncQueryAlarm(Display *, XSyncAlarm, XSyncAlarmAttributes *);
extern int XSyncQueryCounter(Display *, XSyncCounter, XSyncValue *);
extern int XSyncQueryExtension(Display *, int *, int *);
extern int XSyncSetCounter(Display *, XSyncCounter, XSyncValue);
extern int XSyncSetPriority(Display *, XID, int);
extern void XSyncValueAdd(XSyncValue *, XSyncValue, XSyncValue, int *);
extern int XSyncValueEqual(XSyncValue, XSyncValue);
extern int XSyncValueGreaterOrEqual(XSyncValue, XSyncValue);
extern int XSyncValueGreaterThan(XSyncValue, XSyncValue);
extern int XSyncValueHigh32(XSyncValue);
extern int XSyncValueIsNegative(XSyncValue);
extern int XSyncValueIsPositive(XSyncValue);
extern int XSyncValueIsZero(XSyncValue);
extern int XSyncValueLessOrEqual(XSyncValue, XSyncValue);
extern int XSyncValueLessThan(XSyncValue, XSyncValue);
extern unsigned int XSyncValueLow32(XSyncValue);
extern void XSyncValueSubtract(XSyncValue *, XSyncValue, XSyncValue,
			       int *);

6.13.14. X11/extensions/syncstr.h


#define sz_xSyncChangeAlarmReq	12
#define sz_xSyncCreateAlarmReq	12
#define sz_xSyncSetPriorityReq	12
#define sz_xSyncSystemCounter	14
#define sz_xSyncChangeCounterReq	16
#define sz_xSyncCreateCounterReq	16
#define sz_xSyncSetCounterReq	16
#define sz_xSyncWaitCondition	28
#define sz_xSyncGetPriorityReply	32
#define sz_xSyncInitializeReply	32
#define sz_xSyncListSystemCountersReply	32
#define sz_xSyncQueryCounterReply	32
#define sz_xSyncAwaitReq	4
#define sz_xSyncListSystemCountersReq	4
#define sz_xSyncQueryAlarmReply	40
#define sz_xSyncDestroyAlarmReq	8
#define sz_xSyncDestroyCounterReq	8
#define sz_xSyncGetPriorityReq	8
#define sz_xSyncInitializeReq	8
#define sz_xSyncQueryAlarmReq	8
#define sz_xSyncQueryCounterReq	8

typedef struct _xSyncInitialize {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
    CARD8 majorVersion;
    CARD8 minorVersion;
    CARD16 pad;
} xSyncInitializeReq;
typedef struct {
    BYTE type;
    CARD8 unused;
    CARD16 sequenceNumber;
    CARD32 length;
    CARD8 majorVersion;
    CARD8 minorVersion;
    CARD16 pad;
    CARD32 pad0;
    CARD32 pad1;
    CARD32 pad2;
    CARD32 pad3;
    CARD32 pad4;
} xSyncInitializeReply;
typedef struct _xSyncListSystemCounters {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
} xSyncListSystemCountersReq;
typedef struct {
    BYTE type;
    CARD8 unused;
    CARD16 sequenceNumber;
    CARD32 length;
    INT32 nCounters;
    CARD32 pad0;
    CARD32 pad1;
    CARD32 pad2;
    CARD32 pad3;
    CARD32 pad4;
} xSyncListSystemCountersReply;
typedef struct {
    CARD32 counter;
    INT32 resolution_hi;
    CARD32 resolution_lo;
    CARD16 name_length;
} xSyncSystemCounter;
typedef struct _xSyncCreateCounterReq {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
    CARD32 cid;
    INT32 initial_value_hi;
    CARD32 initial_value_lo;
} xSyncCreateCounterReq;
typedef struct _xSyncChangeCounterReq {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
    CARD32 cid;
    INT32 value_hi;
    CARD32 value_lo;
} xSyncChangeCounterReq;
typedef struct _xSyncSetCounterReq {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
    CARD32 cid;
    INT32 value_hi;
    CARD32 value_lo;
} xSyncSetCounterReq;
typedef struct _xSyncDestroyCounterReq {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
    CARD32 counter;
} xSyncDestroyCounterReq;
typedef struct _xSyncQueryCounterReq {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
    CARD32 counter;
} xSyncQueryCounterReq;
typedef struct {
    BYTE type;
    CARD8 unused;
    CARD16 sequenceNumber;
    CARD32 length;
    INT32 value_hi;
    CARD32 value_lo;
    CARD32 pad0;
    CARD32 pad1;
    CARD32 pad2;
    CARD32 pad3;
} xSyncQueryCounterReply;
typedef struct _xSyncAwaitReq {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
} xSyncAwaitReq;
typedef struct _xSyncWaitCondition {
    CARD32 counter;
    CARD32 value_type;
    INT32 wait_value_hi;
    CARD32 wait_value_lo;
    CARD32 test_type;
    INT32 event_threshold_hi;
    CARD32 event_threshold_lo;
} xSyncWaitCondition;
typedef struct _xSyncCreateAlarmReq {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
    CARD32 id;
    CARD32 valueMask;
} xSyncCreateAlarmReq;
typedef struct _xSyncDestroyAlarmReq {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
    CARD32 alarm;
} xSyncDestroyAlarmReq;
typedef struct _xSyncQueryAlarmReq {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
    CARD32 alarm;
} xSyncQueryAlarmReq;
typedef struct {
    BYTE type;
    CARD8 unused;
    CARD16 sequenceNumber;
    CARD32 length;
    CARD32 counter;
    CARD32 value_type;
    INT32 wait_value_hi;
    CARD32 wait_value_lo;
    CARD32 test_type;
    INT32 delta_hi;
    CARD32 delta_lo;
    BOOL events;
    BYTE state;
    BYTE pad0;
    BYTE pad1;
} xSyncQueryAlarmReply;
typedef struct _xSyncChangeAlarmReq {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
    CARD32 alarm;
    CARD32 valueMask;
} xSyncChangeAlarmReq;
typedef struct _xSyncSetPriority {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
    CARD32 id;
    INT32 priority;
} xSyncSetPriorityReq;
typedef struct _xSyncGetPriority {
    CARD8 reqType;
    CARD8 syncReqType;
    CARD16 length;
    CARD32 id;
} xSyncGetPriorityReq;
typedef struct {
    BYTE type;
    CARD8 unused;
    CARD16 sequenceNumber;
    CARD32 length;
    INT32 priority;
    CARD32 pad0;
    CARD32 pad1;
    CARD32 pad2;
    CARD32 pad3;
    CARD32 pad4;
} xSyncGetPriorityReply;
typedef struct _xSyncCounterNotifyEvent {
    BYTE type;
    BYTE kind;
    CARD16 sequenceNumber;
    CARD32 counter;
    INT32 wait_value_hi;
    CARD32 wait_value_lo;
    INT32 counter_value_hi;
    CARD32 counter_value_lo;
    CARD32 time;
    CARD16 count;
    BOOL destroyed;
    BYTE pad0;
} xSyncCounterNotifyEvent;
typedef struct _xSyncAlarmNotifyEvent {
    BYTE type;
    BYTE kind;
    CARD16 sequenceNumber;
    CARD32 alarm;
    INT32 counter_value_hi;
    CARD32 counter_value_lo;
    INT32 alarm_value_hi;
    CARD32 alarm_value_lo;
    CARD32 time;
    CARD8 state;
    BYTE pad0;
    BYTE pad1;
    BYTE pad2;
} xSyncAlarmNotifyEvent;