uint32_t _cairo_xcb_connection_shm_attach (cairo_xcb_connection_t *connection, uint32_t id, cairo_bool_t readonly) { struct { uint8_t req; uint8_t shm_req; uint16_t length; uint32_t segment; uint32_t id; uint8_t readonly; uint8_t pad1; uint16_t pad2; } req; struct iovec vec[1]; COMPILE_TIME_ASSERT (sizeof (req) == 16); req.req = connection->shm->major_opcode; req.shm_req = 1; req.length = sizeof (req) >> 2; req.segment = _cairo_xcb_connection_get_xid (connection); req.id = id; req.readonly = readonly; vec[0].iov_base = &req; vec[0].iov_len = sizeof (req); _cairo_xcb_connection_write (connection, vec, 1); return req.segment; }
uint32_t _cairo_xcb_connection_shm_attach (cairo_xcb_connection_t *connection, uint32_t id, cairo_bool_t readonly) { uint32_t segment = _cairo_xcb_connection_get_xid (connection); assert (connection->flags & CAIRO_XCB_HAS_SHM); xcb_shm_attach (connection->xcb_connection, segment, id, readonly); return segment; }
xcb_gcontext_t _cairo_xcb_connection_create_gc (cairo_xcb_connection_t *connection, xcb_drawable_t drawable, uint32_t value_mask, uint32_t *values) { xcb_gcontext_t gc = _cairo_xcb_connection_get_xid (connection); xcb_create_gc (connection->xcb_connection, gc, drawable, value_mask, values); return gc; }
xcb_pixmap_t _cairo_xcb_connection_create_pixmap (cairo_xcb_connection_t *connection, uint8_t depth, xcb_drawable_t drawable, uint16_t width, uint16_t height) { xcb_pixmap_t pixmap = _cairo_xcb_connection_get_xid (connection); assert (width > 0); assert (height > 0); xcb_create_pixmap (connection->xcb_connection, depth, pixmap, drawable, width, height); return pixmap; }