#ifndef _RECORD_H_
#define _RECORD_H_
#define XRecordBadContext 0
#define XRecordFromServerTime 0x01
#define XRecordFromClientTime 0x02
#define XRecordFromClientSequence 0x04
#define XRecordCurrentClients 1
#define XRecordFutureClients 2
#define XRecordAllClients 3
#define XRecordFromServer 0
#define XRecordFromClient 1
#define XRecordClientStarted 2
#define XRecordClientDied 3
#define XRecordStartOfData 4
#define XRecordEndOfData 5
typedef unsigned long XRecordClientSpec;
#ifndef _XRECORD_SERVER_
typedef unsigned long XRecordContext;
typedef struct
{
unsigned char first;
unsigned char last;
} XRecordRange8;
typedef struct
{
unsigned short first;
unsigned short last;
} XRecordRange16;
typedef struct
{
XRecordRange8 ext_major;
XRecordRange16 ext_minor;
} XRecordExtRange;
typedef struct
{
XRecordRange8 core_requests;
XRecordRange8 core_replies;
XRecordExtRange ext_requests;
XRecordExtRange ext_replies;
XRecordRange8 delivered_events;
XRecordRange8 device_events;
XRecordRange8 errors;
Bool client_started;
Bool client_died;
} XRecordRange;
typedef struct
{
XRecordClientSpec client;
unsigned long nranges;
XRecordRange **ranges;
} XRecordClientInfo;
typedef struct
{
Bool enabled;
int datum_flags;
unsigned long nclients;
XRecordClientInfo **client_info;
} XRecordState;
typedef struct
{
XID id_base;
Time server_time;
unsigned long client_seq;
int category;
Bool client_swapped;
unsigned char *data;
unsigned long data_len;
} XRecordInterceptData;
_XFUNCPROTOBEGIN
XID XRecordIdBaseMask(
#if NeedFunctionPrototypes
Display *dpy
#endif
);
extern Status XRecordQueryVersion(
#if NeedFunctionPrototypes
Display* ,
int* ,
int*
#endif
);
extern XRecordContext XRecordCreateContext(
#if NeedFunctionPrototypes
Display* ,
int ,
XRecordClientSpec* ,
int ,
XRecordRange** ,
int
#endif
);
extern XRecordRange *XRecordAllocRange(
#if NeedFunctionPrototypes
void
#endif
);
extern Status XRecordRegisterClients(
#if NeedFunctionPrototypes
Display* ,
XRecordContext ,
int ,
XRecordClientSpec* ,
int ,
XRecordRange** ,
int
#endif
);
extern Status XRecordUnregisterClients(
#if NeedFunctionPrototypes
Display* ,
XRecordContext ,
XRecordClientSpec* ,
int
#endif
);
extern Status XRecordGetContext(
#if NeedFunctionPrototypes
Display* ,
XRecordContext ,
XRecordState**
#endif
);
extern void XRecordFreeState(
#if NeedFunctionPrototypes
XRecordState*
#endif
);
typedef void (*XRecordInterceptProc) (
#if NeedFunctionPrototypes
XPointer ,
XRecordInterceptData*
#endif
);
extern Status XRecordEnableContext(
#if NeedFunctionPrototypes
Display* ,
XRecordContext ,
XRecordInterceptProc ,
XPointer
#endif
);
extern Status XRecordEnableContextAsync(
#if NeedFunctionPrototypes
Display* ,
XRecordContext ,
XRecordInterceptProc ,
XPointer
#endif
);
extern void XRecordProcessReplies(
#if NeedFunctionPrototypes
Display*
#endif
);
extern void XRecordFreeData(
#if NeedFunctionPrototypes
XRecordInterceptData*
#endif
);
extern Status XRecordDisableContext(
#if NeedFunctionPrototypes
Display* ,
XRecordContext
#endif
);
extern Status XRecordFreeContext(
#if NeedFunctionPrototypes
Display* ,
XRecordContext
#endif
);
_XFUNCPROTOEND
#endif
#endif