#ifndef DIXSTRUCT_H
#define DIXSTRUCT_H
#include "dix.h"
#include "resource.h"
#include "cursor.h"
#include "gc.h"
#include "pixmap.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;
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;
DrawablePtr lastDrawable;
Drawable lastDrawableID;
GCPtr lastGC;
GContext lastGCID;
pointer *saveSet;
int numSaved;
pointer screenPrivate[MAXSCREENS];
int (**requestVector) (
ClientPtr );
CARD32 req_len;
Bool big_requests;
int priority;
ClientState clientState;
DevUnion *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
#ifdef LBX
int (*readRequest)(ClientPtr );
#endif
unsigned long replyBytesRemaining;
#ifdef XCSECURITY
XID authId;
unsigned int trustLevel;
pointer (* CheckAccess)(
ClientPtr ,
XID ,
RESTYPE ,
Mask ,
pointer );
#endif
#ifdef XAPPGROUP
struct _AppGroupRec* appgroup;
#endif
struct _FontResolution * (*fontResFunc) (
ClientPtr ,
int * );
#ifdef SMART_SCHEDULE
int smart_priority;
long smart_start_tick;
long smart_stop_tick;
long smart_check_tick;
#endif
} ClientRec;
#ifdef SMART_SCHEDULE
extern long SmartScheduleTime;
extern long SmartScheduleInterval;
extern long SmartScheduleSlice;
extern long SmartScheduleMaxSlice;
extern unsigned long SmartScheduleIdleCount;
extern Bool SmartScheduleDisable;
extern Bool SmartScheduleIdle;
extern Bool SmartScheduleTimerStopped;
extern Bool SmartScheduleStartTimer(void);
#define SMART_MAX_PRIORITY (20)
#define SMART_MIN_PRIORITY (-20)
extern Bool SmartScheduleInit(void);
#endif
#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 {
CallbackFuncsRec funcs;
int inCallback;
Bool deleted;
int numDeleted;
CallbackPtr list;
} CallbackListRec;
extern int (* InitialVector[3]) (ClientPtr );
extern int (* ProcVector[256]) (ClientPtr );
extern int (* SwappedProcVector[256]) (ClientPtr );
#ifdef K5AUTH
extern int (*k5_Vector[256])(ClientPtr );
#endif
extern ReplySwapPtr ReplySwapVector[256];
extern int ProcBadRequest(ClientPtr );
#endif