1use crate::AuthInfo;
2
3use super::ext::*;
4use libc::{c_char, c_int, c_uint, c_void};
5
6pub const X_PROTOCOL: u32 = 11;
8
9pub const X_PROTOCOL_REVISION: u32 = 0;
11
12pub const X_TCP_PORT: u32 = 6000;
14
15pub const XCB_CONN_ERROR: i32 = 1;
17
18pub const XCB_CONN_CLOSED_EXT_NOTSUPPORTED: i32 = 2;
20
21pub const XCB_CONN_CLOSED_MEM_INSUFFICIENT: i32 = 3;
23
24pub const XCB_CONN_CLOSED_REQ_LEN_EXCEED: i32 = 4;
26
27pub const XCB_CONN_CLOSED_PARSE_ERR: i32 = 5;
29
30pub const XCB_CONN_CLOSED_INVALID_SCREEN: i32 = 6;
32
33pub const XCB_CONN_CLOSED_FDPASSING_FAILED: i32 = 7;
35
36pub enum xcb_connection_t {}
40
41pub(crate) enum xcb_special_event_t {}
42
43#[derive(Copy, Clone, Debug)]
47#[repr(C)]
48pub struct xcb_generic_event_t {
49 pub response_type: u8,
51 pub pad0: u8,
53 pub sequence: u16,
55 pub pad: [u32; 7],
57 pub full_sequence: u32,
59}
60
61pub const XCB_GE_GENERIC: u8 = 35;
66
67#[derive(Copy, Clone, Debug)]
69#[repr(C)]
70pub struct xcb_ge_generic_event_t {
71 pub response_type: u8,
72 pub extension: u8,
73 pub sequence: u16,
74 pub length: u32,
75 pub event_type: u16,
76 pub pad0: [u8; 22],
77 pub full_sequence: u32,
78}
79
80#[derive(Copy, Clone, Debug)]
82#[repr(C)]
83pub struct xcb_generic_error_t {
84 pub response_type: u8,
85 pub error_code: u8,
86 pub sequence: u16,
87 pub resource_id: u32,
88 pub minor_code: u16,
89 pub major_code: u8,
90 pub pad0: u8,
91 pub pad: [u32; 5],
92 pub full_sequence: u32,
93}
94
95#[derive(Copy, Clone, Debug)]
97#[repr(C)]
98pub(crate) struct xcb_void_cookie_t {
99 pub(crate) seq: u32,
100}
101
102#[repr(C)]
105pub(crate) struct xcb_auth_info_t {
106 pub namelen: c_int,
108 pub name: *mut c_char,
111 pub datalen: c_int,
113 pub data: *mut c_char,
115}
116
117#[link(name = "xcb")]
118extern "C" {
119 pub(crate) fn xcb_flush(c: *mut xcb_connection_t) -> c_int;
120
121 pub(crate) fn xcb_get_maximum_request_length(c: *mut xcb_connection_t) -> u32;
122
123 pub(crate) fn xcb_prefetch_maximum_request_length(c: *mut xcb_connection_t) -> c_void;
124
125 pub(crate) fn xcb_wait_for_event(c: *mut xcb_connection_t) -> *mut xcb_generic_event_t;
126
127 pub(crate) fn xcb_poll_for_event(c: *mut xcb_connection_t) -> *mut xcb_generic_event_t;
128
129 pub(crate) fn xcb_poll_for_queued_event(c: *mut xcb_connection_t) -> *mut xcb_generic_event_t;
130
131 pub(crate) fn xcb_poll_for_special_event(
132 c: *mut xcb_connection_t,
133 se: *mut xcb_special_event_t,
134 ) -> *mut xcb_generic_event_t;
135
136 pub(crate) fn xcb_wait_for_special_event(
137 c: *mut xcb_connection_t,
138 se: *mut xcb_special_event_t,
139 ) -> *mut xcb_generic_event_t;
140
141 pub(crate) fn xcb_register_for_special_xge(
142 c: *mut xcb_connection_t,
143 ext: *mut xcb_extension_t,
144 eid: u32,
145 stamp: *mut u32,
146 ) -> *mut xcb_special_event_t;
147
148 pub(crate) fn xcb_unregister_for_special_event(
149 c: *mut xcb_connection_t,
150 se: *mut xcb_special_event_t,
151 );
152
153 pub(crate) fn xcb_request_check(
154 c: *mut xcb_connection_t,
155 cookie: xcb_void_cookie_t,
156 ) -> *mut xcb_generic_error_t;
157
158 pub(crate) fn xcb_discard_reply(c: *mut xcb_connection_t, sequence: c_uint);
159
160 pub(crate) fn xcb_discard_reply64(c: *mut xcb_connection_t, sequence: u64);
161
162 pub(crate) fn xcb_get_extension_data(
165 c: *mut xcb_connection_t,
166 ext: *mut xcb_extension_t,
167 ) -> *const u8;
168
169 pub(crate) fn xcb_prefetch_extension_data(c: *mut xcb_connection_t, ext: *mut xcb_extension_t);
170
171 pub(crate) fn xcb_get_setup(c: *mut xcb_connection_t) -> *const u8;
174
175 pub(crate) fn xcb_get_file_descriptor(c: *mut xcb_connection_t) -> c_int;
176
177 pub(crate) fn xcb_connection_has_error(c: *mut xcb_connection_t) -> c_int;
178
179 pub(crate) fn xcb_connect_to_fd(
180 fd: c_int,
181 auth_info: *mut xcb_auth_info_t,
182 ) -> *mut xcb_connection_t;
183
184 pub(crate) fn xcb_disconnect(c: *mut xcb_connection_t);
185
186 pub(crate) fn xcb_parse_display(
187 name: *const c_char,
188 host: *mut *mut c_char,
189 display: *mut c_int,
190 screen: *mut c_int,
191 ) -> c_int;
192
193 pub(crate) fn xcb_connect(
194 displayname: *const c_char,
195 screenp: *mut c_int,
196 ) -> *mut xcb_connection_t;
197
198 pub(crate) fn xcb_connect_to_display_with_auth_info(
199 display: *const c_char,
200 auth: *mut xcb_auth_info_t,
201 screen: *mut c_int,
202 ) -> *mut xcb_connection_t;
203
204 pub(crate) fn xcb_generate_id(c: *mut xcb_connection_t) -> u32;
205
206 pub(crate) fn xcb_total_read(c: *mut xcb_connection_t) -> u64;
207
208 pub(crate) fn xcb_total_written(c: *mut xcb_connection_t) -> u64;
209}