commit 4b40b44cb6d088b6ffa2fb5cf3ad8f12da588cef
Author: Matt Turner <mattst88@gmail.com>
Date:   Sat Feb 22 12:10:53 2020 -0800

    Release libxcb 1.14
    
    Signed-off-by: Matt Turner <mattst88@gmail.com>

commit 78c492deaa7ae3aad0b0eeb4b126bb291cc637a7
Author: Matt Turner <mattst88@gmail.com>
Date:   Sat Feb 22 12:19:58 2020 -0800

    Build xz tarballs instead of bzip2
    
    Signed-off-by: Matt Turner <mattst88@gmail.com>

commit 8f7e4c4e9fc6ee6b5b5498a7d8af79150be0d26a
Author: Matt Turner <mattst88@gmail.com>
Date:   Sat Feb 22 11:24:11 2020 -0800

    configure.ac: Depend on pthread-stubs only on not-Linux
    
    Signed-off-by: Matt Turner <mattst88@gmail.com>

commit f9f4b00aad69ff36e81c63089b1b16660eaca900
Author: Sam Varshavchik <mrsam@courier-mta.com>
Date:   Sat Jan 4 10:43:59 2020 -0500

    Implement xcb_total_read() and xcb_total_written().
    
    Returns raw byte counts that have been read or written to the
    xcb_connection_t.
    
    I found it very useful when developing a high level widget toolkit, to
    track down inefficient/sub-optimum code that generates a lot of X
    protocol traffic.
    
    Signed-off-by: Sam Varshavchik <mrsam@courier-mta.com>

commit 59e271e15bcecf0c461cd5c6c59081fb86b96c22
Author: A. Wilcox <AWilcox@Wilcox-Tech.com>
Date:   Mon Dec 23 21:49:29 2019 -0600

    tests: Support Check 0.13.0 API
    
    [mattst88]: Keep compatibility  with old API via preprocessor
    
    Fixes: #43

commit 21324989b7e121c008a2c4fdf98547541cbf7b83
Author: Martin Dørum <martid0311@gmail.com>
Date:   Sun May 19 16:05:08 2019 +0200

    Handle EINTR from recvmsg in _xcb_in_read
    
    I have a GTK application which occasionally crashes with an "interrupted
    system call" g_message from gdk. After a lot of debugging, I've found
    that the call to recvmsg in _xcb_in_read occasionally fails with EINTR,
    and instead of retrying the system call, xcb would just shut down the
    connection.
    
    This change makes _xcb_in_read treat EINTR the same as it would treat
    EAGAIN; it returns 1 and libX11 ends up calling xcb_poll_for_event
    again (from what I have understood).
    
    I have spoken with a few people who think recvmsg failing with EINTR in
    this case shouldn't ever happen, and I don't know enough to agree or
    disagree with that. In case anyone wants to dig further and try to
    figure out why the recvmsg call sometimes fails with EINTR, here's the
    backtrace from inside of _xcb_in_read where that happened:
    
    Thread 1 "beanbar" hit Breakpoint 1, _xcb_in_read (c=c@entry=0x55ecbe4aba80) at xcb_in.c:1059
    1059                fprintf(stderr, "Hello World am %s:%i, errno is %s\n", __FILE__, __LINE__, strerror(errno));
    (gdb) bt
    0  0x00007fa48fa48639 in _xcb_in_read (c=c@entry=0x55ecbe4aba80) at xcb_in.c:1059
    1  0x00007fa48fa489d8 in poll_for_next_event (c=0x55ecbe4aba80, queued=queued@entry=0) at xcb_in.c:352
    2  0x00007fa48fa48a3d in poll_for_next_event (queued=0, c=<optimized out>) at xcb_in.c:722
    3  0x00007fa48fa48a3d in xcb_poll_for_event (c=<optimized out>) at xcb_in.c:722
    4  0x00007fa4908d1b7e in poll_for_event (dpy=dpy@entry=0x55ecbe4a9730, queued_only=queued_only@entry=0) at xcb_io.c:245
    5  0x00007fa4908d1cf0 in poll_for_response (dpy=dpy@entry=0x55ecbe4a9730) at xcb_io.c:303
    6  0x00007fa4908d1fed in _XEventsQueued (mode=2, dpy=0x55ecbe4a9730) at xcb_io.c:363
    7  0x00007fa4908d1fed in _XEventsQueued (dpy=dpy@entry=0x55ecbe4a9730, mode=mode@entry=2) at xcb_io.c:344
    8  0x00007fa4908c3d47 in XPending (dpy=0x55ecbe4a9730) at Pending.c:55
    9  0x00007fa493cadbc7 in  () at /usr/lib/libgdk-3.so.0
    10 0x00007fa49234d08a in g_main_context_prepare () at /usr/lib/libglib-2.0.so.0
    11 0x00007fa49234d6e6 in  () at /usr/lib/libglib-2.0.so.0
    12 0x00007fa49234d8ae in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0
    13 0x00007fa4938b920e in g_application_run () at /usr/lib/libgio-2.0.so.0
    14 0x000055ecbc820af4 in main (argc=1, argv=0x7ffd06238098) at src/main.c:190
    
    Signed-off-by: Martin Dørum <martid0311@gmail.com>

commit 656c08c5429a3cf53e7abd7fc56cd3c3a79c0f64
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sun Sep 14 00:05:27 2014 +0100

    Include time.h before using time()
    
    Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>

commit be1745c8eb00defcb31d336ccc142de056e92bd8
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sun Feb 17 12:06:10 2019 -0800

    Add README.md to EXTRA_DIST
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 58f37377c851960cbf21fac1caf38ab1e66c7d6c
Author: Eduardo Sánchez Muñoz <esm@eduardosm.net>
Date:   Sun Feb 17 13:33:12 2019 +0100

    Add "ge.*" to src/.gitignore

commit 7bac366953005233fc3c8736e6f1cd5798e65e28
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sat Feb 16 13:41:28 2019 -0800

    Update README for gitlab migration
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 02ff3eadf48e6affe3b59ef688312b4dab538e8b
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sat Feb 16 13:20:45 2019 -0800

    Update configure.ac bug URL for gitlab migration
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 542befe40a3a7c6a5d1dcb7f38fb9eb261b96b24
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Mon Jan 7 14:42:53 2019 -0800

    c_client: fix "adress" typo
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 8287ebd7b752c33b0cabc4982606fe4831106f7e
Author: Uli Schlachter <psychon@znc.in>
Date:   Thu Sep 27 14:04:17 2018 +0200

    Release libxcb 1.13.1

commit bbda345a718ff73086437e51f03fcbb73e4365b9
Author: Erik Kurzinger <ekurzinger@nvidia.com>
Date:   Mon Aug 20 12:06:25 2018 -0700

    don't flag extra reply in xcb_take_socket
    
    If any flags are specified in a call to xcb_take_socket,
    they should only be applied to replies for requests sent
    after that function returns (and until the socket is
    re-acquired by XCB).
    
    Previously, they would also be incorrectly applied to the
    reply for the last request sent before the socket was taken.
    For instance, in this example program the reply for the
    GetInputFocus request gets discarded, even though it was
    sent before the socket was taken. This results in the
    call to retrieve the reply hanging indefinitely.
    
    static void return_socket(void *closure) {}
    
    int main(void)
    {
        Display *dpy = XOpenDisplay(NULL);
        xcb_connection_t *c = XGetXCBConnection(dpy);
    
        xcb_get_input_focus_cookie_t cookie = xcb_get_input_focus_unchecked(c);
        xcb_flush(c);
    
        uint64_t seq;
        xcb_take_socket(c, return_socket, dpy, XCB_REQUEST_DISCARD_REPLY, &seq);
    
        xcb_generic_error_t *err;
        xcb_get_input_focus_reply(c, cookie, &err);
    }
    
    In practice, this has been causing intermittent KWin crashes when
    used in combination with the proprietary NVIDIA driver such as
    https://bugs.kde.org/show_bug.cgi?id=386370 since when Xlib fails to
    retrieve one of these incorrectly discarded replies it triggers
    an IO error.
    
    Signed-off-by: Erik Kurzinger <ekurzinger@nvidia.com>
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit 7e0f166579672d71efd819c81f0c932b0acd542c
Author: Daniel Stone <daniels@collabora.com>
Date:   Wed Feb 28 01:26:55 2018 +0000

    Release libxcb 1.13
    
    Signed-off-by: Daniel Stone <daniels@collabora.com>

commit a3e9821bec08a69b355b46b0655562b9df61bb21
Author: Daniel Stone <daniels@collabora.com>
Date:   Wed Apr 26 17:55:54 2017 +0200

    c_client: Add support for lists of FDs
    
    Matching xcbgen changes, add support having a ListType which contains
    file descriptors. Use this to send a variable number of FDs to the
    server, including when the list size is not fixed.
    
    Signed-off-by: Daniel Stone <daniels@collabora.com>

commit c7aa4e682fdc7f0035f928af6eafd052e38cc15a
Author: Daniel Stone <daniels@collabora.com>
Date:   Wed Apr 26 17:54:01 2017 +0200

    c_client: Don't serialise non-wire fields
    
    For when we have a variable-sized field followed by a fixed field, make
    sure we do not serialise non-wire fields.
    
    Signed-off-by: Daniel Stone <daniels@collabora.com>

commit d10194a321c3db851b3ede9a98cdc95e951943aa
Author: Christian Linhart <chris@demorecorder.com>
Date:   Sat Mar 11 22:03:34 2017 +0100

    enable xinput by default
    
    Support for the xinput extension is complete now,
    as far as I can tell.
    
    According to our discussion on the list, we enable it now.
    
    Signed-off-by: Christian Linhart <chris@demorecorder.com>

commit fad81b63422105f9345215ab2716c4b804ec7986
Author: David McFarland <corngood@gmail.com>
Date:   Tue Apr 18 23:58:59 2017 -0300

    read from connection when polling special events and replies
    
    Using the mesa vulkan driver, if you acquire an image from a
    swapchain using a finite timeout (x11_acquire_next_image_poll_x11),
    it will occasionally lock, calling xcb_poll_for_special_event in
    a loop until the timeout expires.
    
    Call _xcb_in_read() once from the polling functions for special
    events and replies, in the same way as xcb_poll_for_event.
    
    Signed-off-by: David McFarland <corngood@gmail.com>
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit f830eb93c9c38b2c6c7ea2971af3bc6a61e92277
Author: Tobias Stoeckmann <tobias@stoeckmann.org>
Date:   Sun Mar 26 15:41:12 2017 +0200

    Check strdup for NULL return value.
    
    _xcb_open does not check strdup's return value for NULL if launchd suport
    was configured.
    
    Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit ee9dfc9a7658e7fe75d27483bb5ed1ba4d1e2c86
Author: Christian Linhart <chris@demorecorder.com>
Date:   Wed Jan 25 10:21:05 2017 +0100

    add support for eventstruct
    
    eventstruct allows to use events as part of requests.
    This is, e.g., needed by xcb_input_send_extension_event.
    
    Signed-off-by: Christian Linhart <chris@demorecorder.com>

commit 0c2c5d50f8670da3e7601feb6a29b53509513da5
Author: Christian Linhart <chris@demorecorder.com>
Date:   Fri Jan 20 20:14:57 2017 +0100

    optionally build the GE extension
    
    xcb contains an xml-definition for the GenericEvent extension
    but this extension was neither generated nor built.
    
    This patch enables optional building of the GenericEvent extension
    with configure option --enable-ge
    
    By default, the GenericEvent extension is not built.
    Normally this is not needed by application programs
    because there is implicit support for the GE-extension
    for the specific events built with this extension.
    
    But it may be useful for X-protocol analyzers and stuff like that.
    
    Signed-off-by: Christian Linhart <chris@demorecorder.com>

commit 9bce1f72e329cb407b7a95589b9675a08129b65d
Author: Christian Linhart <chris@demorecorder.com>
Date:   Fri Jan 20 14:40:25 2017 +0100

    move symbol lookup of sumof expr to the parser
    
    replace the complicated symboltable lookup for sumof expr
    by accessing the lenfield of the expr-object.
    
    This requires the corresponding patch for xcb/proto
    which sets the lenfield accordingly.
    
    This should be OK because for official releases we define
    that dependency in the build system.
    
    For getting versions off the HEAD of the git repo, it should
    be obvious that xcb/proto and xcb/libxcb have to be updated together.
    
    I have tested this patch and it generates exactly the same code
    as before.
    
    Tested-by: Christian Linhart <chris@demorecorder.com>
    Signed-off-by: Christian Linhart <chris@demorecorder.com>

commit 65b298c7ca317d7e4316aa2b9e0499e13047c65c
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sat Feb 6 12:26:21 2016 -0800

    Correct @param "e" to "error" in xcb_poll_for_reply*()
    
    Found by clang -Wdocumentation:
    
    ./xcbext.h:271:11: warning: parameter 'e' not found in the function
          declaration [-Wdocumentation]
     * @param e Location to store errors in, or NULL. Ignored for un...
              ^
    ./xcbext.h:271:11: note: did you mean 'error'?
     * @param e Location to store errors in, or NULL. Ignored for un...
              ^
              error
    
    ./xcbext.h:283:11: warning: parameter 'e' not found in the function
          declaration [-Wdocumentation]
     * @param e Location to store errors in, or NULL. Ignored for un...
              ^
    ./xcbext.h:283:11: note: did you mean 'error'?
     * @param e Location to store errors in, or NULL. Ignored for un...
              ^
              error
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit 32a9084546add979115a686f9a167e70b8967149
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Sat Feb 6 12:26:20 2016 -0800

    Remove : from @param names in manually written headers
    
    Makes style match the @param names in autogenerated headers and makes
    clang -Wdocumentation stop complaining about all of them:
    
    ./xcb.h:523:11: warning: parameter 'display:' not found in the function
          declaration [-Wdocumentation]
     * @param display: A pointer to the display number.
              ^~~~~~~~
    ./xcb.h:523:11: note: did you mean 'display'?
     * @param display: A pointer to the display number.
              ^~~~~~~~
              display
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit 8740a288ca468433141341347aa115b9544891d3
Author: Thomas Klausner <wiz@NetBSD.org>
Date:   Thu May 19 17:31:18 2016 +0200

    Fix inconsistent use of tabs vs. space.
    
    Needed for at least python-3.5.x.
    
    Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit d34785a34f28fa6a00f8ce00d87e3132ff0f6467
Author: Uli Schlachter <psychon@znc.in>
Date:   Sat May 14 10:36:54 2016 +0200

    Release libxcb 1.12
    
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit b11fca06f75b26b94e3f1d3e3c3954d365f80759
Author: Uli Schlachter <psychon@znc.in>
Date:   Sat May 14 10:33:54 2016 +0200

    Bump xcb-proto requirement to 1.12
    
    This is needed due to various changes that were done to the XML schema.
    
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit 095353ff1a4f611922dfc4c98b0c4bd55d9f6d4f
Author: Mark Kettenis <kettenis@openbsd.org>
Date:   Sat Jan 23 17:29:32 2016 +0100

    Increase unix socket send buffer to at least 64KB
    
    Some systems (e.g. OpenBSD) have a rather small default socket send buffer
    size of 4KB.  The result is that sending requests with a largish payload
    requires serveral writev(2) system calls.  Make sure the socket send buffer
    is at least 64KB such that we're likely to succeed with a single system
    call for most requests.  A similar change was made to the xtrans code
    some time ago.
    
    Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
    Reviewed-by: Matthieu Herrb <matthieu@herrb.eu>

commit b3516102b4469df99db39e0e354deae496867f35
Author: Christian Linhart <chris@demorecorder.com>
Date:   Mon Jan 18 06:56:39 2016 +0100

    do not serialize pads by default anymore
    
    Pads should not be serialized/deserialized to maintain
    ABI compatibility when adding explicit align pads.
    
    Therefore this pad switches off serialization of pads
    unless it is enforced by serialize=true in the xml-definition
    of that pad
    
    Signed-off-by: Christian Linhart <chris@demorecorder.com>

commit c03388ff9e253b86e4b41fb77034ca6007fe47e9
Author: Jaya Tiwari <tiwari.jaya18@gmail.com>
Date:   Wed Nov 11 01:02:09 2015 +0100

    calculate lengthless list
    
    Some rework done by Christian Linhart
    
    Signed-off-by: Jaya Tiwari <tiwari.jaya18@gmail.com>
    Signed-off-by: Christian Linhart <chris@demorecorder.com>

commit 775825756714eb6b8467e099cda73a03b782ea0e
Author: Christian Linhart <chris@demorecorder.com>
Date:   Tue Nov 10 12:53:04 2015 +0100

    Fix handling of align-pads in end-iterators
    
    If a list is preceded by an align-pad, then
    accessor for the end-iterator returned a wrong
    value.
    
    Reason: the length of the align-iterator was added
    to a pointer of list-member type. Therefore, the length
    was multiplied by the size of the list-member type,
    due to C pointer arithmetic rules.
    
    This has looked like the following, e.g., in
    xcb_randr_get_crtc_transform_pending_params_end:
    
    i.data = ((xcb_render_fixed_t *) prev.data) + ((-prev.index) & (4 - 1)) + (R->pending_nparams);
    
    This bug was introduced with the following commit:
    http://cgit.freedesktop.org/xcb/libxcb/commit/?id=4033d39d4da21842bb1396a419dfc299591c3b1f
    
    The fix handles this by casting to char* before adding the align,
    and then casting the result to the member type.
    
    Signed-off-by: Christian Linhart <chris@demorecorder.com>

commit 32a2189183696e942b002efcbca823a416fe5f6a
Author: Christian Linhart <chris@demorecorder.com>
Date:   Sun Nov 1 18:35:35 2015 +0100

    set the align-offset as provided by proto
    
    instead of using the lower bits of the pointer address.
    This fixes a bug reported by Peter Hutterer in off-list communication
    back in June 2015.
    
    This requires the alignment-checker patches in xcb/proto.
    
    Signed-off-by: Christian Linhart <chris@demorecorder.com>

commit 6e0378ebbf5f842992e37c93ad60b960427849ac
Author: Adam Jackson <ajax@redhat.com>
Date:   Mon Sep 21 15:27:52 2015 -0400

    Bump version to 1.11.90
    
    We've released 1.11.1 and new libX11 wants that or better.  git master
    will suffice, so bump the version number ahead of 1.11 branch.
    
    Signed-off-by: Adam Jackson <ajax@redhat.com>

commit 4033d39d4da21842bb1396a419dfc299591c3b1f
Author: Christian Linhart <chris@demorecorder.com>
Date:   Fri Sep 19 13:44:38 2014 +0200

    make lists after align-pads work
    
    Handle align-pads when generating an end-function
    in the same way as handling them when generating
    an accessor or iterator function.
    
    Signed-off-by: Christian Linhart <chris@demorecorder.com>

commit b15c96f9507119e5d38a61d92b4dbcd479ea2099
Author: Christian Linhart <chris@demorecorder.com>
Date:   Thu Jun 11 18:58:38 2015 +0200

    make support for server side stuff optional
    
    and make it disabled by default with an EXPERIMENTAL warning
    
    reason: this feature is unfinished and we want to have flexibility for
    ABI/API changes, while still being able to make a release soon
    
    Signed-off-by: Christian Linhart <chris@demorecorder.com>

commit c5d923d8ff4a9b9fc1aef1c6c6918bab15098d34
Author: Jon TURNEY <jon.turney@dronecode.org.uk>
Date:   Tue Mar 17 17:49:14 2015 +0000

    Link with winsock library for socket functions on MinGW
    
    Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>

commit 5b40681c887192307f3ae147d2158870aa79c05f
Author: Uli Schlachter <psychon@znc.in>
Date:   Fri Jun 12 15:13:05 2015 +0200

    Fix a thread hang with xcb_wait_for_special_event()
    
    Consider the following:
    
    - Two threads are calling xcb_wait_for_special_event() and xcb_wait_for_reply()
      concurrently.
    - The thread doing xcb_wait_for_reply() wins the race and poll()s the socket for
      readability.
    - The other thread will be put to sleep on the special_event_cond of the special
      event (this is done in _xcb_conn_wait() via the argument
      xcb_wait_for_special_event() gives it).
    - The first thread gets its reply, but does not yet receive any special event.
    
    In this case, the first thread will return to its caller. On its way out, it
    will call _xcb_in_wake_up_next_reader(), but that function cannot wake up
    anything since so far it did not handle xcb_wait_for_special_event().
    
    Thus, the first thread stays blocked on the condition variable and no thread
    tries to read from the socket.
    
    A test case demonstrating this problem is available at the bug report.
    
    Fix this similar to how we handle this with xcb_wait_for_reply():
    
    The function wait_for_reply() adds an entry into a linked list of threads that
    wait for a reply. Via this list, _xcb_in_wake_up_next_reader() can wake up this
    thread so that it can call _xcb_conn_wait() again and then poll()s the socket.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84252
    Signed-off-by: Uli Schlachter <psychon@znc.in>
    Tested-by: Michel Dänzer <michel.daenzer@amd.com>

commit f85661c3bca97faa72431df92a3867be39a74e23
Author: Michel Dänzer <michel.daenzer@amd.com>
Date:   Mon Jun 1 11:04:18 2015 +0900

    Call _xcb_wake_up_next_reader from xcb_wait_for_special_event
    
    All functions calling _xcb_conn_wait() must make sure that waiting
    readers are woken up when we read a reply or event that they are waiting
    for. xcb_wait_for_special_event() did not do so. This adds the missing
    call to_xcb_in_wake_up_next_reader().
    
    Fixes deadlock when waiting for a special event and concurrently
    processing the display connection queue in another thread.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84252
    Tested-by: Thomas Daede <bztdlinux@gmail.com>
    Tested-by: Clément Guérin <geecko.dev@free.fr>
    Reviewed-by: Uli Schlachter <psychon@znc.in>
    Signed-off-by: Michel Dänzer <michel@daenzer.net>
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit 8584c0e09573a29d8ba7050e3d5afd925b4d8d80
Author: Uli Schlachter <psychon@znc.in>
Date:   Thu May 14 09:44:05 2015 +0200

    send_fds(): Handle too many outstanding FDs to send
    
    Before this patch, the following code caused an endless loop in send_fds(),
    because the queue of FDs to send was eventually full, but _xcb_out_flush_to()
    didn't make any progress, since there was no request to send:
    
       while (1) { xcb_send_fd(conn, dup(some_fd)); }
    
    Fix this by sending a sync when flushing didn't make any progress. That way we
    actually have something to send and can attach the pending FDs.
    
    Because send_fds() can now send requests, the code in
    xcb_send_request_with_fds64() has to be changed. It has to call send_fds()
    before it establishes a good sequence number for the request it wants to send.
    
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit 658fb4a5f0050db68fdf092936afe596412ef5f7
Author: Uli Schlachter <psychon@znc.in>
Date:   Wed Apr 22 09:26:05 2015 +0200

    Code generator: Use xcb_send_request_with_fds()
    
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit b15aa6bd4efde784e546d168bb23b8a8e816e85b
Author: Uli Schlachter <psychon@znc.in>
Date:   Wed Apr 22 09:23:47 2015 +0200

    Add xcb_send_request_with_fds() and *_with_fds64()
    
    Doing xcb_send_fd(), xcb_send_request() is racy. If two threads do this at the
    same time, they could mix up their file descriptors. This commit makes it
    possibly to fix this race by providing a single function which does everything
    that is needed.
    
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit cc04cfb41bece6ec239f57d83822286b507f4482
Author: Uli Schlachter <psychon@znc.in>
Date:   Mon May 18 21:40:34 2015 +0200

    send_fds(): Make sure no other thread interrupts us
    
    Two threads trying to send fds at the same time could interfere. To guarantee a
    correct ordering, we have to use correct locking. The code in send_fds() missed
    one case: If there was another thread already writing requests, we slept on the
    "done with writing" condition variable (c->out.cond). This would allow other
    threads to re-acquire the iolock before us and could cause fds to be sent out of
    order.
    
    To fix this, at the beginning of send_fds() we now make sure that no other
    thread is already writing requests. This is what prepare_socket_request() does.
    Additionally, it gets the socket back in case xcb_take_socket() was called,
    which is a good thing, too, since fds are only sent with corresponding requests.

commit 25f9e7e45a7652b35b71c7941beef774a39f0d86
Author: Uli Schlachter <psychon@znc.in>
Date:   Wed Apr 22 09:20:38 2015 +0200

    xcb_send_fd(): Always close fds
    
    The API docs for xcb_send_fd() says "After this function returns, the file
    descriptor given is owned by xcb and will be closed eventually".
    
    Let the implementation live up to its documentation. We now also close fds if fd
    passing is unavailable (!HAVE_SENDMSG) and when the connection is in an error
    state.
    
    (This also does sneak in some preparatory functions for follow-up commits and
    thus does things in a more complicated way than really necessary.)
    
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit bbdf1d133f7bd979c6ff3bf44ec3d0c2d2b9dbfe
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Mar 18 12:27:32 2015 +0200

    c_client.py: don't generate useless empty /** < */ comments
    
    (This does not change doxygen's output or warnings).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit ff6cb3913b64a4aa29cb5e65168ea49d77195296
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Mar 18 12:27:31 2015 +0200

    c_client.py: use pattern matching with enumerate()
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit cb621341a62e6d2233db3e337611f6fdd4f675a6
Author: Christian Linhart <chris@demorecorder.com>
Date:   Wed Apr 29 09:11:37 2015 +0200

    expose 64-bit sequence numbers for XLib
    
    While XCB uses 64-bit sequence number internally, it only exposes
    "unsigned int" so that, on 32-bit architecture, Xlib based applications
    may see their sequence number wrap which causes the connection to the X
    server to be lost.
    
    Expose 64-bit sequence number from XCB API so that Xlib and others can
    use it even on 32-bit environment.
    
    This implies the following API addition:
    
      xcb_send_request64()
      xcb_discard_reply64()
      xcb_wait_for_reply64()
      xcb_poll_for_reply64()
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71338
    
    Reviewed-by: Uli Schlachter <psychon@znc.in>
    Signed-off-by: Christian Linhart <chris@demorecorder.com>
    Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>

commit c49aa985941112be05599032b9bb45b2652301ce
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Wed Apr 29 23:23:05 2015 -0700

    Escape \n to display properly in xcb-requests man page
    
    In nroff, \n is a macro that "Interpolates number register x" (where x
    is the character following the \n sequence), thus the man page currently
    prints 0 instead of \n" in several lines, leading to output such as:
    
     printf("The _NET_WM_NAME atom has ID %u0, reply-⁠>atom);
    
    It needs to be escaped here, as \\n, as is done in other examples in
    this man page already.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=90231
    
    Reported-by: Stefan Merettig
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit a90be9955d2c5a635f791d44db1154633b9d3322
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:20 2014 +0300

    c_client.py: make condition easier to follow in _c_complex()
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit f9f925107e37e0c9a0ed8220ee3a23f584e3b2ec
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:14 2014 +0300

    c_client.py: don't add /* <name> */ before references to 'S'
    
    The name can be understood from the type of S already.
    
    For examples, look for 'S->' in xkb.c or xinput.c.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>
    Reviewed-by: Rémi Cardona <remi@gentoo.org>

commit 17f9bda6c291a8b9ccc98b22c241b64880b80621
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:19 2014 +0300

    c_client.py: remove duplicated `cookie_type` argument for requests
    
    It is implied already inside the function by the `void` argument.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit c65005e9d0ce60524d2e883c13c027a5f1f7914c
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:18 2014 +0300

    c_client.py: spell out keyword arguments in c_request() for clarity
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit 6872e925828e615e2c1d4a0bbcc6be6a32fa4e7a
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:17 2014 +0300

    c_client.py: simplify _c_reply_has_fds()
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit 8bf8b62316a3066b61243d797d22c2100fd173f5
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:16 2014 +0300

    c_client.py: remove commented debug statements
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit ec435aebd6ed0523de2d341e6aff5ae66f230b10
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:15 2014 +0300

    c_client.py: use C99 initializers instead of comments
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit 89498d1d450d0e6e476f6b24908ecae857863386
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:11 2014 +0300

    c_client.py: remove end-of-function comments
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit 2871d4b1b8736044ba50df2f7dacfcc65d820fa9
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:10 2014 +0300

    c_client.py: no need to compare bools to True/False
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit 30976e5255a25117d17d4d8162e29b84913953cd
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:09 2014 +0300

    c_client.py: use "foo".join() instead of reduce
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit 0ab52cbcc630ff8ddfa6f6b245c6b3071867b291
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:08 2014 +0300

    c_client.py: fix indentation
    
    (Also remove unnecessary parens around the condition).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit 80341d5df3e30e2cfc3066d05256af9e513e4500
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:07 2014 +0300

    c_client.py: use comprehensions instead of map/filter
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit 86ea6645d9e388112670cf88da1fe3b350953789
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:06 2014 +0300

    c_client.py: use print as a function for python3 compatibility
    
    This works for all python>=2.6, which is what configure requires.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit 70d32ce7d8ef3ce9490d9a51b189829c8bcdb5c4
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:05 2014 +0300

    c_client.py: fix pyflakes errors
    
    c_client.py:2: 'from xml.etree.cElementTree import *' used; unable to detect undefined names
    c_client.py:3: 'basename' imported but unused
    c_client.py:9: 'time' imported but unused
    c_client.py:1437: local variable 'list_obj' is assigned to but never used
    c_client.py:1745: local variable 'varfield' is assigned to but never used
    c_client.py:2050: local variable 'length' is assigned to but never used
    c_client.py:2416: local variable 'R_obj' is assigned to but never used
    c_client.py:2441: local variable 'S_obj' is assigned to but never used
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit 12d23b934f189607ad77667834205dfcf89a41f0
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:04 2014 +0300

    c_client.py: simplify maximum expression
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit 1b37d6ad3a37a9d0201e3b2caee6cd53b7b4b3dc
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 12 21:58:03 2014 +0300

    c_client.py: remove unneeded call to get_serialize_params()
    
    The results are not used, and the function doesn't have side effects.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>

commit e3ec1f74637237ce500dfd0ca59f2e422da4e019
Author: Jaya Tiwari <tiwari.jaya18@gmail.com>
Date:   Thu Jan 22 12:16:33 2015 -0500

    Adding accessors for requests
    
    Added accessor functions for requests the same way they were added for
    structs,events and replies.
    Lists for replies have accessor functions now.
    
    Signed-off-by: Jaya Tiwari <tiwari.jaya18@gmail.com>
    Reviewed-by: Christian Linhart <chris@demorecorder.com>
    
    Comment from the Reviewer Christian Linhart:
    I have tested your patch after fixing the issues with the patch-format.
    It looks good:
    * only adds new functions, and does not modify existing functions.
      Therefore it is API and ABI compatible.
    
    * adds accessors for varsized-stuff in requests.
      This is needed for server-side XCB and may be useful for implementing X11-protocol proxies.

commit 5353c0216e091b64d01a43e6580e6d69b2ac16c7
Merge: bbca7b8 c6f3fb2
Author: Christian Linhart <chris@demorecorder.com>
Date:   Tue Feb 10 10:13:04 2015 +0100

    Merge http://git.demorecorder.com/git/free-sw/xcb/libxcb
    branch 'ParametrizedStruct-V7'

commit c6f3fb2529a6211221e8254f58c85fd67c1d8844
Author: Christian Linhart <chris@DemoRecorder.com>
Date:   Mon Nov 3 09:57:59 2014 +0100

    generator: support parametrized structs
    
    Parametrized structs contain paramref expressions which
    refer to the value of a field defined in the context
    where the struct is used.
    
    Implementing the parametrized structs turned out
    to be somewhat easier than previously thought
    because the generator already had some support for type-parametrization
    because this is needed when case or bitcase refers to fields outside
    of the switch.
    
    So I decided to go with the flow and to implement the solution
    which best fits the current implementation.
    
    I did the following:
    * I provided a way to specify fieldref with an explicitely given type:
      This resulted in <paramref type="CARD8>fieldname</paramref>
      A paramref is just a fieldref with an explicit type.
      The type is necessary because there is no local field of that
      name where the type can be derived from.
    
    * then I tested it and made several changes in the generator
      such that it really works.
    
    Basically the generated code is as follows:
    * The parameter appears on the parameter list of the
      sizeof-function of the parametrized struct.
      When that function gets called, an appropriate argument is supplied.
    
    * The parameter also appears as an additional member of the iterator-struct
      for the iterator of lists of that parametrized struct.
      This way, the next-function can get the value of that parameter from the iterator.
      When the iterator is created, this iterator-member is set accordingly.
    
    * When the paramref appears in the length-expression of a list, then
      the parameter appears on the parameterlist of the "length" and "end" functions.
      When these functions get called, an appropriate argument is supplied.
    
    Some comments:
    * I did not implement inline structs.
      This would probably have been more complicated, and at least some additional effort.
      But that can be implemented later if needed.
      (Inline structs could probably use some code from switch-case/bitcase which is already kind of
      an inlined struct but one has to be careful not to break the functionality
      of switch-case/bitcase. Support for inline structs inside lists must probably
      be implemented from scratch...)
    
    * The paramref expression refers to a field of the same name in the struct/request/...
      where it is used.
      So it is not possible to pass the value of arbitrary fields or even expressions
      to the parametrized struct.
      This would have been possible with the previously discussed <typearg>.
      That can be added later, if needed.
      ( Wont be too complicated )
    
    * So this is pretty much like the proposal from Ran Benita.
    
    changes for V2 of this patch, according to suggestions from Ran Benita:
    * replace map with list comprehension
      because map returns an iterator instead of a list from Python 3 on,
      so it cannot be added to a list anymore.
    
    * removed "self" parameter of function additional_params_to_str
      and accessed the variable additional_params from the outer
      function directly.
    
    changes for V2 of this patch:
    * adapt to revision 2 of patchset ListInputDevices
    * style fixes for similar things that Ran Benita has found in my previous patches
    
    Message-ID: <54574397.4060000@DemoRecorder.com>
    Patch-Thread-Subject: [Xcb] parametrized structs implemented
    Patch-Set: ParametrizedStruct
    Patch-Number: libxcb 1/1
