#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;
#ifdef XFIXES
typedef struct _saveSet {
struct _Window *windowPtr;
Bool toRoot;
Bool remap;
} SaveSetElt;
#define SaveSetWindow(ss) ((ss).windowPtr)
#define SaveSetToRoot(ss) ((ss).toRoot)
#define SaveSetRemap(ss) ((ss).remap)
#define SaveSetAssignWindow(ss,w) ((ss).windowPtr = (w))
#define SaveSetAssignToRoot(ss,tr) ((ss).toRoot = (tr))
#define SaveSetAssignRemap(ss,rm) ((ss).remap = (rm))
#else
typedef struct _Window *SaveSetElt;
#define SaveSetWindow(ss) (ss)
#define SaveSetToRoot(ss) FALSE
#define SaveSetRemap(ss) TRUE
#define SaveSetAssignWindow(ss,w) ((ss) = (w))
#define SaveSetAssignToRoot(ss,tr)
#define SaveSetAssignRemap(ss,rm)
#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;
DrawablePtr lastDrawable;
Drawable lastDrawableID;
GCPtr lastGC;
GContext lastGCID;
SaveSetElt *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
unsigned long replyBytesRemaining;
#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 );
extern ReplySwapPtr ReplySwapVector[256];
extern int ProcBadRequest(ClientPtr );
#endif