[Xcb-commit] libxcb: 2 commits - src

Uli Schlachter psychon at kemper.freedesktop.org
Sun Sep 8 14:05:26 PDT 2013


 src/xcb.h      |    1 -
 src/xcb_conn.c |    4 ++--
 2 files changed, 2 insertions(+), 3 deletions(-)

New commits:
commit f1405d9fe4a6ddcae24585ba254389a4c4f4c8c9
Author: Daphne Pfister <daphnediane at mac.com>
Date:   Sun Sep 8 16:25:11 2013 -0400

    Fix poll() if POLLIN == ROLLRDNORM|POLLRDBAND
    
    It seems like POLLIN is specified as equivalent to POLLRDNORM | POLLRDBAND. Some
    systems (e.g. QNX and HP-UX) take this literaly and have POLLIN defined as the
    above bit combination. Other systems (e.g. Linux) have POLLIN as just a single
    bit.
    
    This means that if no out-of-band data is available (which should never be the
    case), the result of poll() will not fulfil (fd.revents & POLLIN) == POLLIN on
    QNX, because the POLLRDBAND bit is not set.
    
    In other words, even though poll() signaled that the fd is readable, xcb would
    not read from the file descriptor.
    
    Fix this by checking if any bits from POLLIN are set in the result of poll(),
    instead of all of them.
    
    (This change was independently done by seanb at qnx.com as well)
    
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=38001
    Acked-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Uli Schlachter <psychon at znc.in>

diff --git a/src/xcb_conn.c b/src/xcb_conn.c
index 6a7a806..7dd25d3 100644
--- a/src/xcb_conn.c
+++ b/src/xcb_conn.c
@@ -443,14 +443,14 @@ int _xcb_conn_wait(xcb_connection_t *c, pthread_cond_t *cond, struct iovec **vec
          */
         int may_read = c->in.reading == 1 || !count;
 #if USE_POLL
-        if(may_read && (fd.revents & POLLIN) == POLLIN)
+        if(may_read && (fd.revents & POLLIN) != 0)
 #else
         if(may_read && FD_ISSET(c->fd, &rfds))
 #endif
             ret = ret && _xcb_in_read(c);
 
 #if USE_POLL
-        if((fd.revents & POLLOUT) == POLLOUT)
+        if((fd.revents & POLLOUT) != 0)
 #else
         if(FD_ISSET(c->fd, &wfds))
 #endif
commit ac47e0ecdb46aa91b191a59364437a8f65947467
Author: Uli Schlachter <psychon at znc.in>
Date:   Sun Sep 8 22:16:39 2013 +0200

    Fix documentation of xcb_poll_for_event()
    
    In commit 8eba8690adac2, the API documentation for xcb_poll_for_event() was
    fixed to remove an argument that was previously removed in commit 34168ab549.
    
    However, that commit only removed the first line of the documentation, leaving
    behind a spurious half-sentence. That commit happened seven years ago and now
    finally someone noticed...
    
    Thanks to Benjamin Herr for reporting this on IRC.
    
    v2: Thanks again to Benjamin Herr for noticing that my commit message blamed the
    wrong commit.
    
    Signed-off-by: Uli Schlachter <psychon at znc.in>

diff --git a/src/xcb.h b/src/xcb.h
index f7dc6af..0714130 100644
--- a/src/xcb.h
+++ b/src/xcb.h
@@ -278,7 +278,6 @@ xcb_generic_event_t *xcb_wait_for_event(xcb_connection_t *c);
 /**
  * @brief Returns the next event or error from the server.
  * @param c: The connection to the X server.
- * error status of the operation.
  * @return The next event from the server.
  *
  * Returns the next event or error from the server, if one is


More information about the xcb-commit mailing list