xtraplib.h revision a2760a4d593af57a19ec32cdfd1723b68495df8c
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/* $XFree86: xc/include/extensions/xtraplib.h,v 1.1 2001/11/02 23:29:26 dawes Exp $ */
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#ifndef __XTRAPLIB__
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland#define __XTRAPLIB__
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/*****************************************************************************
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah WaterlandCopyright 1987, 1988, 1989, 1990, 1991, 1994 by Digital Equipment Corp.,
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah WaterlandMaynard, MA
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah WaterlandPermission to use, copy, modify, and distribute this software and its
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlanddocumentation for any purpose and without fee is hereby granted,
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandprovided that the above copyright notice appear in all copies and that
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandboth that copyright notice and this permission notice appear in
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandsupporting documentation, and that the name of Digital not be
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandused in advertising or publicity pertaining to distribution of the
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterlandsoftware without specific, written prior permission.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah WaterlandDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah WaterlandALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah WaterlandDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah WaterlandANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah WaterlandWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah WaterlandARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah WaterlandSOFTWARE.
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland*****************************************************************************/
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland/*
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland *
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * CONTRIBUTORS:
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland *
5c51f1241dbbdf2656d0e10011981411ed0c9673Moriah Waterland * Dick Annicchiarico
* Robert Chesler
* Dan Coutu
* Gene Durso
* Marc Evans
* Alan Jamison
* Mark Henry
* Ken Miller
*
* DESCRIPTION:
* This header file describes all the structures/constants required
* for interfacing with the client toolkit *except* the common
* client/extension definitions in xtrapdi.h. Namely, *no* extension-
* only information or client/extension information can be found here.
*/
#ifdef SMT
#define NEED_EVENTS
#define NEED_REPLIES
#endif
#include <X11/Xlib.h>
#include <X11/Intrinsic.h>
#include <X11/extensions/xtrapdi.h>
#include <X11/extensions/xtrapemacros.h>
typedef struct /* Callback structure */
{
void_function func;
BYTE *data;
} XETrapCB;
/* Data structure for setting trap context */
typedef struct
{
CARD8 tc_flags[2L]; /* Toolkit-side specific flags */
XETrapCfg v; /* XTrap configuration values */
XETrapCB *req_cb; /* Pointer to Request Callbacks */
XETrapCB *evt_cb; /* Pointer to Event Callbacks (starting at 2) */
CARD32 last_time B32; /* Last (delta) timestamp */
} XETCValues;
/* bits 0 thru 6 are formerly "families" (now obsolete) */
#define XETCDeltaTimes 7
#define XETCTrapActive 8
/* bits 9 thru 15 are reserved for future expansion */
/* Values bit masks (used when determining what's dirty */
#define TCStatistics (1L<<0L)
#define TCRequests (1L<<1L)
#define TCEvents (1L<<2L)
#define TCMaxPacket (1L<<3L)
#define TCCmdKey (1L<<4L)
#define TCTimeStamps (1L<<5L)
#define TCWinXY (1L<<6L)
#define TCXInput (1L<<7L)
#define TCReqCBs (1L<<8L)
#define TCEvtCBs (1L<<9L)
#define TCCursor (1L<<10L)
#define TCColorReplies (1L<<11L)
#define TCGrabServer (1L<<12L)
/* This is the representation we use in the library code for XLib transport */
typedef struct {
int type;
unsigned long serial;
Bool synthetic;
Display *display;
int detail;
unsigned long idx;
unsigned char data[sz_EventData];
} XETrapDataEvent;
/* Trap Context structure for maintaining XTrap State for client */
typedef struct _XETC
{
struct _XETC *next; /* Ptr to next linked-listed TC */
Display *dpy; /* Display ptr of current TC */
INT32 eventBase /*B32*/; /* First event value */
INT32 errorBase /*B32*/; /* First error value */
INT32 extOpcode /*B32*/; /* Major opcode of the extension */
BYTE *xbuff; /* Pointer to buffer for XLib Communications */
CARD16 xmax_size /*B16*/; /* Max Size of a request */
XExtData *ext_data; /* hook for extension to hang data */
/*
* The following are initialized with the client-side version number
* However, when either a GetAvailable or GetVersion reply is received,
* these values are updated with the *oldest* version numbers.
*/
CARD16 release /*B16*/; /* The extension release number */
CARD16 version /*B16*/; /* The xtrap extension version number */
CARD16 revision /*B16*/; /* The xtrap extension revision number */
CARD16 protocol /*B16*/; /* The xtrap extension protocol number */
unsigned dirty /*B32*/; /* cache dirty bits */
XETCValues values; /* shadow structure of values */
Boolean (*eventFunc[XETrapNumberEvents])(XETrapDataEvent *event, struct _XETC *tc);
} XETC;
#endif /* __XTRAPLIB__ */