From 621f891c49cbf4beba1e20fb9b6fb1be576d42f3 Mon Sep 17 00:00:00 2001 From: Jamey Sharp Date: Wed, 8 Mar 2006 14:21:16 -0800 Subject: [PATCH] Move c->out.vec refs out of _xcb_out_write up to _xcb_conn_wait. --- src/xcb_conn.c | 2 +- src/xcb_out.c | 18 +++++++++--------- src/xcbint.h | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/xcb_conn.c b/src/xcb_conn.c index 5839ed8..0491721 100644 --- a/src/xcb_conn.c +++ b/src/xcb_conn.c @@ -231,7 +231,7 @@ int _xcb_conn_wait(XCBConnection *c, const int should_write, pthread_cond_t *con ret = ret && _xcb_in_read(c); if(FD_ISSET(c->fd, &wfds)) - ret = ret && _xcb_out_write(c); + ret = ret && _xcb_out_write(c, &c->out.vec, &c->out.vec_len); } if(should_write) diff --git a/src/xcb_out.c b/src/xcb_out.c index 1faf2a5..c84a27c 100644 --- a/src/xcb_out.c +++ b/src/xcb_out.c @@ -207,29 +207,29 @@ void _xcb_out_destroy(_xcb_out *out) } /* precondition: there must be something for us to write. */ -int _xcb_out_write(XCBConnection *c) +int _xcb_out_write(XCBConnection *c, struct iovec **vector, int *count) { int n; assert(!c->out.queue_len); - n = writev(c->fd, c->out.vec, c->out.vec_len); + n = writev(c->fd, *vector, *count); if(n < 0 && errno == EAGAIN) return 1; if(n <= 0) return 0; - for(; c->out.vec_len; --c->out.vec_len, ++c->out.vec) + for(; *count; --*count, ++*vector) { - int cur = c->out.vec->iov_len; + int cur = (*vector)->iov_len; if(cur > n) cur = n; - c->out.vec->iov_len -= cur; - c->out.vec->iov_base = (char *) c->out.vec->iov_base + cur; + (*vector)->iov_len -= cur; + (*vector)->iov_base = (char *) (*vector)->iov_base + cur; n -= cur; - if(c->out.vec->iov_len) + if((*vector)->iov_len) break; } - if(!c->out.vec_len) - c->out.vec = 0; + if(!*count) + *vector = 0; assert(n == 0); return 1; } diff --git a/src/xcbint.h b/src/xcbint.h index 7c8f331..e6f540a 100644 --- a/src/xcbint.h +++ b/src/xcbint.h @@ -76,7 +76,7 @@ typedef struct _xcb_out { int _xcb_out_init(_xcb_out *out); void _xcb_out_destroy(_xcb_out *out); -int _xcb_out_write(XCBConnection *c); +int _xcb_out_write(XCBConnection *c, struct iovec **vector, int *count); int _xcb_out_write_block(XCBConnection *c, struct iovec *vector, size_t count); int _xcb_out_flush(XCBConnection *c); -- 2.34.1