<div dir="ltr"><div dir="ltr"><div><div dir="ltr"><br class="gmail-Apple-interchange-newline">On Sun, Sep 16, 2018 at 9:33 AM Uli Schlachter <<a href="mailto:psychon@znc.in">psychon@znc.in</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Thomas,<br><br>sorry for being awfully slow.<br><br>On 26.08.2018 07:14, Thomas Fischer wrote:<br>[...]> diff --git a/src/xproto.xml b/src/xproto.xml<br>> index 9624700..f78f339 100644<br>> --- a/src/xproto.xml<br>> +++ b/src/xproto.xml<br>> @@ -1828,6 +1828,10 @@ <xcb/xcb.h><br>>      xcb_screen_iterator_t   iter   = xcb_setup_roots_iterator (setup);<br>>      xcb_screen_t           *screen = iter.data;<br>>  <br>> +    uint32_t value_mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;<br>> +    uint32_t value_list[] = { screen->black_pixel,<br>> +    XCB_EVENT_MASK_KEY_RELEASE | XCB_EVENT_MASK_EXPOSE<br>> +    /* | XCB_EVENT_MASK_* ... */ };<br>[...]<br><br>What did you base your patch on? The string "xcb_setup_roots_iterator"<br>does not appear in the current(?) version of xproto.xml. Thus, your<br>patch does not apply here.<br><br>Cheers,<br>Uli<br></blockquote></div><div><br></div><div>Hello, it's no problem!</div><div><br></div><div>The example was based on the tutorial here:</div><div><a href="https://xcb.freedesktop.org/tutorial/basicwindowsanddrawing/">https://xcb.freedesktop.org/tutorial/basicwindowsanddrawing/</a></div><div><br></div><div>The "xcb_setup_roots_iterator" function is generated in libxcb/src/xproto.{h,c}<br></div><div>Most of the "*_iterator", "*_next" etc. functions are generated, and have no documentation.<br></div><div>I think the functions "xcb_setup_roots_iterator", "xcb_setup_next", "xcb_setup_end", etc. are generated by libxcb/src/c_client.py from the struct "Setup" in xproto.xml:</div><div><br></div><div>  <struct name="Setup"></div><div>    <field type="CARD8" name="status" /> <!-- always 1 -> Success --></div><div>    <pad bytes="1" /></div><div>    <field type="CARD16" name="protocol_major_version" /></div><div>    <field type="CARD16" name="protocol_minor_version" /></div><div>    <field type="CARD16" name="length" /></div><div>    <field type="CARD32" name="release_number" /></div><div>    <field type="CARD32" name="resource_id_base" /></div><div>    <field type="CARD32" name="resource_id_mask" /></div><div>    <field type="CARD32" name="motion_buffer_size" /></div><div>    <field type="CARD16" name="vendor_len" /></div><div>    <field type="CARD16" name="maximum_request_length" /></div><div>    <field type="CARD8" name="roots_len" /></div><div>    <field type="CARD8" name="pixmap_formats_len" /></div><div>    <field type="CARD8" name="image_byte_order" enum="ImageOrder" /></div><div>    <field type="CARD8" name="bitmap_format_bit_order" enum="ImageOrder" /></div><div>    <field type="CARD8" name="bitmap_format_scanline_unit" /></div><div>    <field type="CARD8" name="bitmap_format_scanline_pad" /></div><div>    <field type="KEYCODE" name="min_keycode" /></div><div>    <field type="KEYCODE" name="max_keycode" /></div><div>    <pad bytes="4" /></div><div>    <list type="char" name="vendor"></div><div>      <fieldref>vendor_len</fieldref></div><div>    </list></div><div>    <pad align="4" /></div><div>    <list type="FORMAT" name="pixmap_formats"></div><div>      <fieldref>pixmap_formats_len</fieldref></div><div>    </list></div><div>    <list type="SCREEN" name="roots"></div><div>      <fieldref>roots_len</fieldref></div><div>    </list></div><div><br></div><div>Should I change the example, or maybe try to write documentation for these functions?</div><div><br></div><div>Thanks for taking the time to review it,</div><div>Thomas</div></div></div>