X-Git-Url: http://git.demorecorder.com/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fxcb_out.c;h=afc12c1b4bb478a004a5d14bac6fcf15c8afdf66;hb=6dd8228a137d280ce24cec604a419129d8ed0e8e;hp=4c6ab133b2326208f15f4b18bb7d54c8d462d91a;hpb=fa452cc9b2bb69fa0603dfd97e00e540b6b52840;p=free-sw%2Fxcb%2Flibxcb diff --git a/src/xcb_out.c b/src/xcb_out.c index 4c6ab13..afc12c1 100644 --- a/src/xcb_out.c +++ b/src/xcb_out.c @@ -52,7 +52,7 @@ static int write_block(xcb_connection_t *c, struct iovec *vector, int count) vector[0].iov_base = c->out.queue; vector[0].iov_len = c->out.queue_len; c->out.queue_len = 0; - return _xcb_out_send(c, &vector, &count); + return _xcb_out_send(c, vector, count); } static void get_socket_back(xcb_connection_t *c) @@ -242,7 +242,7 @@ unsigned int xcb_send_request(xcb_connection_t *c, int flags, struct iovec *vect vector[1].iov_base = (uint32_t *) vector[1].iov_base + 1; vector[1].iov_len -= sizeof(uint32_t); } - vector[0].iov_len = sizeof(uint32_t) * (prefix[0] ? 1 : 0 | prefix[2] ? 2 : 0); + vector[0].iov_len = sizeof(uint32_t) * ((prefix[0] ? 1 : 0) + (prefix[2] ? 2 : 0)); vector[0].iov_base = prefix + !prefix[0]; } @@ -283,7 +283,7 @@ int xcb_writev(xcb_connection_t *c, struct iovec *vector, int count, uint64_t re return 0; pthread_mutex_lock(&c->iolock); c->out.request += requests; - ret = _xcb_out_send(c, &vector, &count); + ret = _xcb_out_send(c, vector, count); pthread_mutex_unlock(&c->iolock); return ret; } @@ -331,11 +331,11 @@ void _xcb_out_destroy(_xcb_out *out) pthread_mutex_destroy(&out->reqlenlock); } -int _xcb_out_send(xcb_connection_t *c, struct iovec **vector, int *count) +int _xcb_out_send(xcb_connection_t *c, struct iovec *vector, int count) { int ret = 1; - while(ret && *count) - ret = _xcb_conn_wait(c, &c->out.cond, vector, count); + while(ret && count) + ret = _xcb_conn_wait(c, &c->out.cond, &vector, &count); c->out.request_written = c->out.request; pthread_cond_broadcast(&c->out.cond); return ret; @@ -348,12 +348,11 @@ int _xcb_out_flush_to(xcb_connection_t *c, uint64_t request) return 1; if(c->out.queue_len) { - struct iovec vec, *vec_ptr = &vec; - int count = 1; + struct iovec vec; vec.iov_base = c->out.queue; vec.iov_len = c->out.queue_len; c->out.queue_len = 0; - return _xcb_out_send(c, &vec_ptr, &count); + return _xcb_out_send(c, &vec, 1); } while(c->out.writing) pthread_cond_wait(&c->out.cond, &c->iolock);