Home | History | Annotate | Line # | Download | only in extensions
      1 /***************************************************************************
      2  * Copyright 1995 Network Computing Devices
      3  *
      4  * Permission to use, copy, modify, distribute, and sell this software and
      5  * its documentation for any purpose is hereby granted without fee, provided
      6  * that the above copyright notice appear in all copies and that both that
      7  * copyright notice and this permission notice appear in supporting
      8  * documentation, and that the name of Network Computing Devices
      9  * not be used in advertising or publicity pertaining to distribution
     10  * of the software without specific, written prior permission.
     11  *
     12  * NETWORK COMPUTING DEVICES DISCLAIMs ALL WARRANTIES WITH REGARD TO
     13  * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
     14  * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE
     15  * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     16  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
     17  * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
     18  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     19  **************************************************************************/
     20 
     21 #ifndef _RECORD_H_
     22 #define _RECORD_H_
     23 
     24 #include <X11/extensions/recordconst.h>
     25 
     26 typedef unsigned long   XRecordClientSpec;
     27 typedef unsigned long	XRecordContext;
     28 
     29 typedef struct
     30 {
     31     unsigned char	first;
     32     unsigned char	last;
     33 } XRecordRange8;
     34 
     35 typedef struct
     36 {
     37     unsigned short	first;
     38     unsigned short	last;
     39 } XRecordRange16;
     40 
     41 typedef struct
     42 {
     43     XRecordRange8	ext_major;
     44     XRecordRange16	ext_minor;
     45 } XRecordExtRange;
     46 
     47 typedef struct
     48 {
     49     XRecordRange8     core_requests;	/* core X requests */
     50     XRecordRange8     core_replies;	/* core X replies */
     51     XRecordExtRange   ext_requests;	/* extension requests */
     52     XRecordExtRange   ext_replies;	/* extension replies */
     53     XRecordRange8     delivered_events;	/* delivered core and ext events */
     54     XRecordRange8     device_events;	/* all core and ext device events */
     55     XRecordRange8     errors;		/* core X and ext errors */
     56     Bool	      client_started;	/* connection setup reply */
     57     Bool              client_died;	/* notice of client disconnect */
     58 } XRecordRange;
     59 
     60 typedef struct
     61 {
     62     XRecordClientSpec	client;
     63     unsigned long	nranges;
     64     XRecordRange	**ranges;
     65 } XRecordClientInfo;
     66 
     67 typedef struct
     68 {
     69     Bool		enabled;
     70     int			datum_flags;
     71     unsigned long	nclients;
     72     XRecordClientInfo	**client_info;
     73 } XRecordState;
     74 
     75 typedef struct
     76 {
     77     XID		id_base;
     78     Time		server_time;
     79     unsigned long	client_seq;
     80     int			category;
     81     Bool		client_swapped;
     82     unsigned char	*data;
     83     unsigned long	data_len;	/* in 4-byte units */
     84 } XRecordInterceptData;
     85 
     86 _XFUNCPROTOBEGIN
     87 
     88 /*********************************************************
     89  *
     90  * Prototypes
     91  *
     92  */
     93 
     94 XID XRecordIdBaseMask(
     95     Display *dpy
     96 );
     97 
     98 extern Status XRecordQueryVersion(
     99     Display*			/* dpy */,
    100     int*			/* cmajor_return */,
    101     int*			/* cminor_return */
    102 );
    103 
    104 extern XRecordContext XRecordCreateContext(
    105     Display*			/* dpy */,
    106     int				/* datum_flags */,
    107     XRecordClientSpec*		/* clients */,
    108     int				/* nclients */,
    109     XRecordRange**              /* ranges */,
    110     int				/* nranges */
    111 );
    112 
    113 extern XRecordRange *XRecordAllocRange(
    114     void
    115 );
    116 
    117 extern Status XRecordRegisterClients(
    118     Display*			/* dpy */,
    119     XRecordContext		/* context */,
    120     int				/* datum_flags */,
    121     XRecordClientSpec*		/* clients */,
    122     int				/* nclients */,
    123     XRecordRange**		/* ranges */,
    124     int				/* nranges */
    125 );
    126 
    127 extern Status XRecordUnregisterClients(
    128     Display*			/* dpy */,
    129     XRecordContext		/* context */,
    130     XRecordClientSpec*		/* clients */,
    131     int				/* nclients */
    132 );
    133 
    134 extern Status XRecordGetContext(
    135     Display*			/* dpy */,
    136     XRecordContext		/* context */,
    137     XRecordState**		/* state_return */
    138 );
    139 
    140 extern void XRecordFreeState(
    141 XRecordState*			/* state */
    142 );
    143 
    144 typedef void (*XRecordInterceptProc) (
    145     XPointer			/* closure */,
    146     XRecordInterceptData*	/* recorded_data */
    147 );
    148 
    149 extern Status XRecordEnableContext(
    150     Display*			/* dpy */,
    151     XRecordContext		/* context */,
    152     XRecordInterceptProc	/* callback */,
    153     XPointer			/* closure */
    154 );
    155 
    156 extern Status XRecordEnableContextAsync(
    157     Display*			/* dpy */,
    158     XRecordContext		/* context */,
    159     XRecordInterceptProc	/* callback */,
    160     XPointer			/* closure */
    161 );
    162 
    163 extern void XRecordProcessReplies(
    164     Display*			/* dpy */
    165 );
    166 
    167 extern void XRecordFreeData(
    168 XRecordInterceptData*	/* data */
    169 );
    170 
    171 extern Status XRecordDisableContext(
    172     Display*			/* dpy */,
    173     XRecordContext		/* context */
    174 );
    175 
    176 extern Status XRecordFreeContext(
    177     Display*			/* dpy */,
    178     XRecordContext		/* context */
    179 );
    180 
    181 _XFUNCPROTOEND
    182 
    183 #endif
    184