1 1.1 mrg /* 2 1.1 mrg * This file generated automatically from shm.xml by c_client.py. 3 1.1 mrg * Edit at your peril. 4 1.1 mrg */ 5 1.1 mrg 6 1.2 mrg #ifdef HAVE_CONFIG_H 7 1.2 mrg #include "config.h" 8 1.2 mrg #endif 9 1.2 mrg #include <stdlib.h> 10 1.1 mrg #include <string.h> 11 1.1 mrg #include <assert.h> 12 1.2 mrg #include <stddef.h> /* for offsetof() */ 13 1.1 mrg #include "xcbext.h" 14 1.1 mrg #include "shm.h" 15 1.2 mrg 16 1.2 mrg #define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member) 17 1.1 mrg #include "xproto.h" 18 1.1 mrg 19 1.1 mrg xcb_extension_t xcb_shm_id = { "MIT-SHM", 0 }; 20 1.1 mrg 21 1.1 mrg void 22 1.5 mrg xcb_shm_seg_next (xcb_shm_seg_iterator_t *i) 23 1.1 mrg { 24 1.1 mrg --i->rem; 25 1.1 mrg ++i->data; 26 1.1 mrg i->index += sizeof(xcb_shm_seg_t); 27 1.1 mrg } 28 1.1 mrg 29 1.1 mrg xcb_generic_iterator_t 30 1.5 mrg xcb_shm_seg_end (xcb_shm_seg_iterator_t i) 31 1.1 mrg { 32 1.1 mrg xcb_generic_iterator_t ret; 33 1.1 mrg ret.data = i.data + i.rem; 34 1.1 mrg ret.index = i.index + ((char *) ret.data - (char *) i.data); 35 1.1 mrg ret.rem = 0; 36 1.1 mrg return ret; 37 1.1 mrg } 38 1.1 mrg 39 1.1 mrg xcb_shm_query_version_cookie_t 40 1.5 mrg xcb_shm_query_version (xcb_connection_t *c) 41 1.1 mrg { 42 1.1 mrg static const xcb_protocol_request_t xcb_req = { 43 1.5 mrg .count = 2, 44 1.5 mrg .ext = &xcb_shm_id, 45 1.5 mrg .opcode = XCB_SHM_QUERY_VERSION, 46 1.5 mrg .isvoid = 0 47 1.1 mrg }; 48 1.4 mrg 49 1.1 mrg struct iovec xcb_parts[4]; 50 1.1 mrg xcb_shm_query_version_cookie_t xcb_ret; 51 1.1 mrg xcb_shm_query_version_request_t xcb_out; 52 1.4 mrg 53 1.4 mrg 54 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 55 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 56 1.1 mrg xcb_parts[3].iov_base = 0; 57 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 58 1.4 mrg 59 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 60 1.1 mrg return xcb_ret; 61 1.1 mrg } 62 1.1 mrg 63 1.1 mrg xcb_shm_query_version_cookie_t 64 1.5 mrg xcb_shm_query_version_unchecked (xcb_connection_t *c) 65 1.1 mrg { 66 1.1 mrg static const xcb_protocol_request_t xcb_req = { 67 1.5 mrg .count = 2, 68 1.5 mrg .ext = &xcb_shm_id, 69 1.5 mrg .opcode = XCB_SHM_QUERY_VERSION, 70 1.5 mrg .isvoid = 0 71 1.1 mrg }; 72 1.4 mrg 73 1.1 mrg struct iovec xcb_parts[4]; 74 1.1 mrg xcb_shm_query_version_cookie_t xcb_ret; 75 1.1 mrg xcb_shm_query_version_request_t xcb_out; 76 1.4 mrg 77 1.4 mrg 78 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 79 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 80 1.1 mrg xcb_parts[3].iov_base = 0; 81 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 82 1.4 mrg 83 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 84 1.1 mrg return xcb_ret; 85 1.1 mrg } 86 1.1 mrg 87 1.1 mrg xcb_shm_query_version_reply_t * 88 1.5 mrg xcb_shm_query_version_reply (xcb_connection_t *c, 89 1.1 mrg xcb_shm_query_version_cookie_t cookie /**< */, 90 1.5 mrg xcb_generic_error_t **e) 91 1.1 mrg { 92 1.1 mrg return (xcb_shm_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 93 1.1 mrg } 94 1.1 mrg 95 1.1 mrg xcb_void_cookie_t 96 1.5 mrg xcb_shm_attach_checked (xcb_connection_t *c, 97 1.5 mrg xcb_shm_seg_t shmseg, 98 1.5 mrg uint32_t shmid, 99 1.5 mrg uint8_t read_only) 100 1.1 mrg { 101 1.1 mrg static const xcb_protocol_request_t xcb_req = { 102 1.5 mrg .count = 2, 103 1.5 mrg .ext = &xcb_shm_id, 104 1.5 mrg .opcode = XCB_SHM_ATTACH, 105 1.5 mrg .isvoid = 1 106 1.1 mrg }; 107 1.4 mrg 108 1.1 mrg struct iovec xcb_parts[4]; 109 1.1 mrg xcb_void_cookie_t xcb_ret; 110 1.1 mrg xcb_shm_attach_request_t xcb_out; 111 1.4 mrg 112 1.1 mrg xcb_out.shmseg = shmseg; 113 1.1 mrg xcb_out.shmid = shmid; 114 1.1 mrg xcb_out.read_only = read_only; 115 1.1 mrg memset(xcb_out.pad0, 0, 3); 116 1.4 mrg 117 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 118 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 119 1.1 mrg xcb_parts[3].iov_base = 0; 120 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 121 1.4 mrg 122 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 123 1.1 mrg return xcb_ret; 124 1.1 mrg } 125 1.1 mrg 126 1.1 mrg xcb_void_cookie_t 127 1.5 mrg xcb_shm_attach (xcb_connection_t *c, 128 1.5 mrg xcb_shm_seg_t shmseg, 129 1.5 mrg uint32_t shmid, 130 1.5 mrg uint8_t read_only) 131 1.1 mrg { 132 1.1 mrg static const xcb_protocol_request_t xcb_req = { 133 1.5 mrg .count = 2, 134 1.5 mrg .ext = &xcb_shm_id, 135 1.5 mrg .opcode = XCB_SHM_ATTACH, 136 1.5 mrg .isvoid = 1 137 1.1 mrg }; 138 1.4 mrg 139 1.1 mrg struct iovec xcb_parts[4]; 140 1.1 mrg xcb_void_cookie_t xcb_ret; 141 1.1 mrg xcb_shm_attach_request_t xcb_out; 142 1.4 mrg 143 1.1 mrg xcb_out.shmseg = shmseg; 144 1.1 mrg xcb_out.shmid = shmid; 145 1.1 mrg xcb_out.read_only = read_only; 146 1.1 mrg memset(xcb_out.pad0, 0, 3); 147 1.4 mrg 148 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 149 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 150 1.1 mrg xcb_parts[3].iov_base = 0; 151 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 152 1.4 mrg 153 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 154 1.1 mrg return xcb_ret; 155 1.1 mrg } 156 1.1 mrg 157 1.1 mrg xcb_void_cookie_t 158 1.5 mrg xcb_shm_detach_checked (xcb_connection_t *c, 159 1.5 mrg xcb_shm_seg_t shmseg) 160 1.1 mrg { 161 1.1 mrg static const xcb_protocol_request_t xcb_req = { 162 1.5 mrg .count = 2, 163 1.5 mrg .ext = &xcb_shm_id, 164 1.5 mrg .opcode = XCB_SHM_DETACH, 165 1.5 mrg .isvoid = 1 166 1.1 mrg }; 167 1.4 mrg 168 1.1 mrg struct iovec xcb_parts[4]; 169 1.1 mrg xcb_void_cookie_t xcb_ret; 170 1.1 mrg xcb_shm_detach_request_t xcb_out; 171 1.4 mrg 172 1.1 mrg xcb_out.shmseg = shmseg; 173 1.4 mrg 174 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 175 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 176 1.1 mrg xcb_parts[3].iov_base = 0; 177 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 178 1.4 mrg 179 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 180 1.1 mrg return xcb_ret; 181 1.1 mrg } 182 1.1 mrg 183 1.1 mrg xcb_void_cookie_t 184 1.5 mrg xcb_shm_detach (xcb_connection_t *c, 185 1.5 mrg xcb_shm_seg_t shmseg) 186 1.1 mrg { 187 1.1 mrg static const xcb_protocol_request_t xcb_req = { 188 1.5 mrg .count = 2, 189 1.5 mrg .ext = &xcb_shm_id, 190 1.5 mrg .opcode = XCB_SHM_DETACH, 191 1.5 mrg .isvoid = 1 192 1.1 mrg }; 193 1.4 mrg 194 1.1 mrg struct iovec xcb_parts[4]; 195 1.1 mrg xcb_void_cookie_t xcb_ret; 196 1.1 mrg xcb_shm_detach_request_t xcb_out; 197 1.4 mrg 198 1.1 mrg xcb_out.shmseg = shmseg; 199 1.4 mrg 200 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 201 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 202 1.1 mrg xcb_parts[3].iov_base = 0; 203 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 204 1.4 mrg 205 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 206 1.1 mrg return xcb_ret; 207 1.1 mrg } 208 1.1 mrg 209 1.1 mrg xcb_void_cookie_t 210 1.5 mrg xcb_shm_put_image_checked (xcb_connection_t *c, 211 1.5 mrg xcb_drawable_t drawable, 212 1.5 mrg xcb_gcontext_t gc, 213 1.5 mrg uint16_t total_width, 214 1.5 mrg uint16_t total_height, 215 1.5 mrg uint16_t src_x, 216 1.5 mrg uint16_t src_y, 217 1.5 mrg uint16_t src_width, 218 1.5 mrg uint16_t src_height, 219 1.5 mrg int16_t dst_x, 220 1.5 mrg int16_t dst_y, 221 1.5 mrg uint8_t depth, 222 1.5 mrg uint8_t format, 223 1.5 mrg uint8_t send_event, 224 1.5 mrg xcb_shm_seg_t shmseg, 225 1.5 mrg uint32_t offset) 226 1.5 mrg { 227 1.5 mrg static const xcb_protocol_request_t xcb_req = { 228 1.5 mrg .count = 2, 229 1.5 mrg .ext = &xcb_shm_id, 230 1.5 mrg .opcode = XCB_SHM_PUT_IMAGE, 231 1.5 mrg .isvoid = 1 232 1.1 mrg }; 233 1.4 mrg 234 1.1 mrg struct iovec xcb_parts[4]; 235 1.1 mrg xcb_void_cookie_t xcb_ret; 236 1.1 mrg xcb_shm_put_image_request_t xcb_out; 237 1.4 mrg 238 1.1 mrg xcb_out.drawable = drawable; 239 1.1 mrg xcb_out.gc = gc; 240 1.1 mrg xcb_out.total_width = total_width; 241 1.1 mrg xcb_out.total_height = total_height; 242 1.1 mrg xcb_out.src_x = src_x; 243 1.1 mrg xcb_out.src_y = src_y; 244 1.1 mrg xcb_out.src_width = src_width; 245 1.1 mrg xcb_out.src_height = src_height; 246 1.1 mrg xcb_out.dst_x = dst_x; 247 1.1 mrg xcb_out.dst_y = dst_y; 248 1.1 mrg xcb_out.depth = depth; 249 1.1 mrg xcb_out.format = format; 250 1.1 mrg xcb_out.send_event = send_event; 251 1.1 mrg xcb_out.pad0 = 0; 252 1.1 mrg xcb_out.shmseg = shmseg; 253 1.1 mrg xcb_out.offset = offset; 254 1.4 mrg 255 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 256 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 257 1.1 mrg xcb_parts[3].iov_base = 0; 258 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 259 1.4 mrg 260 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 261 1.1 mrg return xcb_ret; 262 1.1 mrg } 263 1.1 mrg 264 1.1 mrg xcb_void_cookie_t 265 1.5 mrg xcb_shm_put_image (xcb_connection_t *c, 266 1.5 mrg xcb_drawable_t drawable, 267 1.5 mrg xcb_gcontext_t gc, 268 1.5 mrg uint16_t total_width, 269 1.5 mrg uint16_t total_height, 270 1.5 mrg uint16_t src_x, 271 1.5 mrg uint16_t src_y, 272 1.5 mrg uint16_t src_width, 273 1.5 mrg uint16_t src_height, 274 1.5 mrg int16_t dst_x, 275 1.5 mrg int16_t dst_y, 276 1.5 mrg uint8_t depth, 277 1.5 mrg uint8_t format, 278 1.5 mrg uint8_t send_event, 279 1.5 mrg xcb_shm_seg_t shmseg, 280 1.5 mrg uint32_t offset) 281 1.5 mrg { 282 1.5 mrg static const xcb_protocol_request_t xcb_req = { 283 1.5 mrg .count = 2, 284 1.5 mrg .ext = &xcb_shm_id, 285 1.5 mrg .opcode = XCB_SHM_PUT_IMAGE, 286 1.5 mrg .isvoid = 1 287 1.1 mrg }; 288 1.4 mrg 289 1.1 mrg struct iovec xcb_parts[4]; 290 1.1 mrg xcb_void_cookie_t xcb_ret; 291 1.1 mrg xcb_shm_put_image_request_t xcb_out; 292 1.4 mrg 293 1.1 mrg xcb_out.drawable = drawable; 294 1.1 mrg xcb_out.gc = gc; 295 1.1 mrg xcb_out.total_width = total_width; 296 1.1 mrg xcb_out.total_height = total_height; 297 1.1 mrg xcb_out.src_x = src_x; 298 1.1 mrg xcb_out.src_y = src_y; 299 1.1 mrg xcb_out.src_width = src_width; 300 1.1 mrg xcb_out.src_height = src_height; 301 1.1 mrg xcb_out.dst_x = dst_x; 302 1.1 mrg xcb_out.dst_y = dst_y; 303 1.1 mrg xcb_out.depth = depth; 304 1.1 mrg xcb_out.format = format; 305 1.1 mrg xcb_out.send_event = send_event; 306 1.1 mrg xcb_out.pad0 = 0; 307 1.1 mrg xcb_out.shmseg = shmseg; 308 1.1 mrg xcb_out.offset = offset; 309 1.4 mrg 310 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 311 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 312 1.1 mrg xcb_parts[3].iov_base = 0; 313 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 314 1.4 mrg 315 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 316 1.1 mrg return xcb_ret; 317 1.1 mrg } 318 1.1 mrg 319 1.1 mrg xcb_shm_get_image_cookie_t 320 1.5 mrg xcb_shm_get_image (xcb_connection_t *c, 321 1.5 mrg xcb_drawable_t drawable, 322 1.5 mrg int16_t x, 323 1.5 mrg int16_t y, 324 1.5 mrg uint16_t width, 325 1.5 mrg uint16_t height, 326 1.5 mrg uint32_t plane_mask, 327 1.5 mrg uint8_t format, 328 1.5 mrg xcb_shm_seg_t shmseg, 329 1.5 mrg uint32_t offset) 330 1.5 mrg { 331 1.5 mrg static const xcb_protocol_request_t xcb_req = { 332 1.5 mrg .count = 2, 333 1.5 mrg .ext = &xcb_shm_id, 334 1.5 mrg .opcode = XCB_SHM_GET_IMAGE, 335 1.5 mrg .isvoid = 0 336 1.1 mrg }; 337 1.4 mrg 338 1.1 mrg struct iovec xcb_parts[4]; 339 1.1 mrg xcb_shm_get_image_cookie_t xcb_ret; 340 1.1 mrg xcb_shm_get_image_request_t xcb_out; 341 1.4 mrg 342 1.1 mrg xcb_out.drawable = drawable; 343 1.1 mrg xcb_out.x = x; 344 1.1 mrg xcb_out.y = y; 345 1.1 mrg xcb_out.width = width; 346 1.1 mrg xcb_out.height = height; 347 1.1 mrg xcb_out.plane_mask = plane_mask; 348 1.1 mrg xcb_out.format = format; 349 1.1 mrg memset(xcb_out.pad0, 0, 3); 350 1.1 mrg xcb_out.shmseg = shmseg; 351 1.1 mrg xcb_out.offset = offset; 352 1.4 mrg 353 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 354 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 355 1.1 mrg xcb_parts[3].iov_base = 0; 356 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 357 1.4 mrg 358 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 359 1.1 mrg return xcb_ret; 360 1.1 mrg } 361 1.1 mrg 362 1.1 mrg xcb_shm_get_image_cookie_t 363 1.5 mrg xcb_shm_get_image_unchecked (xcb_connection_t *c, 364 1.5 mrg xcb_drawable_t drawable, 365 1.5 mrg int16_t x, 366 1.5 mrg int16_t y, 367 1.5 mrg uint16_t width, 368 1.5 mrg uint16_t height, 369 1.5 mrg uint32_t plane_mask, 370 1.5 mrg uint8_t format, 371 1.5 mrg xcb_shm_seg_t shmseg, 372 1.5 mrg uint32_t offset) 373 1.5 mrg { 374 1.5 mrg static const xcb_protocol_request_t xcb_req = { 375 1.5 mrg .count = 2, 376 1.5 mrg .ext = &xcb_shm_id, 377 1.5 mrg .opcode = XCB_SHM_GET_IMAGE, 378 1.5 mrg .isvoid = 0 379 1.1 mrg }; 380 1.4 mrg 381 1.1 mrg struct iovec xcb_parts[4]; 382 1.1 mrg xcb_shm_get_image_cookie_t xcb_ret; 383 1.1 mrg xcb_shm_get_image_request_t xcb_out; 384 1.4 mrg 385 1.1 mrg xcb_out.drawable = drawable; 386 1.1 mrg xcb_out.x = x; 387 1.1 mrg xcb_out.y = y; 388 1.1 mrg xcb_out.width = width; 389 1.1 mrg xcb_out.height = height; 390 1.1 mrg xcb_out.plane_mask = plane_mask; 391 1.1 mrg xcb_out.format = format; 392 1.1 mrg memset(xcb_out.pad0, 0, 3); 393 1.1 mrg xcb_out.shmseg = shmseg; 394 1.1 mrg xcb_out.offset = offset; 395 1.4 mrg 396 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 397 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 398 1.1 mrg xcb_parts[3].iov_base = 0; 399 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 400 1.4 mrg 401 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 402 1.1 mrg return xcb_ret; 403 1.1 mrg } 404 1.1 mrg 405 1.1 mrg xcb_shm_get_image_reply_t * 406 1.5 mrg xcb_shm_get_image_reply (xcb_connection_t *c, 407 1.1 mrg xcb_shm_get_image_cookie_t cookie /**< */, 408 1.5 mrg xcb_generic_error_t **e) 409 1.1 mrg { 410 1.1 mrg return (xcb_shm_get_image_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 411 1.1 mrg } 412 1.1 mrg 413 1.1 mrg xcb_void_cookie_t 414 1.5 mrg xcb_shm_create_pixmap_checked (xcb_connection_t *c, 415 1.5 mrg xcb_pixmap_t pid, 416 1.5 mrg xcb_drawable_t drawable, 417 1.5 mrg uint16_t width, 418 1.5 mrg uint16_t height, 419 1.5 mrg uint8_t depth, 420 1.5 mrg xcb_shm_seg_t shmseg, 421 1.5 mrg uint32_t offset) 422 1.1 mrg { 423 1.1 mrg static const xcb_protocol_request_t xcb_req = { 424 1.5 mrg .count = 2, 425 1.5 mrg .ext = &xcb_shm_id, 426 1.5 mrg .opcode = XCB_SHM_CREATE_PIXMAP, 427 1.5 mrg .isvoid = 1 428 1.1 mrg }; 429 1.4 mrg 430 1.1 mrg struct iovec xcb_parts[4]; 431 1.1 mrg xcb_void_cookie_t xcb_ret; 432 1.1 mrg xcb_shm_create_pixmap_request_t xcb_out; 433 1.4 mrg 434 1.1 mrg xcb_out.pid = pid; 435 1.1 mrg xcb_out.drawable = drawable; 436 1.1 mrg xcb_out.width = width; 437 1.1 mrg xcb_out.height = height; 438 1.1 mrg xcb_out.depth = depth; 439 1.1 mrg memset(xcb_out.pad0, 0, 3); 440 1.1 mrg xcb_out.shmseg = shmseg; 441 1.1 mrg xcb_out.offset = offset; 442 1.4 mrg 443 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 444 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 445 1.1 mrg xcb_parts[3].iov_base = 0; 446 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 447 1.4 mrg 448 1.1 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req); 449 1.1 mrg return xcb_ret; 450 1.1 mrg } 451 1.1 mrg 452 1.1 mrg xcb_void_cookie_t 453 1.5 mrg xcb_shm_create_pixmap (xcb_connection_t *c, 454 1.5 mrg xcb_pixmap_t pid, 455 1.5 mrg xcb_drawable_t drawable, 456 1.5 mrg uint16_t width, 457 1.5 mrg uint16_t height, 458 1.5 mrg uint8_t depth, 459 1.5 mrg xcb_shm_seg_t shmseg, 460 1.5 mrg uint32_t offset) 461 1.1 mrg { 462 1.1 mrg static const xcb_protocol_request_t xcb_req = { 463 1.5 mrg .count = 2, 464 1.5 mrg .ext = &xcb_shm_id, 465 1.5 mrg .opcode = XCB_SHM_CREATE_PIXMAP, 466 1.5 mrg .isvoid = 1 467 1.1 mrg }; 468 1.4 mrg 469 1.1 mrg struct iovec xcb_parts[4]; 470 1.1 mrg xcb_void_cookie_t xcb_ret; 471 1.1 mrg xcb_shm_create_pixmap_request_t xcb_out; 472 1.4 mrg 473 1.1 mrg xcb_out.pid = pid; 474 1.1 mrg xcb_out.drawable = drawable; 475 1.1 mrg xcb_out.width = width; 476 1.1 mrg xcb_out.height = height; 477 1.1 mrg xcb_out.depth = depth; 478 1.1 mrg memset(xcb_out.pad0, 0, 3); 479 1.1 mrg xcb_out.shmseg = shmseg; 480 1.1 mrg xcb_out.offset = offset; 481 1.4 mrg 482 1.1 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 483 1.1 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 484 1.1 mrg xcb_parts[3].iov_base = 0; 485 1.1 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 486 1.4 mrg 487 1.1 mrg xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req); 488 1.1 mrg return xcb_ret; 489 1.1 mrg } 490 1.1 mrg 491 1.3 mrg xcb_void_cookie_t 492 1.5 mrg xcb_shm_attach_fd_checked (xcb_connection_t *c, 493 1.5 mrg xcb_shm_seg_t shmseg, 494 1.5 mrg int32_t shm_fd, 495 1.5 mrg uint8_t read_only) 496 1.3 mrg { 497 1.3 mrg static const xcb_protocol_request_t xcb_req = { 498 1.5 mrg .count = 2, 499 1.5 mrg .ext = &xcb_shm_id, 500 1.5 mrg .opcode = XCB_SHM_ATTACH_FD, 501 1.5 mrg .isvoid = 1 502 1.3 mrg }; 503 1.4 mrg 504 1.3 mrg struct iovec xcb_parts[4]; 505 1.3 mrg xcb_void_cookie_t xcb_ret; 506 1.3 mrg xcb_shm_attach_fd_request_t xcb_out; 507 1.5 mrg int fds[1]; 508 1.6 mrg int fd_index = 0; 509 1.4 mrg 510 1.3 mrg xcb_out.shmseg = shmseg; 511 1.3 mrg xcb_out.read_only = read_only; 512 1.3 mrg memset(xcb_out.pad0, 0, 3); 513 1.4 mrg 514 1.3 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 515 1.3 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 516 1.3 mrg xcb_parts[3].iov_base = 0; 517 1.3 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 518 1.4 mrg 519 1.6 mrg fds[fd_index++] = shm_fd; 520 1.5 mrg xcb_ret.sequence = xcb_send_request_with_fds(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req, 1, fds); 521 1.3 mrg return xcb_ret; 522 1.3 mrg } 523 1.3 mrg 524 1.3 mrg xcb_void_cookie_t 525 1.5 mrg xcb_shm_attach_fd (xcb_connection_t *c, 526 1.5 mrg xcb_shm_seg_t shmseg, 527 1.5 mrg int32_t shm_fd, 528 1.5 mrg uint8_t read_only) 529 1.3 mrg { 530 1.3 mrg static const xcb_protocol_request_t xcb_req = { 531 1.5 mrg .count = 2, 532 1.5 mrg .ext = &xcb_shm_id, 533 1.5 mrg .opcode = XCB_SHM_ATTACH_FD, 534 1.5 mrg .isvoid = 1 535 1.3 mrg }; 536 1.4 mrg 537 1.3 mrg struct iovec xcb_parts[4]; 538 1.3 mrg xcb_void_cookie_t xcb_ret; 539 1.3 mrg xcb_shm_attach_fd_request_t xcb_out; 540 1.5 mrg int fds[1]; 541 1.6 mrg int fd_index = 0; 542 1.4 mrg 543 1.3 mrg xcb_out.shmseg = shmseg; 544 1.3 mrg xcb_out.read_only = read_only; 545 1.3 mrg memset(xcb_out.pad0, 0, 3); 546 1.4 mrg 547 1.3 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 548 1.3 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 549 1.3 mrg xcb_parts[3].iov_base = 0; 550 1.3 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 551 1.4 mrg 552 1.6 mrg fds[fd_index++] = shm_fd; 553 1.5 mrg xcb_ret.sequence = xcb_send_request_with_fds(c, 0, xcb_parts + 2, &xcb_req, 1, fds); 554 1.3 mrg return xcb_ret; 555 1.3 mrg } 556 1.3 mrg 557 1.3 mrg xcb_shm_create_segment_cookie_t 558 1.5 mrg xcb_shm_create_segment (xcb_connection_t *c, 559 1.5 mrg xcb_shm_seg_t shmseg, 560 1.5 mrg uint32_t size, 561 1.5 mrg uint8_t read_only) 562 1.3 mrg { 563 1.3 mrg static const xcb_protocol_request_t xcb_req = { 564 1.5 mrg .count = 2, 565 1.5 mrg .ext = &xcb_shm_id, 566 1.5 mrg .opcode = XCB_SHM_CREATE_SEGMENT, 567 1.5 mrg .isvoid = 0 568 1.3 mrg }; 569 1.4 mrg 570 1.3 mrg struct iovec xcb_parts[4]; 571 1.3 mrg xcb_shm_create_segment_cookie_t xcb_ret; 572 1.3 mrg xcb_shm_create_segment_request_t xcb_out; 573 1.4 mrg 574 1.3 mrg xcb_out.shmseg = shmseg; 575 1.3 mrg xcb_out.size = size; 576 1.3 mrg xcb_out.read_only = read_only; 577 1.3 mrg memset(xcb_out.pad0, 0, 3); 578 1.4 mrg 579 1.3 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 580 1.3 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 581 1.3 mrg xcb_parts[3].iov_base = 0; 582 1.3 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 583 1.4 mrg 584 1.3 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED|XCB_REQUEST_REPLY_FDS, xcb_parts + 2, &xcb_req); 585 1.3 mrg return xcb_ret; 586 1.3 mrg } 587 1.3 mrg 588 1.3 mrg xcb_shm_create_segment_cookie_t 589 1.5 mrg xcb_shm_create_segment_unchecked (xcb_connection_t *c, 590 1.5 mrg xcb_shm_seg_t shmseg, 591 1.5 mrg uint32_t size, 592 1.5 mrg uint8_t read_only) 593 1.3 mrg { 594 1.3 mrg static const xcb_protocol_request_t xcb_req = { 595 1.5 mrg .count = 2, 596 1.5 mrg .ext = &xcb_shm_id, 597 1.5 mrg .opcode = XCB_SHM_CREATE_SEGMENT, 598 1.5 mrg .isvoid = 0 599 1.3 mrg }; 600 1.4 mrg 601 1.3 mrg struct iovec xcb_parts[4]; 602 1.3 mrg xcb_shm_create_segment_cookie_t xcb_ret; 603 1.3 mrg xcb_shm_create_segment_request_t xcb_out; 604 1.4 mrg 605 1.3 mrg xcb_out.shmseg = shmseg; 606 1.3 mrg xcb_out.size = size; 607 1.3 mrg xcb_out.read_only = read_only; 608 1.3 mrg memset(xcb_out.pad0, 0, 3); 609 1.4 mrg 610 1.3 mrg xcb_parts[2].iov_base = (char *) &xcb_out; 611 1.3 mrg xcb_parts[2].iov_len = sizeof(xcb_out); 612 1.3 mrg xcb_parts[3].iov_base = 0; 613 1.3 mrg xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3; 614 1.4 mrg 615 1.3 mrg xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_REPLY_FDS, xcb_parts + 2, &xcb_req); 616 1.3 mrg return xcb_ret; 617 1.3 mrg } 618 1.3 mrg 619 1.3 mrg xcb_shm_create_segment_reply_t * 620 1.5 mrg xcb_shm_create_segment_reply (xcb_connection_t *c, 621 1.3 mrg xcb_shm_create_segment_cookie_t cookie /**< */, 622 1.5 mrg xcb_generic_error_t **e) 623 1.3 mrg { 624 1.3 mrg return (xcb_shm_create_segment_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e); 625 1.3 mrg } 626 1.3 mrg 627 1.3 mrg int * 628 1.3 mrg xcb_shm_create_segment_reply_fds (xcb_connection_t *c /**< */, 629 1.5 mrg xcb_shm_create_segment_reply_t *reply) 630 1.3 mrg { 631 1.3 mrg return xcb_get_reply_fds(c, reply, sizeof(xcb_shm_create_segment_reply_t) + 4 * reply->length); 632 1.3 mrg } 633 1.3 mrg 634