#ifndef DIXSTRUCT_H
#define DIXSTRUCT_H
#include "dix.h"
#include "resource.h"
#include "cursor.h"
#include "gc.h"
#include "pixmap.h"
#include "privates.h"
#include <X11/Xmd.h>
#ifdef DEBUG
#define MAX_REQUEST_LOG 100
#endif
extern CallbackListPtr ClientStateCallback;
typedef struct {
ClientPtr client;
xConnSetupPrefix *prefix;
xConnSetup *setup;
} NewClientInfoRec;
typedef void (*ReplySwapPtr) (
ClientPtr ,
int ,
void * );
extern void ReplyNotSwappd (
ClientPtr ,
int ,
void * );
typedef enum {ClientStateInitial,
ClientStateAuthenticating,
ClientStateRunning,
ClientStateRetained,
ClientStateGone,
ClientStateCheckingSecurity,
ClientStateCheckedSecurity} ClientState;
#ifdef XFIXES
typedef struct _saveSet {
struct _Window *windowPtr;
Bool toRoot;
Bool map;
} SaveSetElt;
#define SaveSetWindow(ss) ((ss).windowPtr)
#define SaveSetToRoot(ss) ((ss).toRoot)
#define SaveSetShouldMap(ss) ((ss).map)
#define SaveSetAssignWindow(ss,w) ((ss).windowPtr = (w))
#define SaveSetAssignToRoot(ss,tr) ((ss).toRoot = (tr))
#define SaveSetAssignMap(ss,m) ((ss).map = (m))
#else
typedef struct _Window *SaveSetElt;
#define SaveSetWindow(ss) (ss)
#define SaveSetToRoot(ss) FALSE
#define SaveSetShouldMap(ss) TRUE
#define SaveSetAssignWindow(ss,w) ((ss) = (w))
#define SaveSetAssignToRoot(ss,tr)
#define SaveSetAssignMap(ss,m)
#endif
typedef struct _Client {
int index;
Mask clientAsMask;
pointer requestBuffer;
pointer osPrivate;
Bool swapped;
ReplySwapPtr pSwapReplyFunc;
XID errorValue;
int sequence;
int closeDownMode;
int clientGone;
int noClientException;
SaveSetElt *saveSet;
int numSaved;
pointer screenPrivate[MAXSCREENS];
int (**requestVector) (
ClientPtr );
CARD32 req_len;
Bool big_requests;
int priority;
ClientState clientState;
PrivateRec *devPrivates;
#ifdef XKB
unsigned short xkbClientFlags;
unsigned short mapNotifyMask;
unsigned short newKeyboardNotifyMask;
unsigned short vMajor,vMinor;
KeyCode minKC,maxKC;
#endif
#ifdef DEBUG
unsigned char requestLog[MAX_REQUEST_LOG];
int requestLogIndex;
#endif
unsigned long replyBytesRemaining;
void *appgroup;
struct _FontResolution * (*fontResFunc) (
ClientPtr ,
int * );
int smart_priority;
long smart_start_tick;
long smart_stop_tick;
long smart_check_tick;
DeviceIntPtr clientPtr;
} ClientRec;
extern long SmartScheduleTime;
extern long SmartScheduleInterval;
extern long SmartScheduleSlice;
extern long SmartScheduleMaxSlice;
extern Bool SmartScheduleDisable;
extern void SmartScheduleStartTimer(void);
extern void SmartScheduleStopTimer(void);
#define SMART_MAX_PRIORITY (20)
#define SMART_MIN_PRIORITY (-20)
extern Bool SmartScheduleInit(void);
#define DISPATCH_PROC(func) int func(ClientPtr )
typedef struct _WorkQueue {
struct _WorkQueue *next;
Bool (*function) (
ClientPtr ,
pointer
);
ClientPtr client;
pointer closure;
} WorkQueueRec;
extern TimeStamp currentTime;
extern TimeStamp lastDeviceEventTime;
extern int CompareTimeStamps(
TimeStamp ,
TimeStamp );
extern TimeStamp ClientTimeToServerTime(CARD32 );
typedef struct _CallbackRec {
CallbackProcPtr proc;
pointer data;
Bool deleted;
struct _CallbackRec *next;
} CallbackRec, *CallbackPtr;
typedef struct _CallbackList {
int inCallback;
Bool deleted;
int numDeleted;
CallbackPtr list;
} CallbackListRec;
extern int (* InitialVector[3]) (ClientPtr );
extern int (* ProcVector[256]) (ClientPtr );
extern int (* SwappedProcVector[256]) (ClientPtr );
extern ReplySwapPtr ReplySwapVector[256];
extern int ProcBadRequest(ClientPtr );
#endif