Hello community,

here is the log from the commit of package libxcb for openSUSE:Factory checked 
in at 2015-09-11 09:02:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libxcb (Old)
 and      /work/SRC/openSUSE:Factory/.libxcb.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libxcb"

Changes:
--------
--- /work/SRC/openSUSE:Factory/libxcb/libxcb.changes    2014-08-07 
08:08:18.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libxcb.new/libxcb.changes       2015-09-11 
09:02:40.000000000 +0200
@@ -1,0 +2,8 @@
+Sun Sep  6 16:21:14 UTC 2015 - [email protected]
+
+- Update to version 1.11.1:
+  This fixes some threading-related bugs with 
+  xcb_wait_for_special_event() and adds 64-bit versions of
+  functions that work with sequence numbers.
+
+-------------------------------------------------------------------

Old:
----
  libxcb-1.11.tar.bz2

New:
----
  libxcb-1.11.1.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libxcb.spec ++++++
--- /var/tmp/diff_new_pack.p1zKSq/_old  2015-09-11 09:02:41.000000000 +0200
+++ /var/tmp/diff_new_pack.p1zKSq/_new  2015-09-11 09:02:41.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package libxcb
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 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
@@ -18,7 +18,7 @@
 
 Name:           libxcb
 %define lname  libxcb1
-Version:        1.11
+Version:        1.11.1
 Release:        0
 Summary:        X11 core protocol C library
 License:        MIT

++++++ libxcb-1.11.tar.bz2 -> libxcb-1.11.1.tar.bz2 ++++++
++++ 1906 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libxcb-1.11/NEWS new/libxcb-1.11.1/NEWS
--- old/libxcb-1.11/NEWS        2014-08-01 16:04:34.000000000 +0200
+++ new/libxcb-1.11.1/NEWS      2015-09-05 15:04:58.000000000 +0200
@@ -1,3 +1,8 @@
+Release 1.11.1 (2015-09-06)
+===========================
+* Expose 64-bit sequence numbers for XLib
+* Fix some hangs related to xcb_wait_for_special_event()
+
 Release 1.11 (2014-08-01)
 =========================
 * Force structures with 64-bit fields to be packed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libxcb-1.11/build-aux/compile new/libxcb-1.11.1/build-aux/compile
--- old/libxcb-1.11/build-aux/compile   2014-08-01 16:05:01.000000000 +0200
+++ new/libxcb-1.11.1/build-aux/compile 2015-09-06 12:39:53.000000000 +0200
@@ -3,7 +3,7 @@
 
 scriptversion=2012-10-14.11; # UTC
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 # Written by Tom Tromey <[email protected]>.
 #
 # This program is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libxcb-1.11/build-aux/missing new/libxcb-1.11.1/build-aux/missing
--- old/libxcb-1.11/build-aux/missing   2014-08-01 16:05:01.000000000 +0200
+++ new/libxcb-1.11.1/build-aux/missing 2015-09-06 12:39:54.000000000 +0200
@@ -3,7 +3,7 @@
 
 scriptversion=2013-10-28.13; # UTC
 
-# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <[email protected]>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libxcb-1.11/build-aux/test-driver new/libxcb-1.11.1/build-aux/test-driver
--- old/libxcb-1.11/build-aux/test-driver       2014-08-01 16:05:02.000000000 
+0200
+++ new/libxcb-1.11.1/build-aux/test-driver     2015-09-06 12:39:54.000000000 
+0200
@@ -3,7 +3,7 @@
 
 scriptversion=2013-07-13.22; # UTC
 
-# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+# Copyright (C) 2011-2014 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -106,11 +106,14 @@
 # Test script is run here.
 "$@" >$log_file 2>&1
 estatus=$?
+
 if test $enable_hard_errors = no && test $estatus -eq 99; then
-  estatus=1
+  tweaked_estatus=1
+else
+  tweaked_estatus=$estatus
 fi
 
-case $estatus:$expect_failure in
+case $tweaked_estatus:$expect_failure in
   0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
   0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
   77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
@@ -119,6 +122,12 @@
   *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
 esac
 
+# Report the test outcome and exit status in the logs, so that one can
+# know whether the test passed or failed simply by looking at the '.log'
+# file, without the need of also peaking into the corresponding '.trs'
+# file (automake bug#11814).
+echo "$res $test_name (exit status: $estatus)" >>$log_file
+
 # Report outcome to console.
 echo "${col}${res}${std}: $test_name"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libxcb-1.11/configure.ac new/libxcb-1.11.1/configure.ac
--- old/libxcb-1.11/configure.ac        2014-08-01 16:04:34.000000000 +0200
+++ new/libxcb-1.11.1/configure.ac      2015-09-05 15:00:44.000000000 +0200
@@ -2,7 +2,7 @@
 
 # Initialize Autoconf
 AC_PREREQ([2.60])
-AC_INIT([libxcb],[1.11],
+AC_INIT([libxcb],[1.11.1],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xcb],
         [libxcb])
 AC_CONFIG_AUX_DIR([build-aux])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libxcb-1.11/src/xcb.h new/libxcb-1.11.1/src/xcb.h
--- old/libxcb-1.11/src/xcb.h   2014-07-30 13:02:30.000000000 +0200
+++ new/libxcb-1.11.1/src/xcb.h 2015-09-05 14:56:03.000000000 +0200
@@ -378,6 +378,26 @@
  */
 void xcb_discard_reply(xcb_connection_t *c, unsigned int sequence);
 
+/**
+ * @brief Discards the reply for a request, given by a 64bit sequence number
+ * @param c: The connection to the X server.
+ * @param sequence: 64-bit sequence number as returned by xcb_send_request64().
+ *
+ * Discards the reply for a request. Additionally, any error generated
+ * by the request is also discarded (unless it was an _unchecked request
+ * and the error has already arrived).
+ *
+ * This function will not block even if the reply is not yet available.
+ *
+ * Note that the sequence really does have to come from xcb_send_request64();
+ * the cookie sequence number is defined as "unsigned" int and therefore
+ * not 64-bit on all platforms.
+ * This function is not designed to operate on socket-handoff replies.
+ *
+ * Unlike its xcb_discard_reply() counterpart, the given sequence number is not
+ * automatically "widened" to 64-bit.
+ */
+void xcb_discard_reply64(xcb_connection_t *c, uint64_t sequence);
 
 /* xcb_ext.c */
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libxcb-1.11/src/xcb_in.c new/libxcb-1.11.1/src/xcb_in.c
--- old/libxcb-1.11/src/xcb_in.c        2014-06-15 13:44:14.000000000 +0200
+++ new/libxcb-1.11.1/src/xcb_in.c      2015-09-05 14:56:51.000000000 +0200
@@ -97,6 +97,11 @@
     struct reader_list *next;
 } reader_list;
 
+typedef struct special_list {
+    xcb_special_event_t *se;
+    struct special_list *next;
+} special_list;
+
 static void remove_finished_readers(reader_list **prev_reader, uint64_t 
completed)
 {
     while(*prev_reader && XCB_SEQUENCE_COMPARE((*prev_reader)->request, <=, 
completed))
@@ -475,6 +480,26 @@
         }
 }
 
+static void insert_special(special_list **prev_special, special_list *special, 
xcb_special_event_t *se)
+{
+    special->se = se;
+    special->next = *prev_special;
+    *prev_special = special;
+}
+
+static void remove_special(special_list **prev_special, special_list *special)
+{
+    while(*prev_special)
+    {
+        if(*prev_special == special)
+        {
+            *prev_special = (*prev_special)->next;
+            break;
+        }
+        prev_special = &(*prev_special)->next;
+    }
+}
+
 static void *wait_for_reply(xcb_connection_t *c, uint64_t request, 
xcb_generic_error_t **e)
 {
     void *ret = 0;
@@ -523,6 +548,20 @@
     return ret;
 }
 
+void *xcb_wait_for_reply64(xcb_connection_t *c, uint64_t request, 
xcb_generic_error_t **e)
+{
+    void *ret;
+    if(e)
+        *e = 0;
+    if(c->has_error)
+        return 0;
+
+    pthread_mutex_lock(&c->iolock);
+    ret = wait_for_reply(c, request, e);
+    pthread_mutex_unlock(&c->iolock);
+    return ret;
+}
+
 int *xcb_get_reply_fds(xcb_connection_t *c, void *reply, size_t reply_size)
 {
     return (int *) (&((char *) reply)[reply_size]);
@@ -595,6 +634,20 @@
     pthread_mutex_unlock(&c->iolock);
 }
 
+void xcb_discard_reply64(xcb_connection_t *c, uint64_t sequence)
+{
+    if(c->has_error)
+        return;
+
+    /* If an error occurred when issuing the request, fail immediately. */
+    if(!sequence)
+        return;
+
+    pthread_mutex_lock(&c->iolock);
+    discard_reply(c, sequence);
+    pthread_mutex_unlock(&c->iolock);
+}
+
 int xcb_poll_for_reply(xcb_connection_t *c, unsigned int request, void 
**reply, xcb_generic_error_t **error)
 {
     int ret;
@@ -612,6 +665,23 @@
     return ret;
 }
 
+int xcb_poll_for_reply64(xcb_connection_t *c, uint64_t request, void **reply, 
xcb_generic_error_t **error)
+{
+    int ret;
+    if(c->has_error)
+    {
+        *reply = 0;
+        if(error)
+            *error = 0;
+        return 1; /* would not block */
+    }
+    assert(reply != 0);
+    pthread_mutex_lock(&c->iolock);
+    ret = poll_for_reply(c, request, reply, error);
+    pthread_mutex_unlock(&c->iolock);
+    return ret;
+}
+
 xcb_generic_event_t *xcb_wait_for_event(xcb_connection_t *c)
 {
     xcb_generic_event_t *ret;
@@ -705,17 +775,23 @@
 xcb_generic_event_t *xcb_wait_for_special_event(xcb_connection_t *c,
                                                 xcb_special_event_t *se)
 {
+    special_list special;
     xcb_generic_event_t *event;
 
     if(c->has_error)
         return 0;
     pthread_mutex_lock(&c->iolock);
 
+    insert_special(&c->in.special_waiters, &special, se);
+
     /* get_special_event returns 0 on empty list. */
     while(!(event = get_special_event(c, se)))
         if(!_xcb_conn_wait(c, &se->special_event_cond, 0, 0))
             break;
 
+    remove_special(&c->in.special_waiters, &special);
+
+    _xcb_in_wake_up_next_reader(c);
     pthread_mutex_unlock(&c->iolock);
     return event;
 }
@@ -843,6 +919,8 @@
     int pthreadret;
     if(c->in.readers)
         pthreadret = pthread_cond_signal(c->in.readers->data);
+    else if(c->in.special_waiters)
+        pthreadret = 
pthread_cond_signal(&c->in.special_waiters->se->special_event_cond);
     else
         pthreadret = pthread_cond_signal(&c->in.event_cond);
     assert(pthreadret == 0);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libxcb-1.11/src/xcb_out.c new/libxcb-1.11.1/src/xcb_out.c
--- old/libxcb-1.11/src/xcb_out.c       2014-03-31 19:37:19.000000000 +0200
+++ new/libxcb-1.11.1/src/xcb_out.c     2015-09-05 14:56:03.000000000 +0200
@@ -177,7 +177,7 @@
     return c->out.maximum_request_length.value;
 }
 
-unsigned int xcb_send_request(xcb_connection_t *c, int flags, struct iovec 
*vector, const xcb_protocol_request_t *req)
+uint64_t xcb_send_request64(xcb_connection_t *c, int flags, struct iovec 
*vector, const xcb_protocol_request_t *req)
 {
     uint64_t request;
     uint32_t prefix[2];
@@ -286,6 +286,12 @@
     return request;
 }
 
+/* request number are actually uint64_t internally but keep API compat with 
unsigned int */
+unsigned int xcb_send_request(xcb_connection_t *c, int flags, struct iovec 
*vector, const xcb_protocol_request_t *req)
+{
+    return xcb_send_request64(c, flags, vector, req);
+}
+
 void
 xcb_send_fd(xcb_connection_t *c, int fd)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libxcb-1.11/src/xcbext.h new/libxcb-1.11.1/src/xcbext.h
--- old/libxcb-1.11/src/xcbext.h        2014-03-21 14:44:27.000000000 +0100
+++ new/libxcb-1.11.1/src/xcbext.h      2015-09-05 14:56:03.000000000 +0200
@@ -83,6 +83,30 @@
 unsigned int xcb_send_request(xcb_connection_t *c, int flags, struct iovec 
*vector, const xcb_protocol_request_t *request);
 
 /**
+ * @brief Send a request to the server, with 64-bit sequence number returned.
+ * @param c: The connection to the X server.
+ * @param flags: A combination of flags from the xcb_send_request_flags_t 
enumeration.
+ * @param vector: Data to send; must have two iovecs before start for internal 
use.
+ * @param request: Information about the request to be sent.
+ * @return The request's sequence number on success, 0 otherwise.
+ *
+ * This function sends a new request to the X server. The data of the request 
is
+ * given as an array of @c iovecs in the @p vector argument. The length of that
+ * array and the neccessary management information are given in the @p request
+ * argument.
+ *
+ * When this function returns, the request might or might not be sent already.
+ * Use xcb_flush() to make sure that it really was sent.
+ *
+ * Please note that this function is not the prefered way for sending requests.
+ * It's better to use the generated wrapper functions.
+ *
+ * Please note that xcb might use index -1 and -2 of the @p vector array 
internally,
+ * so they must be valid!
+ */
+uint64_t xcb_send_request64(xcb_connection_t *c, int flags, struct iovec 
*vector, const xcb_protocol_request_t *request);
+
+/**
  * @brief Send a file descriptor to the server in the next call to 
xcb_send_request.
  * @param c: The connection to the X server.
  * @param fd: The file descriptor to send.
@@ -162,6 +186,21 @@
 void *xcb_wait_for_reply(xcb_connection_t *c, unsigned int request, 
xcb_generic_error_t **e);
 
 /**
+ * @brief Wait for the reply of a given request, with 64-bit sequence number
+ * @param c: The connection to the X server.
+ * @param request: 64-bit sequence number of the request as returned by 
xcb_send_request64().
+ * @param e: Location to store errors in, or NULL. Ignored for unchecked 
requests.
+ *
+ * Returns the reply to the given request or returns null in the event of
+ * errors. Blocks until the reply or error for the request arrives, or an I/O
+ * error occurs.
+ *
+ * Unlike its xcb_wait_for_reply() counterpart, the given sequence number is 
not
+ * automatically "widened" to 64-bit.
+ */
+void *xcb_wait_for_reply64(xcb_connection_t *c, uint64_t request, 
xcb_generic_error_t **e);
+
+/**
  * @brief Poll for the reply of a given request.
  * @param c: The connection to the X server.
  * @param request: Sequence number of the request as returned by 
xcb_send_request().
@@ -174,6 +213,21 @@
 int xcb_poll_for_reply(xcb_connection_t *c, unsigned int request, void 
**reply, xcb_generic_error_t **error);
 
 /**
+ * @brief Poll for the reply of a given request, with 64-bit sequence number.
+ * @param c: The connection to the X server.
+ * @param request: 64-bit sequence number of the request as returned by 
xcb_send_request().
+ * @param reply: Location to store the reply in, must not be NULL.
+ * @param e: Location to store errors in, or NULL. Ignored for unchecked 
requests.
+ * @return 1 when the reply to the request was returned, else 0.
+ *
+ * Checks if the reply to the given request already received. Does not block.
+ *
+ * Unlike its xcb_poll_for_reply() counterpart, the given sequence number is 
not
+ * automatically "widened" to 64-bit.
+ */
+int xcb_poll_for_reply64(xcb_connection_t *c, uint64_t request, void **reply, 
xcb_generic_error_t **error);
+
+/**
  * @brief Don't use this, only needed by the generated code.
  * @param c: The connection to the X server.
  * @param reply: A reply that was received from the server
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/libxcb-1.11/src/xcbint.h new/libxcb-1.11.1/src/xcbint.h
--- old/libxcb-1.11/src/xcbint.h        2014-06-15 13:44:08.000000000 +0200
+++ new/libxcb-1.11.1/src/xcbint.h      2015-09-05 14:56:51.000000000 +0200
@@ -142,6 +142,7 @@
     struct event_list *events;
     struct event_list **events_tail;
     struct reader_list *readers;
+    struct special_list *special_waiters;
 
     struct pending_reply *pending_replies;
     struct pending_reply **pending_replies_tail;


Reply via email to