/* $XConsortium: lbxserve.h /main/14 1996/12/15 21:26:22 rws $ */ /* * Copyright 1992 Network Computing Devices * Copyright 1996 X Consortium, Inc. * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of NCD. not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission. NCD. makes no representations about the * suitability of this software for any purpose. It is provided "as is" * without express or implied warranty. * * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD. * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * */ #ifndef _LBXSERVE_H_ #define _LBXSERVE_H_ #include "lbxdeltastr.h" #define _XLBX_SERVER_ #include "lbxstr.h" #include "lbxopts.h" #define MAX_LBX_CLIENTS MAXCLIENTS #define MAX_NUM_PROXIES (MAXCLIENTS >> 1) typedef struct _LbxClient *LbxClientPtr; typedef struct _LbxProxy *LbxProxyPtr; typedef struct _LbxClient { CARD32 id; ClientPtr client; LbxProxyPtr proxy; Bool ignored; Bool input_blocked; int reqs_pending; long bytes_in_reply; long bytes_remaining; Drawable drawableCache[GFX_CACHE_SIZE]; GContext gcontextCache[GFX_CACHE_SIZE]; pointer gfx_buffer; /* tmp buffer for unpacking gfx requests */ unsigned long gb_size; } LbxClientRec; typedef struct _connectionOutput *OSBufPtr; typedef struct _LbxProxy { LbxProxyPtr next; /* this array is indexed by lbx proxy index */ LbxClientPtr lbxClients[MAX_LBX_CLIENTS]; LbxClientPtr curRecv, curDix; int fd; int pid; /* proxy ID */ int uid; int numClients; int maxIndex; Bool aborted; int grabClient; pointer compHandle; Bool dosquishing; Bool useTags; LBXDeltasRec indeltas; LBXDeltasRec outdeltas; char *iDeltaBuf; char *replyBuf; char *oDeltaBuf; OSBufPtr ofirst; OSBufPtr olast; CARD32 cur_send_id; LbxStreamOpts streamOpts; int numBitmapCompMethods; char *bitmapCompMethods; /* array of indices */ int numPixmapCompMethods; char *pixmapCompMethods; /* array of indices */ int **pixmapCompDepths; /* depths supported from each method */ struct _ColormapRec *grabbedCmaps; /* chained via lbx private */ int motion_allowed_events; lbxMotionCache motionCache; } LbxProxyRec; /* This array is indexed by server client index, not lbx proxy index */ extern LbxClientPtr lbxClients[MAXCLIENTS]; #define LbxClient(client) (lbxClients[(client)->index]) #define LbxProxy(client) (LbxClient(client)->proxy) #define LbxMaybeProxy(client) (LbxClient(client) ? LbxProxy(client) : 0) #define LbxProxyID(client) (LbxProxy(client)->pid) #define LbxProxyClient(proxy) ((proxy)->lbxClients[0]->client) extern int LbxEventCode; extern void LbxDixInit( #if NeedFunctionPrototypes void #endif ); extern LbxProxyPtr LbxPidToProxy( #if NeedFunctionPrototypes int /* pid */ #endif ); extern void LbxReencodeOutput( #if NeedFunctionPrototypes ClientPtr /*client*/, char* /*pbuf*/, int* /*pcount*/, char* /*cbuf*/, int* /*ccount*/ #endif ); extern int UncompressedWriteToClient( #if NeedFunctionPrototypes ClientPtr /*who*/, int /*count*/, char* /*buf*/ #endif ); extern ClientPtr AllocLbxClientConnection( #if NeedFunctionPrototypes ClientPtr /* client */, LbxProxyPtr /* proxy */ #endif ); extern void LbxProxyConnection( #if NeedFunctionPrototypes ClientPtr /* client */, LbxProxyPtr /* proxy */ #endif ); #endif /* _LBXSERVE_H_ */