X-Git-Url: http://git.demorecorder.com/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fxcb_in.c;h=1cb6b69de7db2f7d74200a2f48fd97b945e9d600;hb=818811a7ac660e46d0dca1cbf9e53ad0475af330;hp=41764dfedbf894c304e145882b2ece1a54dabb09;hpb=57b0cd8fea498a32ff2322583c7278d5e86aa4e8;p=free-sw%2Fxcb%2Flibxcb diff --git a/src/xcb_in.c b/src/xcb_in.c index 41764df..1cb6b69 100644 --- a/src/xcb_in.c +++ b/src/xcb_in.c @@ -108,8 +108,6 @@ static int read_packet(xcb_connection_t *c) } c->in.request_completed = c->in.request_read - 1; } - if(genrep.response_type == XCB_ERROR) - c->in.request_completed = c->in.request_read; while(c->in.pending_replies && XCB_SEQUENCE_COMPARE (c->in.pending_replies->request, <=, c->in.request_completed)) @@ -120,6 +118,9 @@ static int read_packet(xcb_connection_t *c) c->in.pending_replies_tail = &c->in.pending_replies; free(oldpend); } + + if(genrep.response_type == XCB_ERROR) + c->in.request_completed = c->in.request_read; } if(genrep.response_type == XCB_ERROR || genrep.response_type == XCB_REPLY) @@ -395,33 +396,18 @@ xcb_generic_event_t *xcb_wait_for_event(xcb_connection_t *c) return ret; } -xcb_generic_event_t *xcb_poll_for_event(xcb_connection_t *c, int *error) +xcb_generic_event_t *xcb_poll_for_event(xcb_connection_t *c) { + xcb_generic_event_t *ret = 0; if(!c->has_error) { - xcb_generic_event_t *ret = 0; - int success; _xcb_lock_io(c); /* FIXME: follow X meets Z architecture changes. */ - success = _xcb_in_read(c); - if(success) + if(_xcb_in_read(c)) /* _xcb_in_read shuts down the connection on error */ ret = get_event(c); _xcb_unlock_io(c); - if(success) - { - if(error) - *error = 0; - return ret; - } } - if(error) - *error = -1; - else - { - fprintf(stderr, "xcb_poll_for_event: I/O error occured, but no handler provided.\n"); - abort(); - } - return 0; + return ret; } xcb_generic_error_t *xcb_request_check(xcb_connection_t *c, xcb_void_cookie_t cookie)