00001
00002
00003
00004
00005
00012 #ifndef __RECORD_H
00013 #define __RECORD_H
00014
00015 #include "xcb.h"
00016
00017 #ifdef __cplusplus
00018 extern "C" {
00019 #endif
00020
00021 #define XCB_RECORD_MAJOR_VERSION 1
00022 #define XCB_RECORD_MINOR_VERSION 13
00023
00024 extern xcb_extension_t xcb_record_id;
00025
00026 typedef uint32_t xcb_record_context_t;
00027
00031 typedef struct xcb_record_context_iterator_t {
00032 xcb_record_context_t *data;
00033 int rem;
00034 int index;
00035 } xcb_record_context_iterator_t;
00036
00040 typedef struct xcb_record_range_8_t {
00041 uint8_t first;
00042 uint8_t last;
00043 } xcb_record_range_8_t;
00044
00048 typedef struct xcb_record_range_8_iterator_t {
00049 xcb_record_range_8_t *data;
00050 int rem;
00051 int index;
00052 } xcb_record_range_8_iterator_t;
00053
00057 typedef struct xcb_record_range_16_t {
00058 uint16_t first;
00059 uint16_t last;
00060 } xcb_record_range_16_t;
00061
00065 typedef struct xcb_record_range_16_iterator_t {
00066 xcb_record_range_16_t *data;
00067 int rem;
00068 int index;
00069 } xcb_record_range_16_iterator_t;
00070
00074 typedef struct xcb_record_ext_range_t {
00075 xcb_record_range_8_t major;
00076 xcb_record_range_16_t minor;
00077 } xcb_record_ext_range_t;
00078
00082 typedef struct xcb_record_ext_range_iterator_t {
00083 xcb_record_ext_range_t *data;
00084 int rem;
00085 int index;
00086 } xcb_record_ext_range_iterator_t;
00087
00091 typedef struct xcb_record_range_t {
00092 xcb_record_range_8_t core_requests;
00093 xcb_record_range_8_t core_replies;
00094 xcb_record_ext_range_t ext_requests;
00095 xcb_record_ext_range_t ext_replies;
00096 xcb_record_range_8_t delivered_events;
00097 xcb_record_range_8_t device_events;
00098 xcb_record_range_8_t errors;
00099 uint8_t client_started;
00100 uint8_t client_died;
00101 } xcb_record_range_t;
00102
00106 typedef struct xcb_record_range_iterator_t {
00107 xcb_record_range_t *data;
00108 int rem;
00109 int index;
00110 } xcb_record_range_iterator_t;
00111
00112 typedef uint8_t xcb_record_element_header_t;
00113
00117 typedef struct xcb_record_element_header_iterator_t {
00118 xcb_record_element_header_t *data;
00119 int rem;
00120 int index;
00121 } xcb_record_element_header_iterator_t;
00122
00123 typedef enum xcb_record_h_type_t {
00124 XCB_RECORD_H_TYPE_FROM_SERVER_TIME = 1,
00125 XCB_RECORD_H_TYPE_FROM_CLIENT_TIME = 2,
00126 XCB_RECORD_H_TYPE_FROM_CLIENT_SEQUENCE = 4
00127 } xcb_record_h_type_t;
00128
00129 typedef uint32_t xcb_record_client_spec_t;
00130
00134 typedef struct xcb_record_client_spec_iterator_t {
00135 xcb_record_client_spec_t *data;
00136 int rem;
00137 int index;
00138 } xcb_record_client_spec_iterator_t;
00139
00140 typedef enum xcb_record_cs_t {
00141 XCB_RECORD_CS_CURRENT_CLIENTS = 1,
00142 XCB_RECORD_CS_FUTURE_CLIENTS = 2,
00143 XCB_RECORD_CS_ALL_CLIENTS = 3
00144 } xcb_record_cs_t;
00145
00149 typedef struct xcb_record_client_info_t {
00150 xcb_record_client_spec_t client_resource;
00151 uint32_t num_ranges;
00152 } xcb_record_client_info_t;
00153
00157 typedef struct xcb_record_client_info_iterator_t {
00158 xcb_record_client_info_t *data;
00159 int rem;
00160 int index;
00161 } xcb_record_client_info_iterator_t;
00162
00164 #define XCB_RECORD_BAD_CONTEXT 0
00165
00169 typedef struct xcb_record_bad_context_error_t {
00170 uint8_t response_type;
00171 uint8_t error_code;
00172 uint16_t sequence;
00173 uint32_t invalid_record;
00174 } xcb_record_bad_context_error_t;
00175
00179 typedef struct xcb_record_query_version_cookie_t {
00180 unsigned int sequence;
00181 } xcb_record_query_version_cookie_t;
00182
00184 #define XCB_RECORD_QUERY_VERSION 0
00185
00189 typedef struct xcb_record_query_version_request_t {
00190 uint8_t major_opcode;
00191 uint8_t minor_opcode;
00192 uint16_t length;
00193 uint16_t major_version;
00194 uint16_t minor_version;
00195 } xcb_record_query_version_request_t;
00196
00200 typedef struct xcb_record_query_version_reply_t {
00201 uint8_t response_type;
00202 uint8_t pad0;
00203 uint16_t sequence;
00204 uint32_t length;
00205 uint16_t major_version;
00206 uint16_t minor_version;
00207 } xcb_record_query_version_reply_t;
00208
00210 #define XCB_RECORD_CREATE_CONTEXT 1
00211
00215 typedef struct xcb_record_create_context_request_t {
00216 uint8_t major_opcode;
00217 uint8_t minor_opcode;
00218 uint16_t length;
00219 xcb_record_context_t context;
00220 xcb_record_element_header_t element_header;
00221 uint8_t pad0[3];
00222 uint32_t num_client_specs;
00223 uint32_t num_ranges;
00224 } xcb_record_create_context_request_t;
00225
00227 #define XCB_RECORD_REGISTER_CLIENTS 2
00228
00232 typedef struct xcb_record_register_clients_request_t {
00233 uint8_t major_opcode;
00234 uint8_t minor_opcode;
00235 uint16_t length;
00236 xcb_record_context_t context;
00237 xcb_record_element_header_t element_header;
00238 uint8_t pad0[3];
00239 uint32_t num_client_specs;
00240 uint32_t num_ranges;
00241 } xcb_record_register_clients_request_t;
00242
00244 #define XCB_RECORD_UNREGISTER_CLIENTS 3
00245
00249 typedef struct xcb_record_unregister_clients_request_t {
00250 uint8_t major_opcode;
00251 uint8_t minor_opcode;
00252 uint16_t length;
00253 xcb_record_context_t context;
00254 uint32_t num_client_specs;
00255 } xcb_record_unregister_clients_request_t;
00256
00260 typedef struct xcb_record_get_context_cookie_t {
00261 unsigned int sequence;
00262 } xcb_record_get_context_cookie_t;
00263
00265 #define XCB_RECORD_GET_CONTEXT 4
00266
00270 typedef struct xcb_record_get_context_request_t {
00271 uint8_t major_opcode;
00272 uint8_t minor_opcode;
00273 uint16_t length;
00274 xcb_record_context_t context;
00275 } xcb_record_get_context_request_t;
00276
00280 typedef struct xcb_record_get_context_reply_t {
00281 uint8_t response_type;
00282 uint8_t enabled;
00283 uint16_t sequence;
00284 uint32_t length;
00285 xcb_record_element_header_t element_header;
00286 uint8_t pad0[3];
00287 uint32_t num_intercepted_clients;
00288 uint8_t pad1[16];
00289 } xcb_record_get_context_reply_t;
00290
00294 typedef struct xcb_record_enable_context_cookie_t {
00295 unsigned int sequence;
00296 } xcb_record_enable_context_cookie_t;
00297
00299 #define XCB_RECORD_ENABLE_CONTEXT 5
00300
00304 typedef struct xcb_record_enable_context_request_t {
00305 uint8_t major_opcode;
00306 uint8_t minor_opcode;
00307 uint16_t length;
00308 xcb_record_context_t context;
00309 } xcb_record_enable_context_request_t;
00310
00314 typedef struct xcb_record_enable_context_reply_t {
00315 uint8_t response_type;
00316 uint8_t category;
00317 uint16_t sequence;
00318 uint32_t length;
00319 xcb_record_element_header_t element_header;
00320 uint8_t client_swapped;
00321 uint8_t pad0[2];
00322 uint32_t xid_base;
00323 uint32_t server_time;
00324 uint32_t rec_sequence_num;
00325 uint8_t pad1[8];
00326 } xcb_record_enable_context_reply_t;
00327
00329 #define XCB_RECORD_DISABLE_CONTEXT 6
00330
00334 typedef struct xcb_record_disable_context_request_t {
00335 uint8_t major_opcode;
00336 uint8_t minor_opcode;
00337 uint16_t length;
00338 xcb_record_context_t context;
00339 } xcb_record_disable_context_request_t;
00340
00342 #define XCB_RECORD_FREE_CONTEXT 7
00343
00347 typedef struct xcb_record_free_context_request_t {
00348 uint8_t major_opcode;
00349 uint8_t minor_opcode;
00350 uint16_t length;
00351 xcb_record_context_t context;
00352 } xcb_record_free_context_request_t;
00353
00362 void
00363 xcb_record_context_next (xcb_record_context_iterator_t *i );
00364
00374 xcb_generic_iterator_t
00375 xcb_record_context_end (xcb_record_context_iterator_t i );
00376
00385 void
00386 xcb_record_range_8_next (xcb_record_range_8_iterator_t *i );
00387
00397 xcb_generic_iterator_t
00398 xcb_record_range_8_end (xcb_record_range_8_iterator_t i );
00399
00408 void
00409 xcb_record_range_16_next (xcb_record_range_16_iterator_t *i );
00410
00420 xcb_generic_iterator_t
00421 xcb_record_range_16_end (xcb_record_range_16_iterator_t i );
00422
00431 void
00432 xcb_record_ext_range_next (xcb_record_ext_range_iterator_t *i );
00433
00443 xcb_generic_iterator_t
00444 xcb_record_ext_range_end (xcb_record_ext_range_iterator_t i );
00445
00454 void
00455 xcb_record_range_next (xcb_record_range_iterator_t *i );
00456
00466 xcb_generic_iterator_t
00467 xcb_record_range_end (xcb_record_range_iterator_t i );
00468
00477 void
00478 xcb_record_element_header_next (xcb_record_element_header_iterator_t *i );
00479
00489 xcb_generic_iterator_t
00490 xcb_record_element_header_end (xcb_record_element_header_iterator_t i );
00491
00500 void
00501 xcb_record_client_spec_next (xcb_record_client_spec_iterator_t *i );
00502
00512 xcb_generic_iterator_t
00513 xcb_record_client_spec_end (xcb_record_client_spec_iterator_t i );
00514
00515 int
00516 xcb_record_client_info_sizeof (const void *_buffer );
00517
00518 xcb_record_range_t *
00519 xcb_record_client_info_ranges (const xcb_record_client_info_t *R );
00520
00521 int
00522 xcb_record_client_info_ranges_length (const xcb_record_client_info_t *R );
00523
00524 xcb_record_range_iterator_t
00525 xcb_record_client_info_ranges_iterator (const xcb_record_client_info_t *R );
00526
00535 void
00536 xcb_record_client_info_next (xcb_record_client_info_iterator_t *i );
00537
00547 xcb_generic_iterator_t
00548 xcb_record_client_info_end (xcb_record_client_info_iterator_t i );
00549
00558 xcb_record_query_version_cookie_t
00559 xcb_record_query_version (xcb_connection_t *c ,
00560 uint16_t major_version ,
00561 uint16_t minor_version );
00562
00574 xcb_record_query_version_cookie_t
00575 xcb_record_query_version_unchecked (xcb_connection_t *c ,
00576 uint16_t major_version ,
00577 uint16_t minor_version );
00578
00593 xcb_record_query_version_reply_t *
00594 xcb_record_query_version_reply (xcb_connection_t *c ,
00595 xcb_record_query_version_cookie_t cookie ,
00596 xcb_generic_error_t **e );
00597
00598 int
00599 xcb_record_create_context_sizeof (const void *_buffer );
00600
00612 xcb_void_cookie_t
00613 xcb_record_create_context_checked (xcb_connection_t *c ,
00614 xcb_record_context_t context ,
00615 xcb_record_element_header_t element_header ,
00616 uint32_t num_client_specs ,
00617 uint32_t num_ranges ,
00618 const xcb_record_client_spec_t *client_specs ,
00619 const xcb_record_range_t *ranges );
00620
00629 xcb_void_cookie_t
00630 xcb_record_create_context (xcb_connection_t *c ,
00631 xcb_record_context_t context ,
00632 xcb_record_element_header_t element_header ,
00633 uint32_t num_client_specs ,
00634 uint32_t num_ranges ,
00635 const xcb_record_client_spec_t *client_specs ,
00636 const xcb_record_range_t *ranges );
00637
00638 int
00639 xcb_record_register_clients_sizeof (const void *_buffer );
00640
00652 xcb_void_cookie_t
00653 xcb_record_register_clients_checked (xcb_connection_t *c ,
00654 xcb_record_context_t context ,
00655 xcb_record_element_header_t element_header ,
00656 uint32_t num_client_specs ,
00657 uint32_t num_ranges ,
00658 const xcb_record_client_spec_t *client_specs ,
00659 const xcb_record_range_t *ranges );
00660
00669 xcb_void_cookie_t
00670 xcb_record_register_clients (xcb_connection_t *c ,
00671 xcb_record_context_t context ,
00672 xcb_record_element_header_t element_header ,
00673 uint32_t num_client_specs ,
00674 uint32_t num_ranges ,
00675 const xcb_record_client_spec_t *client_specs ,
00676 const xcb_record_range_t *ranges );
00677
00678 int
00679 xcb_record_unregister_clients_sizeof (const void *_buffer );
00680
00692 xcb_void_cookie_t
00693 xcb_record_unregister_clients_checked (xcb_connection_t *c ,
00694 xcb_record_context_t context ,
00695 uint32_t num_client_specs ,
00696 const xcb_record_client_spec_t *client_specs );
00697
00706 xcb_void_cookie_t
00707 xcb_record_unregister_clients (xcb_connection_t *c ,
00708 xcb_record_context_t context ,
00709 uint32_t num_client_specs ,
00710 const xcb_record_client_spec_t *client_specs );
00711
00712 int
00713 xcb_record_get_context_sizeof (const void *_buffer );
00714
00723 xcb_record_get_context_cookie_t
00724 xcb_record_get_context (xcb_connection_t *c ,
00725 xcb_record_context_t context );
00726
00738 xcb_record_get_context_cookie_t
00739 xcb_record_get_context_unchecked (xcb_connection_t *c ,
00740 xcb_record_context_t context );
00741
00742 int
00743 xcb_record_get_context_intercepted_clients_length (const xcb_record_get_context_reply_t *R );
00744
00745 xcb_record_client_info_iterator_t
00746 xcb_record_get_context_intercepted_clients_iterator (const xcb_record_get_context_reply_t *R );
00747
00762 xcb_record_get_context_reply_t *
00763 xcb_record_get_context_reply (xcb_connection_t *c ,
00764 xcb_record_get_context_cookie_t cookie ,
00765 xcb_generic_error_t **e );
00766
00767 int
00768 xcb_record_enable_context_sizeof (const void *_buffer );
00769
00778 xcb_record_enable_context_cookie_t
00779 xcb_record_enable_context (xcb_connection_t *c ,
00780 xcb_record_context_t context );
00781
00793 xcb_record_enable_context_cookie_t
00794 xcb_record_enable_context_unchecked (xcb_connection_t *c ,
00795 xcb_record_context_t context );
00796
00797 uint8_t *
00798 xcb_record_enable_context_data (const xcb_record_enable_context_reply_t *R );
00799
00800 int
00801 xcb_record_enable_context_data_length (const xcb_record_enable_context_reply_t *R );
00802
00803 xcb_generic_iterator_t
00804 xcb_record_enable_context_data_end (const xcb_record_enable_context_reply_t *R );
00805
00820 xcb_record_enable_context_reply_t *
00821 xcb_record_enable_context_reply (xcb_connection_t *c ,
00822 xcb_record_enable_context_cookie_t cookie ,
00823 xcb_generic_error_t **e );
00824
00836 xcb_void_cookie_t
00837 xcb_record_disable_context_checked (xcb_connection_t *c ,
00838 xcb_record_context_t context );
00839
00848 xcb_void_cookie_t
00849 xcb_record_disable_context (xcb_connection_t *c ,
00850 xcb_record_context_t context );
00851
00863 xcb_void_cookie_t
00864 xcb_record_free_context_checked (xcb_connection_t *c ,
00865 xcb_record_context_t context );
00866
00875 xcb_void_cookie_t
00876 xcb_record_free_context (xcb_connection_t *c ,
00877 xcb_record_context_t context );
00878
00879
00880 #ifdef __cplusplus
00881 }
00882 #endif
00883
00884 #endif
00885