diff --git a/libxcb-1.13.1.tar.bz2 b/libxcb-1.13.1.tar.bz2 new file mode 100644 index 0000000..df2086a --- /dev/null +++ b/libxcb-1.13.1.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a89fb7af7a11f43d2ce84a844a4b38df688c092bf4b67683aef179cdf2a647c4 +size 506778 diff --git a/libxcb-1.13.tar.bz2 b/libxcb-1.13.tar.bz2 deleted file mode 100644 index c4af9f3..0000000 --- a/libxcb-1.13.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:188c8752193c50ff2dbe89db4554c63df2e26a2e47b0fa415a70918b5b851daa -size 510453 diff --git a/libxcb.changes b/libxcb.changes index b45474e..4ee106f 100644 --- a/libxcb.changes +++ b/libxcb.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Fri Jan 3 12:22:59 UTC 2020 - Chocy Orange + +- Update 1.13.1 + * u_don-t-flag-extra-reply-in-xcb_take_socket.patch has been upstreamed. + + ------------------------------------------------------------------- Tue Aug 21 06:58:35 UTC 2018 - msrb@suse.com diff --git a/libxcb.spec b/libxcb.spec index c688814..44bc900 100644 --- a/libxcb.spec +++ b/libxcb.spec @@ -1,7 +1,7 @@ # # spec file for package libxcb # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -23,20 +23,19 @@ %bcond_without python2 %endif Name: libxcb -Version: 1.13 +Version: 1.13.1 Release: 0 Summary: X11 core protocol C library License: MIT Group: Development/Libraries/C and C++ Url: http://xcb.freedesktop.org/ #Git-Clone: git://anongit.freedesktop.org/xcb/libxcb -#Git-Web: http://cgit.freedesktop.org/xcb/libxcb/ -#DL-URL: http://xcb.freedesktop.org/dist/ +#Git-Web: https://cgit.freedesktop.org/xcb/libxcb/ +#DL-URL: https://xcb.freedesktop.org/dist/ Source: %{name}-%{version}.tar.bz2 Source1: baselibs.conf Patch1: bug-262309_xcb-xauthlocalhostname.diff Patch2: n_If-auth-with-credentials-for-hostname-fails-retry-with-XAUTHLOCALHOSTNAME.patch -Patch3: u_don-t-flag-extra-reply-in-xcb_take_socket.patch BuildRequires: autoconf >= 2.57 BuildRequires: automake BuildRequires: libtool @@ -391,7 +390,6 @@ libxcb. %setup -q %patch1 %patch2 -p1 -%patch3 -p1 %build ./autogen.sh diff --git a/u_don-t-flag-extra-reply-in-xcb_take_socket.patch b/u_don-t-flag-extra-reply-in-xcb_take_socket.patch deleted file mode 100644 index 45c4f41..0000000 --- a/u_don-t-flag-extra-reply-in-xcb_take_socket.patch +++ /dev/null @@ -1,98 +0,0 @@ -Author: Erik Kurzinger -Subject: don't flag extra reply in xcb_take_socket -Patch-Mainline: To-be-upstreamed -Signed-off-by: Michal Srb -References: bnc#1101560 - -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 ---- - src/xcb_in.c | 21 +++++++++++++++++++-- - src/xcb_out.c | 10 ++++++++-- - 2 files changed, 27 insertions(+), 4 deletions(-) - -diff --git a/src/xcb_in.c b/src/xcb_in.c -index 73209e0..4333ad3 100644 ---- a/src/xcb_in.c -+++ b/src/xcb_in.c -@@ -958,8 +958,20 @@ void _xcb_in_replies_done(xcb_connection_t *c) - pend = container_of(c->in.pending_replies_tail, struct pending_reply, next); - if(pend->workaround == WORKAROUND_EXTERNAL_SOCKET_OWNER) - { -- pend->last_request = c->out.request; -- pend->workaround = WORKAROUND_NONE; -+ if (XCB_SEQUENCE_COMPARE(pend->first_request, <=, c->out.request)) { -+ pend->last_request = c->out.request; -+ pend->workaround = WORKAROUND_NONE; -+ } else { -+ /* The socket was taken, but no requests were actually sent -+ * so just discard the pending_reply that was created. -+ */ -+ struct pending_reply **prev_next = &c->in.pending_replies; -+ while (*prev_next != pend) -+ prev_next = &(*prev_next)->next; -+ *prev_next = NULL; -+ c->in.pending_replies_tail = prev_next; -+ free(pend); -+ } - } - } - } -diff --git a/src/xcb_out.c b/src/xcb_out.c -index 3601a5f..c9593e5 100644 ---- a/src/xcb_out.c -+++ b/src/xcb_out.c -@@ -387,8 +387,14 @@ int xcb_take_socket(xcb_connection_t *c, void (*return_socket)(void *closure), v - { - c->out.return_socket = return_socket; - c->out.socket_closure = closure; -- if(flags) -- _xcb_in_expect_reply(c, c->out.request, WORKAROUND_EXTERNAL_SOCKET_OWNER, flags); -+ if(flags) { -+ /* c->out.request + 1 will be the first request sent by the external -+ * socket owner. If the socket is returned before this request is sent -+ * it will be detected in _xcb_in_replies_done and this pending_reply -+ * will be discarded. -+ */ -+ _xcb_in_expect_reply(c, c->out.request + 1, WORKAROUND_EXTERNAL_SOCKET_OWNER, flags); -+ } - assert(c->out.request == c->out.request_written); - *sent = c->out.request; - } --- -2.16.4 -