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