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:
parent
e0a3578383
commit
f8a8b465e0
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue