dixstruct.h revision 677833bc953b6cb418c701facbdcf4aa18d6c44e
3393N/A/* $XFree86: xc/programs/Xserver/include/dixstruct.h,v 3.19tsi Exp $ */
3393N/A/***********************************************************
3393N/ACopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
3393N/A
3393N/A All Rights Reserved
3393N/A
3393N/APermission to use, copy, modify, and distribute this software and its
3393N/Adocumentation for any purpose and without fee is hereby granted,
3393N/Aprovided that the above copyright notice appear in all copies and that
3393N/Aboth that copyright notice and this permission notice appear in
3393N/Asupporting documentation, and that the name of Digital not be
3393N/Aused in advertising or publicity pertaining to distribution of the
3393N/Asoftware without specific, written prior permission.
3393N/A
3393N/ADIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
3393N/AALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
3393N/ADIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
3393N/AANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
3393N/AWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
3393N/AARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
3393N/ASOFTWARE.
3393N/A
3393N/A******************************************************************/
3393N/A/* $Xorg: dixstruct.h,v 1.3 2000/08/17 19:53:29 cpqbld Exp $ */
3393N/A
3393N/A#ifndef DIXSTRUCT_H
3393N/A#define DIXSTRUCT_H
3393N/A
3393N/A#include "dix.h"
3393N/A#include "resource.h"
3393N/A#include "cursor.h"
3393N/A#include "gc.h"
3393N/A#include "pixmap.h"
3393N/A#include <X11/Xmd.h>
3393N/A
3393N/A/*
3393N/A * direct-mapped hash table, used by resource manager to store
3393N/A * translation from client ids to server addresses.
3473N/A */
3393N/A
3393N/A#ifdef DEBUG
3393N/A#define MAX_REQUEST_LOG 100
3393N/A#endif
3393N/A
3393N/Aextern CallbackListPtr ClientStateCallback;
3473N/A
3393N/Atypedef struct {
3393N/A ClientPtr client;
3473N/A xConnSetupPrefix *prefix;
3473N/A xConnSetup *setup;
3473N/A} NewClientInfoRec;
3473N/A
3473N/Atypedef void (*ReplySwapPtr) (
3473N/A ClientPtr /* pClient */,
3393N/A int /* size */,
3393N/A void * /* pbuf */);
3393N/A
3393N/Aextern void ReplyNotSwappd (
3393N/A ClientPtr /* pClient */,
3393N/A int /* size */,
3393N/A void * /* pbuf */);
3393N/A
3393N/Atypedef enum {ClientStateInitial,
3393N/A ClientStateAuthenticating,
3393N/A ClientStateRunning,
3393N/A ClientStateRetained,
3393N/A ClientStateGone,
3393N/A ClientStateCheckingSecurity,
3393N/A ClientStateCheckedSecurity} ClientState;
3393N/A
3393N/A#ifdef XFIXES
3393N/Atypedef struct _saveSet {
3393N/A struct _Window *windowPtr;
3393N/A Bool toRoot;
3393N/A Bool remap;
3393N/A} SaveSetElt;
3393N/A#define SaveSetWindow(ss) ((ss).windowPtr)
3393N/A#define SaveSetToRoot(ss) ((ss).toRoot)
3393N/A#define SaveSetRemap(ss) ((ss).remap)
3393N/A#define SaveSetAssignWindow(ss,w) ((ss).windowPtr = (w))
3393N/A#define SaveSetAssignToRoot(ss,tr) ((ss).toRoot = (tr))
3393N/A#define SaveSetAssignRemap(ss,rm) ((ss).remap = (rm))
3393N/A#else
3393N/Atypedef struct _Window *SaveSetElt;
3473N/A#define SaveSetWindow(ss) (ss)
3473N/A#define SaveSetToRoot(ss) FALSE
3473N/A#define SaveSetRemap(ss) TRUE
3473N/A#define SaveSetAssignWindow(ss,w) ((ss) = (w))
3473N/A#define SaveSetAssignToRoot(ss,tr)
3473N/A#define SaveSetAssignRemap(ss,rm)
3473N/A#endif
3393N/A
3473N/Atypedef struct _Client {
3473N/A int index;
3473N/A Mask clientAsMask;
3473N/A pointer requestBuffer;
3473N/A pointer osPrivate; /* for OS layer, including scheduler */
3473N/A Bool swapped;
3393N/A ReplySwapPtr pSwapReplyFunc;
3393N/A XID errorValue;
3393N/A int sequence;
3393N/A int closeDownMode;
3393N/A int clientGone;
3393N/A int noClientException; /* this client died or needs to be
* killed */
DrawablePtr lastDrawable;
Drawable lastDrawableID;
GCPtr lastGC;
GContext lastGCID;
SaveSetElt *saveSet;
int numSaved;
pointer screenPrivate[MAXSCREENS];
int (**requestVector) (
ClientPtr /* pClient */);
CARD32 req_len; /* length of current request */
Bool big_requests; /* supports large 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 /*client*/);
#endif
unsigned long replyBytesRemaining;
#ifdef XCSECURITY
XID authId;
unsigned int trustLevel;
pointer (* CheckAccess)(
ClientPtr /*pClient*/,
XID /*id*/,
RESTYPE /*classes*/,
Mask /*access_mode*/,
pointer /*resourceval*/);
#endif
#ifdef XAPPGROUP
struct _AppGroupRec* appgroup;
#endif
struct _FontResolution * (*fontResFunc) ( /* no need for font.h */
ClientPtr /* pClient */,
int * /* num */);
#ifdef SMART_SCHEDULE
int smart_priority;
long smart_start_tick;
long smart_stop_tick;
long smart_check_tick;
#endif
} ClientRec;
#ifdef SMART_SCHEDULE
/*
* Scheduling interface
*/
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
/* This prototype is used pervasively in Xext, dix */
#define DISPATCH_PROC(func) int func(ClientPtr /* client */)
typedef struct _WorkQueue {
struct _WorkQueue *next;
Bool (*function) (
ClientPtr /* pClient */,
pointer /* closure */
);
ClientPtr client;
pointer closure;
} WorkQueueRec;
extern TimeStamp currentTime;
extern TimeStamp lastDeviceEventTime;
extern int CompareTimeStamps(
TimeStamp /*a*/,
TimeStamp /*b*/);
extern TimeStamp ClientTimeToServerTime(CARD32 /*c*/);
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;
/* proc vectors */
extern int (* InitialVector[3]) (ClientPtr /*client*/);
extern int (* ProcVector[256]) (ClientPtr /*client*/);
extern int (* SwappedProcVector[256]) (ClientPtr /*client*/);
#ifdef K5AUTH
extern int (*k5_Vector[256])(ClientPtr /*client*/);
#endif
extern ReplySwapPtr ReplySwapVector[256];
extern int ProcBadRequest(ClientPtr /*client*/);
#endif /* DIXSTRUCT_H */