projects
/
free-sw
/
xcb
/
libxcb
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove c->out.vec. Pass iovecs directly down the call tree. Add _xcb_out_flush_to...
[free-sw/xcb/libxcb]
/
src
/
xcb_conn.c
diff --git
a/src/xcb_conn.c
b/src/xcb_conn.c
index
0491721
..
1b3e1a2
100644
(file)
--- a/
src/xcb_conn.c
+++ b/
src/xcb_conn.c
@@
-89,8
+89,10
@@
static int write_setup(XCBConnection *c, XCBAuthInfo *auth_info)
assert(count <= sizeof(parts) / sizeof(*parts));
pthread_mutex_lock(&c->iolock);
assert(count <= sizeof(parts) / sizeof(*parts));
pthread_mutex_lock(&c->iolock);
- _xcb_out_write_block(c, parts, count);
- ret = _xcb_out_flush(c);
+ {
+ struct iovec *parts_ptr = parts;
+ ret = _xcb_out_send(c, &parts_ptr, &count);
+ }
pthread_mutex_unlock(&c->iolock);
return ret;
}
pthread_mutex_unlock(&c->iolock);
return ret;
}
@@
-198,13
+200,13
@@
void XCBDisconnect(XCBConnection *c)
/* Private interface */
/* Private interface */
-int _xcb_conn_wait(XCBConnection *c,
const int should_write, pthread_cond_t *cond
)
+int _xcb_conn_wait(XCBConnection *c,
pthread_cond_t *cond, struct iovec **vector, int *count
)
{
int ret;
fd_set rfds, wfds;
/* If the thing I should be doing is already being done, wait for it. */
{
int ret;
fd_set rfds, wfds;
/* If the thing I should be doing is already being done, wait for it. */
- if(
should_write
? c->out.writing : c->in.reading)
+ if(
count
? c->out.writing : c->in.reading)
{
pthread_cond_wait(cond, &c->iolock);
return 1;
{
pthread_cond_wait(cond, &c->iolock);
return 1;
@@
-215,7
+217,7
@@
int _xcb_conn_wait(XCBConnection *c, const int should_write, pthread_cond_t *con
++c->in.reading;
FD_ZERO(&wfds);
++c->in.reading;
FD_ZERO(&wfds);
- if(
should_write
)
+ if(
count
)
{
FD_SET(c->fd, &wfds);
++c->out.writing;
{
FD_SET(c->fd, &wfds);
++c->out.writing;
@@
-231,10
+233,10
@@
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_in_read(c);
if(FD_ISSET(c->fd, &wfds))
- ret = ret && _xcb_out_write(c,
&c->out.vec, &c->out.vec_len
);
+ ret = ret && _xcb_out_write(c,
vector, count
);
}
}
- if(
should_write
)
+ if(
count
)
--c->out.writing;
--c->in.reading;
--c->out.writing;
--c->in.reading;