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