github.com/rajveermalviya/gamen@v0.1.2-0.20220930195403-9be15877c1aa/internal/xcb/include/X11/extensions/recordproto.h (about)

     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 _RECORDPROTO_H_
    22  #define _RECORDPROTO_H_
    23  
    24  #include <X11/extensions/recordconst.h>
    25  
    26  /* only difference between 1.12 and 1.13 is byte order of device events,
    27     which the library doesn't deal with. */
    28  
    29  /*********************************************************
    30   *
    31   * Protocol request constants
    32   *
    33   */
    34  #define X_RecordQueryVersion    0     /* First request from client */
    35  #define X_RecordCreateContext   1     /* Create client RC */
    36  #define X_RecordRegisterClients 2     /* Add to client RC */
    37  #define X_RecordUnregisterClients 3   /* Delete from client RC */
    38  #define X_RecordGetContext      4     /* Query client RC */
    39  #define X_RecordEnableContext   5     /* Enable interception and reporting */
    40  #define X_RecordDisableContext  6     /* Disable interception and reporting */
    41  #define X_RecordFreeContext     7     /* Free client RC */
    42  
    43  #define sz_XRecordRange		32
    44  #define sz_XRecordClientInfo 	12
    45  #define sz_XRecordState 	16
    46  #define sz_XRecordDatum 	32
    47  
    48  
    49  #define XRecordGlobaldef
    50  #define XRecordGlobalref extern
    51  
    52  #define RecordMaxEvent     	(128L-1L)
    53  #define RecordMinDeviceEvent	(2L)
    54  #define RecordMaxDeviceEvent	(6L)
    55  #define RecordMaxError          (256L-1L)
    56  #define RecordMaxCoreRequest    (128L-1L)
    57  #define RecordMaxExtRequest     (256L-1L)
    58  #define RecordMinExtRequest     (129L-1L)
    59  
    60  #define RECORD_RC 		CARD32
    61  #define RECORD_XIDBASE		CARD32
    62  #define RECORD_CLIENTSPEC	CARD32
    63  #define RECORD_ELEMENT_HEADER	CARD8
    64  
    65  typedef RECORD_CLIENTSPEC RecordClientSpec, *RecordClientSpecPtr;
    66  
    67  typedef struct
    68  {
    69      CARD8	first;
    70      CARD8	last;
    71  } RECORD_RANGE8;
    72  
    73  typedef struct
    74  {
    75      CARD16	first;
    76      CARD16	last;
    77  } RECORD_RANGE16;
    78  
    79  typedef struct
    80  {
    81      RECORD_RANGE8	majorCode;
    82      RECORD_RANGE16	minorCode;
    83  } RECORD_EXTRANGE;
    84  
    85  typedef struct
    86  {
    87      RECORD_RANGE8	coreRequests;
    88      RECORD_RANGE8	coreReplies;
    89      RECORD_EXTRANGE	extRequests;
    90      RECORD_EXTRANGE	extReplies;
    91      RECORD_RANGE8	deliveredEvents;
    92      RECORD_RANGE8	deviceEvents;
    93      RECORD_RANGE8	errors;
    94      BOOL		clientStarted;
    95      BOOL		clientDied;
    96  } RECORDRANGE;
    97  #define sz_RECORDRANGE 	24
    98  
    99  /* typedef RECORDRANGE xRecordRange, *xRecordRangePtr;
   100  #define sz_xRecordRange 24 */
   101  
   102  /* Cannot have structures within structures going over the wire */
   103  typedef struct
   104  {
   105      CARD8       	coreRequestsFirst;
   106      CARD8       	coreRequestsLast;
   107      CARD8       	coreRepliesFirst;
   108      CARD8       	coreRepliesLast;
   109      CARD8  		extRequestsMajorFirst;
   110      CARD8		extRequestsMajorLast;
   111      CARD16  		extRequestsMinorFirst;
   112      CARD16  		extRequestsMinorLast;
   113      CARD8  		extRepliesMajorFirst;
   114      CARD8		extRepliesMajorLast;
   115      CARD16  		extRepliesMinorFirst;
   116      CARD16  		extRepliesMinorLast;
   117      CARD8       	deliveredEventsFirst;
   118      CARD8       	deliveredEventsLast;
   119      CARD8		deviceEventsFirst;
   120      CARD8		deviceEventsLast;
   121      CARD8       	errorsFirst;
   122      CARD8       	errorsLast;
   123      BOOL                clientStarted;
   124      BOOL		clientDied;
   125  } xRecordRange;
   126  #define sz_xRecordRange 24
   127  
   128  typedef struct
   129  {
   130      RECORD_CLIENTSPEC	clientResource;
   131      CARD32		nRanges;
   132  /* LISTofRECORDRANGE */
   133  } RECORD_CLIENT_INFO;
   134  
   135  typedef RECORD_CLIENT_INFO xRecordClientInfo;
   136  
   137  /*
   138   * Initialize
   139   */
   140  typedef struct {
   141      CARD8       reqType;
   142      CARD8       recordReqType;
   143      CARD16      length;
   144      CARD16      majorVersion;
   145      CARD16      minorVersion;
   146  } xRecordQueryVersionReq;
   147  #define sz_xRecordQueryVersionReq 	8
   148  
   149  typedef struct
   150  {
   151      CARD8   type;
   152      CARD8   pad0;
   153      CARD16  sequenceNumber;
   154      CARD32  length;
   155      CARD16  majorVersion;
   156      CARD16  minorVersion;
   157      CARD32  pad1;
   158      CARD32  pad2;
   159      CARD32  pad3;
   160      CARD32  pad4;
   161      CARD32  pad5;
   162   } xRecordQueryVersionReply;
   163  #define sz_xRecordQueryVersionReply  	32
   164  
   165  /*
   166   * Create RC
   167   */
   168  typedef struct
   169  {
   170      CARD8     		reqType;
   171      CARD8     		recordReqType;
   172      CARD16    		length;
   173      RECORD_RC		context;
   174      RECORD_ELEMENT_HEADER elementHeader;
   175      CARD8		pad;
   176      CARD16		pad0;
   177      CARD32		nClients;
   178      CARD32		nRanges;
   179  /* LISTofRECORD_CLIENTSPEC */
   180  /* LISTofRECORDRANGE */
   181  } xRecordCreateContextReq;
   182  #define sz_xRecordCreateContextReq 	20
   183  
   184  /*
   185   * Add to  RC
   186   */
   187  typedef struct
   188  {
   189      CARD8     		reqType;
   190      CARD8     		recordReqType;
   191      CARD16    		length;
   192      RECORD_RC		context;
   193      RECORD_ELEMENT_HEADER elementHeader;
   194      CARD8		pad;
   195      CARD16		pad0;
   196      CARD32		nClients;
   197      CARD32		nRanges;
   198  /* LISTofRECORD_CLIENTSPEC */
   199  /* LISTofRECORDRANGE */
   200  } xRecordRegisterClientsReq;
   201  #define sz_xRecordRegisterClientsReq 	20
   202  
   203  /*
   204   * Delete from RC
   205   */
   206  typedef struct
   207  {
   208      CARD8     		reqType;
   209      CARD8     		recordReqType;
   210      CARD16    		length;
   211      RECORD_RC		context;
   212      CARD32		nClients;
   213  /* LISTofRECORD_CLIENTSPEC */
   214  } xRecordUnregisterClientsReq;
   215  #define sz_xRecordUnregisterClientsReq 	12
   216  
   217  /*
   218   * Query RC
   219   */
   220  typedef struct
   221  {
   222      CARD8     	reqType;
   223      CARD8     	recordReqType;
   224      CARD16    	length;
   225      RECORD_RC	context;
   226  } xRecordGetContextReq;
   227  #define sz_xRecordGetContextReq 		8
   228  
   229  typedef struct
   230  {
   231      CARD8   	type;
   232      BOOL    	enabled;
   233      CARD16  	sequenceNumber;
   234      CARD32  	length;
   235      RECORD_ELEMENT_HEADER  elementHeader;
   236      CARD8	pad;
   237      CARD16	pad0;
   238      CARD32  	nClients;
   239      CARD32  	pad1;
   240      CARD32  	pad2;
   241      CARD32  	pad3;
   242      CARD32  	pad4;
   243  /* LISTofCLIENT_INFO */ 		/* intercepted-clients */
   244  } xRecordGetContextReply;
   245  #define sz_xRecordGetContextReply  	32
   246  
   247  /*
   248   * Enable data interception
   249   */
   250  typedef struct
   251  {
   252      CARD8     	reqType;
   253      CARD8     	recordReqType;
   254      CARD16    	length;
   255      RECORD_RC	context;
   256  } xRecordEnableContextReq;
   257  #define sz_xRecordEnableContextReq 	8
   258  
   259  typedef struct
   260  {
   261      CARD8		type;
   262      CARD8		category;
   263      CARD16		sequenceNumber;
   264      CARD32		length;
   265      RECORD_ELEMENT_HEADER  elementHeader;
   266      BOOL		clientSwapped;
   267      CARD16		pad1;
   268      RECORD_XIDBASE 	idBase;
   269      CARD32		serverTime;
   270      CARD32		recordedSequenceNumber;
   271      CARD32		pad3;
   272      CARD32		pad4;
   273      /* BYTE		data; */
   274  } xRecordEnableContextReply;
   275  #define sz_xRecordEnableContextReply 	32
   276  
   277  /*
   278   * Disable data interception
   279   */
   280  typedef struct
   281  {
   282      CARD8     	reqType;
   283      CARD8     	recordReqType;
   284      CARD16    	length;
   285      RECORD_RC 	context;
   286  } xRecordDisableContextReq;
   287  #define sz_xRecordDisableContextReq	8
   288  
   289  /*
   290   * Free RC
   291   */
   292  typedef struct
   293  {
   294      CARD8     	reqType;
   295      CARD8     	recordReqType;
   296      CARD16    	length;
   297      RECORD_RC 	context;
   298  } xRecordFreeContextReq;
   299  #define sz_xRecordFreeContextReq 	8
   300  
   301  #undef RECORD_RC
   302  #undef RECORD_XIDBASE
   303  #undef RECORD_ELEMENT_HEADER
   304  #undef RECORD_CLIENTSPEC
   305  
   306  #endif