[Xcb] Fwd: Changing <valueparam> to <switch> in render extension
Jaya Tiwari
tiwari.jaya18 at gmail.com
Sat Oct 18 01:34:04 PDT 2014
I am an OPW intern applicant for round 9 and interested in server-side xcb
under mentorship of Christian Linhart.
For my initial small contribution,
I have changed <valueparam> to <switch> in two requests of the render
extension.
The reason is that <switch> is recommended in the xml-xcb-spec instead of
<valueparam> and the <switch> contains a more precise description of the
protocol.
I have following observations :
1. xcb_render_create_picture_value_list_t :
A new structure with value mask names is added.
2. Size computed by function xcb_render_create_picture_value_list_unpack
(as used by function xcb_render_create_picture_value_list_sizeof)
does essentially the same as the expression with popcount in
xcb_render_create_picture_sizeof, but xcb_render_create_picture_
sizeof computes the size of the whole request "render_create_picture"
and xcb_render_create_picture_value_list_sizeof only computes the size of
the switch ( with name "value_list" )
So it is not directly compatible because the name of the function is
different, so it won't compile or link with existing code which uses the
previous version.
3. parameter type const uint32_t* of value_list in
xcb_render_create_picture and xcb_render_create_picture_checked changed to
const void*.
4. In xcb_render_create_picture, again instead of initializing xcb_parts
with popcounting elements from value_list, it checks all possible masks
using xcb_render_create_picture_value_list_sizeof and initializes xcb_parts.
5. The work of sending request is done in xcb_render_create_picture, same
things is again repeated in xcb_render_create_picture_aux (i dont really
have much idea of differences in aux and non-aux functions)
Along is a xml (render extension) diff along with libxcl implementation
header and c files attached.
Please comment on the diffs and observations and correct me wherever my
understanding fails.
Thankyou.
Regards,
Jaya
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/xcb/attachments/20141018/f4da146c/attachment-0001.html>
-------------- next part --------------
diff --git a/before_change/src/render.c b/libxcb/src/render.c
index 5ac468c..cae02bd 100644
--- a/before_change/src/render.c
+++ b/libxcb/src/render.c
@@ -796,24 +796,257 @@ xcb_render_query_pict_index_values_reply (xcb_connection_t
}
int
-xcb_render_create_picture_sizeof (const void *_buffer /**< */)
+xcb_render_create_picture_value_list_serialize (void **_buffer /**< */,
+ uint32_t value_mask /**< */,
+ const xcb_render_create_picture_value_list_t *_aux /**< */)
+{
+ char *xcb_out = *_buffer;
+ unsigned int xcb_buffer_len = 0;
+ unsigned int xcb_align_to = 0;
+
+ unsigned int xcb_pad = 0;
+ char xcb_pad0[3] = {0, 0, 0};
+ struct iovec xcb_parts[14];
+ unsigned int xcb_parts_idx = 0;
+ unsigned int xcb_block_len = 0;
+ unsigned int i;
+ char *xcb_tmp;
+
+ if(value_mask & XCB_RENDER_CP_REPEAT) {
+ /* xcb_render_create_picture_value_list_t.repeat */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->repeat;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_ALPHA_MAP) {
+ /* xcb_render_create_picture_value_list_t.alphamap */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphamap;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_ALPHA_X_ORIGIN) {
+ /* xcb_render_create_picture_value_list_t.alphaxorigin */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphaxorigin;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_ALPHA_Y_ORIGIN) {
+ /* xcb_render_create_picture_value_list_t.alphayorigin */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphayorigin;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_CLIP_X_ORIGIN) {
+ /* xcb_render_create_picture_value_list_t.clipxorigin */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipxorigin;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_CLIP_Y_ORIGIN) {
+ /* xcb_render_create_picture_value_list_t.clipyorigin */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipyorigin;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_CLIP_MASK) {
+ /* xcb_render_create_picture_value_list_t.clipmask */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipmask;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_GRAPHICS_EXPOSURE) {
+ /* xcb_render_create_picture_value_list_t.graphicsexposure */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->graphicsexposure;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_SUBWINDOW_MODE) {
+ /* xcb_render_create_picture_value_list_t.subwindowmode */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->subwindowmode;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_POLY_EDGE) {
+ /* xcb_render_create_picture_value_list_t.polyedge */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->polyedge;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_POLY_MODE) {
+ /* xcb_render_create_picture_value_list_t.polymode */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->polymode;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_DITHER) {
+ /* xcb_render_create_picture_value_list_t.dither */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->dither;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_COMPONENT_ALPHA) {
+ /* xcb_render_create_picture_value_list_t.componentalpha */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->componentalpha;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ /* insert padding */
+ xcb_pad = -xcb_block_len & (xcb_align_to - 1);
+ xcb_buffer_len += xcb_block_len + xcb_pad;
+ if (0 != xcb_pad) {
+ xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
+ xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
+ xcb_parts_idx++;
+ xcb_pad = 0;
+ }
+ xcb_block_len = 0;
+
+ if (NULL == xcb_out) {
+ /* allocate memory */
+ xcb_out = malloc(xcb_buffer_len);
+ *_buffer = xcb_out;
+ }
+
+ xcb_tmp = xcb_out;
+ for(i=0; i<xcb_parts_idx; i++) {
+ if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len)
+ memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len);
+ if (0 != xcb_parts[i].iov_len)
+ xcb_tmp += xcb_parts[i].iov_len;
+ }
+
+ return xcb_buffer_len;
+}
+
+int
+xcb_render_create_picture_value_list_unpack (const void *_buffer /**< */,
+ uint32_t value_mask /**< */,
+ xcb_render_create_picture_value_list_t *_aux /**< */)
{
char *xcb_tmp = (char *)_buffer;
- const xcb_render_create_picture_request_t *_aux = (xcb_render_create_picture_request_t *)_buffer;
unsigned int xcb_buffer_len = 0;
unsigned int xcb_block_len = 0;
unsigned int xcb_pad = 0;
unsigned int xcb_align_to = 0;
- xcb_block_len += sizeof(xcb_render_create_picture_request_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* value_list */
- xcb_block_len += xcb_popcount(_aux->value_mask) * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint32_t);
+ if(value_mask & XCB_RENDER_CP_REPEAT) {
+ /* xcb_render_create_picture_value_list_t.repeat */
+ _aux->repeat = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_ALPHA_MAP) {
+ /* xcb_render_create_picture_value_list_t.alphamap */
+ _aux->alphamap = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_ALPHA_X_ORIGIN) {
+ /* xcb_render_create_picture_value_list_t.alphaxorigin */
+ _aux->alphaxorigin = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_ALPHA_Y_ORIGIN) {
+ /* xcb_render_create_picture_value_list_t.alphayorigin */
+ _aux->alphayorigin = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_CLIP_X_ORIGIN) {
+ /* xcb_render_create_picture_value_list_t.clipxorigin */
+ _aux->clipxorigin = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_CLIP_Y_ORIGIN) {
+ /* xcb_render_create_picture_value_list_t.clipyorigin */
+ _aux->clipyorigin = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_CLIP_MASK) {
+ /* xcb_render_create_picture_value_list_t.clipmask */
+ _aux->clipmask = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_GRAPHICS_EXPOSURE) {
+ /* xcb_render_create_picture_value_list_t.graphicsexposure */
+ _aux->graphicsexposure = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_SUBWINDOW_MODE) {
+ /* xcb_render_create_picture_value_list_t.subwindowmode */
+ _aux->subwindowmode = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_POLY_EDGE) {
+ /* xcb_render_create_picture_value_list_t.polyedge */
+ _aux->polyedge = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_POLY_MODE) {
+ /* xcb_render_create_picture_value_list_t.polymode */
+ _aux->polymode = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_DITHER) {
+ /* xcb_render_create_picture_value_list_t.dither */
+ _aux->dither = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_COMPONENT_ALPHA) {
+ /* xcb_render_create_picture_value_list_t.componentalpha */
+ _aux->componentalpha = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
/* insert padding */
xcb_pad = -xcb_block_len & (xcb_align_to - 1);
xcb_buffer_len += xcb_block_len + xcb_pad;
@@ -826,22 +1059,30 @@ xcb_render_create_picture_sizeof (const void *_buffer /**< */)
return xcb_buffer_len;
}
+int
+xcb_render_create_picture_value_list_sizeof (const void *_buffer /**< */,
+ uint32_t value_mask /**< */)
+{
+ xcb_render_create_picture_value_list_t _aux;
+ return xcb_render_create_picture_value_list_unpack(_buffer, value_mask, &_aux);
+}
+
xcb_void_cookie_t
xcb_render_create_picture_checked (xcb_connection_t *c /**< */,
xcb_render_picture_t pid /**< */,
xcb_drawable_t drawable /**< */,
xcb_render_pictformat_t format /**< */,
uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */)
+ const void *value_list /**< */)
{
static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
+ /* count */ 3,
/* ext */ &xcb_render_id,
/* opcode */ XCB_RENDER_CREATE_PICTURE,
/* isvoid */ 1
};
- struct iovec xcb_parts[6];
+ struct iovec xcb_parts[5];
xcb_void_cookie_t xcb_ret;
xcb_render_create_picture_request_t xcb_out;
@@ -854,11 +1095,10 @@ xcb_render_create_picture_checked (xcb_connection_t *c /**< */,
xcb_parts[2].iov_len = sizeof(xcb_out);
xcb_parts[3].iov_base = 0;
xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t value_list */
+ /* xcb_render_create_picture_value_list_t value_list */
xcb_parts[4].iov_base = (char *) value_list;
- xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[4].iov_len =
+ xcb_render_create_picture_value_list_sizeof (value_list, value_mask);
xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
return xcb_ret;
@@ -870,16 +1110,16 @@ xcb_render_create_picture (xcb_connection_t *c /**< */,
xcb_drawable_t drawable /**< */,
xcb_render_pictformat_t format /**< */,
uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */)
+ const void *value_list /**< */)
{
static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
+ /* count */ 3,
/* ext */ &xcb_render_id,
/* opcode */ XCB_RENDER_CREATE_PICTURE,
/* isvoid */ 1
};
- struct iovec xcb_parts[6];
+ struct iovec xcb_parts[5];
xcb_void_cookie_t xcb_ret;
xcb_render_create_picture_request_t xcb_out;
@@ -892,35 +1132,345 @@ xcb_render_create_picture (xcb_connection_t *c /**< */,
xcb_parts[2].iov_len = sizeof(xcb_out);
xcb_parts[3].iov_base = 0;
xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t value_list */
+ /* xcb_render_create_picture_value_list_t value_list */
xcb_parts[4].iov_base = (char *) value_list;
- xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[4].iov_len =
+ xcb_render_create_picture_value_list_sizeof (value_list, value_mask);
+
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+xcb_void_cookie_t
+xcb_render_create_picture_aux_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t pid /**< */,
+ xcb_drawable_t drawable /**< */,
+ xcb_render_pictformat_t format /**< */,
+ uint32_t value_mask /**< */,
+ const xcb_render_create_picture_value_list_t *value_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 3,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_PICTURE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[5];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_picture_request_t xcb_out;
+ void *xcb_aux0 = 0;
+
+ xcb_out.pid = pid;
+ xcb_out.drawable = drawable;
+ xcb_out.format = format;
+ xcb_out.value_mask = value_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ /* xcb_render_create_picture_value_list_t value_list */
+ xcb_parts[4].iov_len =
+ xcb_render_create_picture_value_list_serialize (&xcb_aux0, value_mask, value_list);
+ xcb_parts[4].iov_base = xcb_aux0;
+
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ free(xcb_aux0);
+ return xcb_ret;
+}
+
+xcb_void_cookie_t
+xcb_render_create_picture_aux (xcb_connection_t *c /**< */,
+ xcb_render_picture_t pid /**< */,
+ xcb_drawable_t drawable /**< */,
+ xcb_render_pictformat_t format /**< */,
+ uint32_t value_mask /**< */,
+ const xcb_render_create_picture_value_list_t *value_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 3,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CREATE_PICTURE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[5];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_create_picture_request_t xcb_out;
+ void *xcb_aux0 = 0;
+
+ xcb_out.pid = pid;
+ xcb_out.drawable = drawable;
+ xcb_out.format = format;
+ xcb_out.value_mask = value_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ /* xcb_render_create_picture_value_list_t value_list */
+ xcb_parts[4].iov_len =
+ xcb_render_create_picture_value_list_serialize (&xcb_aux0, value_mask, value_list);
+ xcb_parts[4].iov_base = xcb_aux0;
xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ free(xcb_aux0);
return xcb_ret;
}
int
-xcb_render_change_picture_sizeof (const void *_buffer /**< */)
+xcb_render_change_picture_value_list_serialize (void **_buffer /**< */,
+ uint32_t value_mask /**< */,
+ const xcb_render_change_picture_value_list_t *_aux /**< */)
+{
+ char *xcb_out = *_buffer;
+ unsigned int xcb_buffer_len = 0;
+ unsigned int xcb_align_to = 0;
+
+ unsigned int xcb_pad = 0;
+ char xcb_pad0[3] = {0, 0, 0};
+ struct iovec xcb_parts[14];
+ unsigned int xcb_parts_idx = 0;
+ unsigned int xcb_block_len = 0;
+ unsigned int i;
+ char *xcb_tmp;
+
+ if(value_mask & XCB_RENDER_CP_REPEAT) {
+ /* xcb_render_change_picture_value_list_t.repeat */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->repeat;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_ALPHA_MAP) {
+ /* xcb_render_change_picture_value_list_t.alphamap */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphamap;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_ALPHA_X_ORIGIN) {
+ /* xcb_render_change_picture_value_list_t.alphaxorigin */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphaxorigin;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_ALPHA_Y_ORIGIN) {
+ /* xcb_render_change_picture_value_list_t.alphayorigin */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->alphayorigin;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_CLIP_X_ORIGIN) {
+ /* xcb_render_change_picture_value_list_t.clipxorigin */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipxorigin;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_CLIP_Y_ORIGIN) {
+ /* xcb_render_change_picture_value_list_t.clipyorigin */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipyorigin;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_CLIP_MASK) {
+ /* xcb_render_change_picture_value_list_t.clipmask */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->clipmask;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_GRAPHICS_EXPOSURE) {
+ /* xcb_render_change_picture_value_list_t.graphicsexposure */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->graphicsexposure;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_SUBWINDOW_MODE) {
+ /* xcb_render_change_picture_value_list_t.subwindowmode */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->subwindowmode;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_POLY_EDGE) {
+ /* xcb_render_change_picture_value_list_t.polyedge */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->polyedge;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_POLY_MODE) {
+ /* xcb_render_change_picture_value_list_t.polymode */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->polymode;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_DITHER) {
+ /* xcb_render_change_picture_value_list_t.dither */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->dither;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_COMPONENT_ALPHA) {
+ /* xcb_render_change_picture_value_list_t.componentalpha */
+ xcb_parts[xcb_parts_idx].iov_base = (char *) &_aux->componentalpha;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_parts[xcb_parts_idx].iov_len = sizeof(uint32_t);
+ xcb_parts_idx++;
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ /* insert padding */
+ xcb_pad = -xcb_block_len & (xcb_align_to - 1);
+ xcb_buffer_len += xcb_block_len + xcb_pad;
+ if (0 != xcb_pad) {
+ xcb_parts[xcb_parts_idx].iov_base = xcb_pad0;
+ xcb_parts[xcb_parts_idx].iov_len = xcb_pad;
+ xcb_parts_idx++;
+ xcb_pad = 0;
+ }
+ xcb_block_len = 0;
+
+ if (NULL == xcb_out) {
+ /* allocate memory */
+ xcb_out = malloc(xcb_buffer_len);
+ *_buffer = xcb_out;
+ }
+
+ xcb_tmp = xcb_out;
+ for(i=0; i<xcb_parts_idx; i++) {
+ if (0 != xcb_parts[i].iov_base && 0 != xcb_parts[i].iov_len)
+ memcpy(xcb_tmp, xcb_parts[i].iov_base, xcb_parts[i].iov_len);
+ if (0 != xcb_parts[i].iov_len)
+ xcb_tmp += xcb_parts[i].iov_len;
+ }
+
+ return xcb_buffer_len;
+}
+
+int
+xcb_render_change_picture_value_list_unpack (const void *_buffer /**< */,
+ uint32_t value_mask /**< */,
+ xcb_render_change_picture_value_list_t *_aux /**< */)
{
char *xcb_tmp = (char *)_buffer;
- const xcb_render_change_picture_request_t *_aux = (xcb_render_change_picture_request_t *)_buffer;
unsigned int xcb_buffer_len = 0;
unsigned int xcb_block_len = 0;
unsigned int xcb_pad = 0;
unsigned int xcb_align_to = 0;
- xcb_block_len += sizeof(xcb_render_change_picture_request_t);
- xcb_tmp += xcb_block_len;
- xcb_buffer_len += xcb_block_len;
- xcb_block_len = 0;
- /* value_list */
- xcb_block_len += xcb_popcount(_aux->value_mask) * sizeof(uint32_t);
- xcb_tmp += xcb_block_len;
- xcb_align_to = ALIGNOF(uint32_t);
+ if(value_mask & XCB_RENDER_CP_REPEAT) {
+ /* xcb_render_change_picture_value_list_t.repeat */
+ _aux->repeat = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_ALPHA_MAP) {
+ /* xcb_render_change_picture_value_list_t.alphamap */
+ _aux->alphamap = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_ALPHA_X_ORIGIN) {
+ /* xcb_render_change_picture_value_list_t.alphaxorigin */
+ _aux->alphaxorigin = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_ALPHA_Y_ORIGIN) {
+ /* xcb_render_change_picture_value_list_t.alphayorigin */
+ _aux->alphayorigin = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_CLIP_X_ORIGIN) {
+ /* xcb_render_change_picture_value_list_t.clipxorigin */
+ _aux->clipxorigin = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_CLIP_Y_ORIGIN) {
+ /* xcb_render_change_picture_value_list_t.clipyorigin */
+ _aux->clipyorigin = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_CLIP_MASK) {
+ /* xcb_render_change_picture_value_list_t.clipmask */
+ _aux->clipmask = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_GRAPHICS_EXPOSURE) {
+ /* xcb_render_change_picture_value_list_t.graphicsexposure */
+ _aux->graphicsexposure = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_SUBWINDOW_MODE) {
+ /* xcb_render_change_picture_value_list_t.subwindowmode */
+ _aux->subwindowmode = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_POLY_EDGE) {
+ /* xcb_render_change_picture_value_list_t.polyedge */
+ _aux->polyedge = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_POLY_MODE) {
+ /* xcb_render_change_picture_value_list_t.polymode */
+ _aux->polymode = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_DITHER) {
+ /* xcb_render_change_picture_value_list_t.dither */
+ _aux->dither = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
+ if(value_mask & XCB_RENDER_CP_COMPONENT_ALPHA) {
+ /* xcb_render_change_picture_value_list_t.componentalpha */
+ _aux->componentalpha = *(uint32_t *)xcb_tmp;
+ xcb_block_len += sizeof(uint32_t);
+ xcb_tmp += sizeof(uint32_t);
+ xcb_align_to = ALIGNOF(uint32_t);
+ }
/* insert padding */
xcb_pad = -xcb_block_len & (xcb_align_to - 1);
xcb_buffer_len += xcb_block_len + xcb_pad;
@@ -933,20 +1483,28 @@ xcb_render_change_picture_sizeof (const void *_buffer /**< */)
return xcb_buffer_len;
}
+int
+xcb_render_change_picture_value_list_sizeof (const void *_buffer /**< */,
+ uint32_t value_mask /**< */)
+{
+ xcb_render_change_picture_value_list_t _aux;
+ return xcb_render_change_picture_value_list_unpack(_buffer, value_mask, &_aux);
+}
+
xcb_void_cookie_t
xcb_render_change_picture_checked (xcb_connection_t *c /**< */,
xcb_render_picture_t picture /**< */,
uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */)
+ const void *value_list /**< */)
{
static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
+ /* count */ 3,
/* ext */ &xcb_render_id,
/* opcode */ XCB_RENDER_CHANGE_PICTURE,
/* isvoid */ 1
};
- struct iovec xcb_parts[6];
+ struct iovec xcb_parts[5];
xcb_void_cookie_t xcb_ret;
xcb_render_change_picture_request_t xcb_out;
@@ -957,11 +1515,10 @@ xcb_render_change_picture_checked (xcb_connection_t *c /**< */,
xcb_parts[2].iov_len = sizeof(xcb_out);
xcb_parts[3].iov_base = 0;
xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t value_list */
+ /* xcb_render_change_picture_value_list_t value_list */
xcb_parts[4].iov_base = (char *) value_list;
- xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[4].iov_len =
+ xcb_render_change_picture_value_list_sizeof (value_list, value_mask);
xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
return xcb_ret;
@@ -971,16 +1528,16 @@ xcb_void_cookie_t
xcb_render_change_picture (xcb_connection_t *c /**< */,
xcb_render_picture_t picture /**< */,
uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */)
+ const void *value_list /**< */)
{
static const xcb_protocol_request_t xcb_req = {
- /* count */ 4,
+ /* count */ 3,
/* ext */ &xcb_render_id,
/* opcode */ XCB_RENDER_CHANGE_PICTURE,
/* isvoid */ 1
};
- struct iovec xcb_parts[6];
+ struct iovec xcb_parts[5];
xcb_void_cookie_t xcb_ret;
xcb_render_change_picture_request_t xcb_out;
@@ -991,13 +1548,82 @@ xcb_render_change_picture (xcb_connection_t *c /**< */,
xcb_parts[2].iov_len = sizeof(xcb_out);
xcb_parts[3].iov_base = 0;
xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
- /* uint32_t value_list */
+ /* xcb_render_change_picture_value_list_t value_list */
xcb_parts[4].iov_base = (char *) value_list;
- xcb_parts[4].iov_len = xcb_popcount(value_mask) * sizeof(uint32_t);
- xcb_parts[5].iov_base = 0;
- xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
+ xcb_parts[4].iov_len =
+ xcb_render_change_picture_value_list_sizeof (value_list, value_mask);
+
+ xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ return xcb_ret;
+}
+
+xcb_void_cookie_t
+xcb_render_change_picture_aux_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ uint32_t value_mask /**< */,
+ const xcb_render_change_picture_value_list_t *value_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 3,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CHANGE_PICTURE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[5];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_change_picture_request_t xcb_out;
+ void *xcb_aux0 = 0;
+
+ xcb_out.picture = picture;
+ xcb_out.value_mask = value_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ /* xcb_render_change_picture_value_list_t value_list */
+ xcb_parts[4].iov_len =
+ xcb_render_change_picture_value_list_serialize (&xcb_aux0, value_mask, value_list);
+ xcb_parts[4].iov_base = xcb_aux0;
+
+ xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
+ free(xcb_aux0);
+ return xcb_ret;
+}
+
+xcb_void_cookie_t
+xcb_render_change_picture_aux (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ uint32_t value_mask /**< */,
+ const xcb_render_change_picture_value_list_t *value_list /**< */)
+{
+ static const xcb_protocol_request_t xcb_req = {
+ /* count */ 3,
+ /* ext */ &xcb_render_id,
+ /* opcode */ XCB_RENDER_CHANGE_PICTURE,
+ /* isvoid */ 1
+ };
+
+ struct iovec xcb_parts[5];
+ xcb_void_cookie_t xcb_ret;
+ xcb_render_change_picture_request_t xcb_out;
+ void *xcb_aux0 = 0;
+
+ xcb_out.picture = picture;
+ xcb_out.value_mask = value_mask;
+
+ xcb_parts[2].iov_base = (char *) &xcb_out;
+ xcb_parts[2].iov_len = sizeof(xcb_out);
+ xcb_parts[3].iov_base = 0;
+ xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
+ /* xcb_render_change_picture_value_list_t value_list */
+ xcb_parts[4].iov_len =
+ xcb_render_change_picture_value_list_serialize (&xcb_aux0, value_mask, value_list);
+ xcb_parts[4].iov_base = xcb_aux0;
xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
+ free(xcb_aux0);
return xcb_ret;
}
-------------- next part --------------
diff --git a/before_change/src/render.h b/libxcb/src/render.h
index 8b4a524..ae3aada 100644
--- a/before_change/src/render.h
+++ b/libxcb/src/render.h
@@ -575,6 +575,25 @@ typedef struct xcb_render_query_pict_index_values_reply_t {
uint8_t pad1[20]; /**< */
} xcb_render_query_pict_index_values_reply_t;
+/**
+ * @brief xcb_render_create_picture_value_list_t
+ **/
+typedef struct xcb_render_create_picture_value_list_t {
+ uint32_t repeat; /**< */
+ uint32_t alphamap; /**< */
+ uint32_t alphaxorigin; /**< */
+ uint32_t alphayorigin; /**< */
+ uint32_t clipxorigin; /**< */
+ uint32_t clipyorigin; /**< */
+ uint32_t clipmask; /**< */
+ uint32_t graphicsexposure; /**< */
+ uint32_t subwindowmode; /**< */
+ uint32_t polyedge; /**< */
+ uint32_t polymode; /**< */
+ uint32_t dither; /**< */
+ uint32_t componentalpha; /**< */
+} xcb_render_create_picture_value_list_t;
+
/** Opcode for xcb_render_create_picture. */
#define XCB_RENDER_CREATE_PICTURE 4
@@ -591,6 +610,25 @@ typedef struct xcb_render_create_picture_request_t {
uint32_t value_mask; /**< */
} xcb_render_create_picture_request_t;
+/**
+ * @brief xcb_render_change_picture_value_list_t
+ **/
+typedef struct xcb_render_change_picture_value_list_t {
+ uint32_t repeat; /**< */
+ uint32_t alphamap; /**< */
+ uint32_t alphaxorigin; /**< */
+ uint32_t alphayorigin; /**< */
+ uint32_t clipxorigin; /**< */
+ uint32_t clipyorigin; /**< */
+ uint32_t clipmask; /**< */
+ uint32_t graphicsexposure; /**< */
+ uint32_t subwindowmode; /**< */
+ uint32_t polyedge; /**< */
+ uint32_t polymode; /**< */
+ uint32_t dither; /**< */
+ uint32_t componentalpha; /**< */
+} xcb_render_change_picture_value_list_t;
+
/** Opcode for xcb_render_change_picture. */
#define XCB_RENDER_CHANGE_PICTURE 5
@@ -1714,7 +1752,18 @@ xcb_render_query_pict_index_values_reply (xcb_connection_t
xcb_generic_error_t **e /**< */);
int
-xcb_render_create_picture_sizeof (const void *_buffer /**< */);
+xcb_render_create_picture_value_list_serialize (void **_buffer /**< */,
+ uint32_t value_mask /**< */,
+ const xcb_render_create_picture_value_list_t *_aux /**< */);
+
+int
+xcb_render_create_picture_value_list_unpack (const void *_buffer /**< */,
+ uint32_t value_mask /**< */,
+ xcb_render_create_picture_value_list_t *_aux /**< */);
+
+int
+xcb_render_create_picture_value_list_sizeof (const void *_buffer /**< */,
+ uint32_t value_mask /**< */);
/**
*
@@ -1733,7 +1782,7 @@ xcb_render_create_picture_checked (xcb_connection_t *c /**< */,
xcb_drawable_t drawable /**< */,
xcb_render_pictformat_t format /**< */,
uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */);
+ const void *value_list /**< */);
/**
*
@@ -1749,10 +1798,56 @@ xcb_render_create_picture (xcb_connection_t *c /**< */,
xcb_drawable_t drawable /**< */,
xcb_render_pictformat_t format /**< */,
uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */);
+ const void *value_list /**< */);
+
+/**
+ *
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+xcb_void_cookie_t
+xcb_render_create_picture_aux_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t pid /**< */,
+ xcb_drawable_t drawable /**< */,
+ xcb_render_pictformat_t format /**< */,
+ uint32_t value_mask /**< */,
+ const xcb_render_create_picture_value_list_t *value_list /**< */);
+
+/**
+ *
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+xcb_void_cookie_t
+xcb_render_create_picture_aux (xcb_connection_t *c /**< */,
+ xcb_render_picture_t pid /**< */,
+ xcb_drawable_t drawable /**< */,
+ xcb_render_pictformat_t format /**< */,
+ uint32_t value_mask /**< */,
+ const xcb_render_create_picture_value_list_t *value_list /**< */);
+
+int
+xcb_render_change_picture_value_list_serialize (void **_buffer /**< */,
+ uint32_t value_mask /**< */,
+ const xcb_render_change_picture_value_list_t *_aux /**< */);
int
-xcb_render_change_picture_sizeof (const void *_buffer /**< */);
+xcb_render_change_picture_value_list_unpack (const void *_buffer /**< */,
+ uint32_t value_mask /**< */,
+ xcb_render_change_picture_value_list_t *_aux /**< */);
+
+int
+xcb_render_change_picture_value_list_sizeof (const void *_buffer /**< */,
+ uint32_t value_mask /**< */);
/**
*
@@ -1769,7 +1864,7 @@ xcb_void_cookie_t
xcb_render_change_picture_checked (xcb_connection_t *c /**< */,
xcb_render_picture_t picture /**< */,
uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */);
+ const void *value_list /**< */);
/**
*
@@ -1783,7 +1878,38 @@ xcb_void_cookie_t
xcb_render_change_picture (xcb_connection_t *c /**< */,
xcb_render_picture_t picture /**< */,
uint32_t value_mask /**< */,
- const uint32_t *value_list /**< */);
+ const void *value_list /**< */);
+
+/**
+ *
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ * This form can be used only if the request will not cause
+ * a reply to be generated. Any returned error will be
+ * saved for handling by xcb_request_check().
+ */
+xcb_void_cookie_t
+xcb_render_change_picture_aux_checked (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ uint32_t value_mask /**< */,
+ const xcb_render_change_picture_value_list_t *value_list /**< */);
+
+/**
+ *
+ * @param c The connection
+ * @return A cookie
+ *
+ * Delivers a request to the X server.
+ *
+ */
+xcb_void_cookie_t
+xcb_render_change_picture_aux (xcb_connection_t *c /**< */,
+ xcb_render_picture_t picture /**< */,
+ uint32_t value_mask /**< */,
+ const xcb_render_change_picture_value_list_t *value_list /**< */);
int
xcb_render_set_picture_clip_rectangles_sizeof (const void *_buffer /**< */,
-------------- next part --------------
diff --git a/home/pratyush/checkout/xorg-build/proto/src/render.xml b/proto/src/render.xml
index 55b73f7..6285134 100644
--- a/home/pratyush/checkout/xorg-build/proto/src/render.xml
+++ b/proto/src/render.xml
@@ -280,16 +280,124 @@ for licensing information.
<field type="PICTURE" name="pid" />
<field type="DRAWABLE" name="drawable" />
<field type="PICTFORMAT" name="format" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
+ <field type="CARD32" name="value_mask" mask="CP"/>
+ <switch name="value_list">
+ <fieldref>value_mask</fieldref>
+ <bitcase>
+ <enumref ref="CP">Repeat</enumref>
+ <field type="CARD32" name="repeat" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">AlphaMap</enumref>
+ <field type="CARD32" name="alphamap" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">AlphaXOrigin</enumref>
+ <field type="CARD32" name="alphaxorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">AlphaYOrigin</enumref>
+ <field type="CARD32" name="alphayorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ClipXOrigin</enumref>
+ <field type="CARD32" name="clipxorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ClipYOrigin</enumref>
+ <field type="CARD32" name="clipyorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ClipMask</enumref>
+ <field type="CARD32" name="clipmask" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">GraphicsExposure</enumref>
+ <field type="CARD32" name="graphicsexposure" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">SubwindowMode</enumref>
+ <field type="CARD32" name="subwindowmode" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">PolyEdge</enumref>
+ <field type="CARD32" name="polyedge" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">PolyMode</enumref>
+ <field type="CARD32" name="polymode" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">Dither</enumref>
+ <field type="CARD32" name="dither" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ComponentAlpha</enumref>
+ <field type="CARD32" name="componentalpha" />
+ </bitcase>
+ </switch>
+
+
</request>
<request name="ChangePicture" opcode="5">
<field type="PICTURE" name="picture" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
+ <field type="CARD32" name="value_mask" mask="CP"/>
+ <switch name="value_list">
+ <fieldref>value_mask</fieldref>
+ <bitcase>
+ <enumref ref="CP">Repeat</enumref>
+ <field type="CARD32" name="repeat" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">AlphaMap</enumref>
+ <field type="CARD32" name="alphamap" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">AlphaXOrigin</enumref>
+ <field type="CARD32" name="alphaxorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">AlphaYOrigin</enumref>
+ <field type="CARD32" name="alphayorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ClipXOrigin</enumref>
+ <field type="CARD32" name="clipxorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ClipYOrigin</enumref>
+ <field type="CARD32" name="clipyorigin" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ClipMask</enumref>
+ <field type="CARD32" name="clipmask" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">GraphicsExposure</enumref>
+ <field type="CARD32" name="graphicsexposure" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">SubwindowMode</enumref>
+ <field type="CARD32" name="subwindowmode" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">PolyEdge</enumref>
+ <field type="CARD32" name="polyedge" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">PolyMode</enumref>
+ <field type="CARD32" name="polymode" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">Dither</enumref>
+ <field type="CARD32" name="dither" />
+ </bitcase>
+ <bitcase>
+ <enumref ref="CP">ComponentAlpha</enumref>
+ <field type="CARD32" name="componentalpha" />
+ </bitcase>
+ </switch>
</request>
<request name="SetPictureClipRectangles" opcode="6">
More information about the Xcb
mailing list