Bugfix: move request_written update *before* _xcb_conn_wait in _xcb_out_flush. Otherwise a reply may be read before we record that we have sent the request, and then XCB gets... confused.

This commit is contained in:
Jamey Sharp 2006-02-22 23:38:16 -08:00
parent e0a3578383
commit f8a8b465e0

View File

@ -269,9 +269,9 @@ int _xcb_out_write_block(XCBConnection *c, struct iovec *vector, size_t count)
int _xcb_out_flush(XCBConnection *c) int _xcb_out_flush(XCBConnection *c)
{ {
int ret = 1; int ret = 1;
c->out.request_written = c->out.request;
while(ret > 0 && (c->out.queue_len || c->out.vec_len)) while(ret > 0 && (c->out.queue_len || c->out.vec_len))
ret = _xcb_conn_wait(c, /*should_write*/ 1, &c->out.cond); ret = _xcb_conn_wait(c, /*should_write*/ 1, &c->out.cond);
c->out.request_written = c->out.request;
pthread_cond_broadcast(&c->out.cond); pthread_cond_broadcast(&c->out.cond);
return ret; return ret;
} }