commit c2c4a2cd1947e559718acdba19ef6e7db731dbeb
Author: Matt Turner <mattst88@gmail.com>
Date:   Tue May 3 15:09:54 2022 -0700

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

commit ddafdba11f6919e6fcf977c09c78b06f94de47aa
Author: Hodong <hodong@yozmos.com>
Date:   Sat Jan 15 02:32:04 2022 +0900

    Fix a memory leak
    
    Signed-off-by: Hodong <hodong@yozmos.com>

commit 43fbf03e549bf6da8d1d8522e0ceddc4d49c37c6
Author: Demi Marie Obenour <demiobenour@gmail.com>
Date:   Thu Sep 23 16:46:32 2021 -0400

    Fix integer overflows in xcb_in.c
    
    This fixes an integer overflow security vulnerability in xcb_in.c, which
    may allow for memory corruption.

commit 233d7b7f1f03ef18bf3955eb1f20421e745d22f0
Author: Thomas Anderson <thomasanderson@google.com>
Date:   Wed Dec 2 00:25:42 2020 +0000

    Fix hang in xcb_request_check()
    
    This fixes https://gitlab.freedesktop.org/xorg/lib/libxcb/-/issues/53
    
    The issue was that libxcb expected to get a reply based on the request_expected
    variable, but a reply would never arrive because the request was never actually
    written.  To resolve this, a separate request_expected_written variable is
    added.

commit dc2811874729ee83fa2aef110f60808c450f9a5a
Author: Ran Benita <ran@unusedvar.com>
Date:   Tue Nov 17 23:18:53 2020 +0200

    Avoid request counter truncation in replies map after 2**32 requests
    
    The c->in request counters are uint64_t, and can realistically go over
    2**32 over a lifetime of a client. The c->in->replies map however uses
    unsigned int keys and the passed request numbers are silently truncated.
    
    I haven't analyzed in depth what happens what it wraps around but it's
    probably nothing good.
    
    The only user of the xcb_list.c map code is c->in->replies, so just
    change it to use uint64_t keys.
    
    Reviewed-by: Uli Schlachter <psychon@znc.in>
    Signed-off-by: Ran Benita <ran@unusedvar.com>

commit 26396bf156cfa00ecd655ec6a5f2f46626d674c0
Author: Julien Cristau <jcristau@debian.org>
Date:   Tue Feb 2 12:15:10 2021 +0100

    Add newline when printing auth/connection failure string to stderr
    
    The reason strings returned by the server don't all include a newline,
    so make sure we add one to avoid confusing clients.  Xlib used to do
    this before it delegated that work to libxcb.
    
    Fixes #34
    
    Signed-off-by: Julien Cristau <jcristau@debian.org>

commit a503167f751ba77e6819df568b7f5042d2baa9c9
Author: Uli Schlachter <psychon@znc.in>
Date:   Sat May 22 21:43:22 2021 +0200

    Improve/fix docs for reply fds functions
    
    Fixes: https://gitlab.freedesktop.org/xorg/lib/libxcb/-/issues/56
    Signed-off-by: Uli Schlachter <psychon@znc.in>

commit 3c76c0579ffa521af41f78ee937b1337581da985
Author: Povilas Kanapickas <povilas@radix.lt>
Date:   Fri Jul 30 22:58:47 2021 +0300

    c_client.py: Implement handling of <length> element
    
    Signed-off-by: Povilas Kanapickas <povilas@radix.lt>

commit bdc3f21a5205293852bbaa173f43389cbf66f52b
Author: Povilas Kanapickas <povilas@radix.lt>
Date:   Fri Jul 30 22:58:46 2021 +0300

    c_client: Extract _c_get_field_mapping_for_expr()

commit 068af21cb376eb824fa1dee29a6539feadb93587
Author: Povilas Kanapickas <povilas@radix.lt>
Date:   Fri Jul 30 22:58:45 2021 +0300

    c_client.py: Use get_expr_field_names directly to resolve list fields
    
    Using get_expr_fields() is only needed in case we are doing things that
    can span multiple types easily, e.g. when deciding what data to pass via
    function parameters and so on.
    
    In _c_serialize_helper_list_field() we are building function body, so
    acquiring field names via get_expr_field_names() is enough.
    
    Signed-off-by: Povilas Kanapickas <povilas@radix.lt>

commit 4d678b162bf8a3b10e5bdf76df2be63d33c23381
Author: Povilas Kanapickas <povilas@radix.lt>
Date:   Fri Jul 30 22:58:44 2021 +0300

    c_client.py: Extract get_expr_field_names()
    
    Signed-off-by: Povilas Kanapickas <povilas@radix.lt>

commit 21414e7c447f18224c577ed5e32bd5d6e45c44f9
Author: Peter Harris <pharris@opentext.com>
Date:   Mon Feb 1 19:45:28 2021 -0500

    Fix writev emulation on Windows
    
    There are at least two bugs in the previous implementation:
    
    - If an early iovec is partially written, there can be a gap of missing
      data (as a later iovec will be started before the early iovec is
      completed).
    - If a late iovec returns WSAEWOULDBLOCK, *vector and *count are not
      updated, leading to a re-send of the entire request.
    
    Move the *vector update into the send() loop to update piecemeal as
    individual iovecs are sent.
    
    Example program that demonstrates the issue (this program should run
    forever after these bugs have been fixed):
    
    #include <stdio.h>
    #include <stdlib.h>
    #include "xcb.h"
    
    // Non-cryptographic random number generator from http://burtleburtle.net/bob/rand/smallprng.html
    // because Microsoft's random number generators either have a too small RAND_MAX or are too slow
    typedef struct ranctx { uint32_t a; uint32_t b; uint32_t c; uint32_t d; } ranctx;
    
    static uint32_t ranval(ranctx *x);
    static void raninit(ranctx *x, uint32_t seed);
    
    
    #define MAX_PROP_LEN (128 * 1024)
    
    int main(int argc, char *argv[]) {
        uint32_t seed = 0x12345678;
        if (argc > 1) {
            seed = strtoul(argv[1], NULL, 0);
        }
        ranctx ran;
        raninit(&ran, seed);
    
        xcb_connection_t *c = xcb_connect(NULL, NULL);
        if (!c || xcb_connection_has_error(c)) {
            printf("Cannot connect to $DISPLAY\n");
            return 1;
        }
        const xcb_setup_t *setup = xcb_get_setup(c);
        char *buf = malloc(MAX_PROP_LEN + 8); // plus a bit of slack so we can run random values off the end
        if (!buf) {
            printf("oom\n");
            return 1;
        }
        for (uint32_t i=0; i < (MAX_PROP_LEN + 3) / 4; i++) {
            ((uint32_t *)buf)[i] = ranval(&ran);
        }
    
        xcb_window_t win = xcb_generate_id(c);
        xcb_create_window(c, 0, win, xcb_setup_roots_iterator(setup).data[0].root, 0, 0, 1, 1, 0,
                XCB_WINDOW_CLASS_INPUT_ONLY, 0, 0, NULL);
        printf("Created window 0x%X\n", win);
    
        for (;;) {
            xcb_flush(c);
            xcb_generic_event_t *ev = xcb_poll_for_event(c);
            if (ev) {
                if (ev->response_type == 0) {
                    xcb_generic_error_t *err = (xcb_generic_error_t *)ev;
                    printf("Unexpected X Error %d\n", err->error_code);
                    printf("   Sequence %d\n", err->sequence);
                    printf("   Resource ID 0x%X\n", err->resource_id);
                    printf("   Opcode: %d.%d\n", err->major_code, err->minor_code);
                    return 1;
                }
                printf("Unexpected X Event %d\n", ev->response_type);
                return 1;
            }
    
            uint32_t siz = ranval(&ran) % MAX_PROP_LEN + 1;
            xcb_change_property(c, XCB_PROP_MODE_REPLACE, win, XCB_ATOM_STRING, XCB_ATOM_STRING, 8, siz, buf);
        }
    
        return 0;
    }
    
    
    #define rot(x,k) (((x)<<(k))|((x)>>(32-(k))))
    static uint32_t ranval(ranctx *x) {
        uint32_t e = x->a - rot(x->b, 27);
        x->a = x->b ^ rot(x->c, 17);
        x->b = x->c + x->d;
        x->c = x->d + e;
        x->d = e + x->a;
        return x->d;
    }
    
    static void raninit(ranctx *x, uint32_t seed) {
        uint32_t i;
        x->a = 0xf1ea5eed, x->b = x->c = x->d = seed;
        for (i = 0; i<20; ++i) {
            (void)ranval(x);
        }
    }
    
    Signed-off-by: Peter Harris <pharris@opentext.com>

commit 4b0d9d3868aad8d5f4266821e9eda586e6c2bfa7
Author: Peter Harris <pharris@opentext.com>
Date:   Mon Feb 1 17:43:52 2021 -0500

    Fix build on Windows
    
    Notable changes: Protect include of unistd.h (and other POSIX headers).
    Use SOCKET (which is larger than int) and closesocket (because close is
    not compatible) for sockets. Use <stdint.h>'s intptr_t instead of the
    non-portable ssize_t.
    
    Signed-off-by: Peter Harris <pharris@opentext.com>

commit cd0fba98a2d0867d505ff1a7ca8d7a7c757acfa2
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Tue Jun 1 18:36:17 2021 -0700

    xcb_auth: Quiet -Wimplicit-fallthrough warning in get_authptr()
    
    xcb_auth.c:135:14: warning: this statement may fall through [-Wimplicit-fallthrough=]
             addr += 12;
             ~~~~~^~~~~
    xcb_auth.c:138:5: note: here
         case AF_INET:
         ^~~~
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>

commit 2ef8655987b9862cdddb72223c9f259a860d5777
Author: Julien Cristau <jcristau@debian.org>
Date:   Mon Feb 1 19:23:02 2021 +0100

    Increment libtool version info for libxcb-dri3
    
    Somewhat belatedly given the last update was in xcb-proto 1.13 in 2017...
    
    Quoting @smcv from https://bugs.debian.org/921069:
    >>>
    libxcb-dri3 version 1.13 appears to have added new symbols without increasing
    the minor ABI version in its -version-info. This will break anything that
    compares libraries by their version info to decide which one is newer.
    
    The Steam Runtime uses libraries' major/minor/micro ABI version info (in this
    case 0.0.0) to decide whether to use the system copy of a library or the copy
    in the Steam Runtime, depending on which one is newer (#921026). We can
    work around this by adding a versioned dependency on libxcb-dri3-0 and
    deleting the copy from the Steam Runtime, but this isn't a particularly
    scalable solution.
    >>>

commit 4cbcac4eca967abfbff7cf1ea473777c5e8c375c
Author: Ran Benita <ran@unusedvar.com>
Date:   Tue Nov 17 23:45:14 2020 +0200

    gitignore: add files generated by make check
    
    Signed-off-by: Ran Benita <ran@unusedvar.com>

commit f01f3c378eb0168fbb055c7be1c2d08a7acd3752
Author: Ran Benita <ran@unusedvar.com>
Date:   Tue Nov 17 23:43:06 2020 +0200

    tests: don't use deprecated fail_unless check API
    
    It causes errors like this when running make check:
    
    check_public.c:40:24: error: too many arguments for format [-Werror=format-extra-args]
       40 |   fail_unless(success, "unexpected parse failure %sfor '%s'", test_string[test_type], name);
    
    Closes: https://gitlab.freedesktop.org/xorg/lib/libxcb/-/issues/49
    Tested-by: Matt Turner <mattst88@gmail.com>
    Signed-off-by: Ran Benita <ran@unusedvar.com>

commit 704e0a91b1dece9a4cce7cfe8beaeb86a5e14267
Author: Eduardo Sánchez Muñoz <esm@eduardosm.net>
Date:   Mon Mar 2 18:59:45 2020 +0100

    Use the 'present' field to properly check that the XC-MISC
    extension is available in xcb_generate_id.
    
    Also document the returned value when xcb_generate_id fails.

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()
