aboutsummaryrefslogtreecommitdiff
path: root/libxcb/src/xcb_in.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2010-04-19 12:25:24 +0000
committermarha <marha@users.sourceforge.net>2010-04-19 12:25:24 +0000
commita46e26df6103fb0e6e00d8d11d58c3f7a358208c (patch)
treec25cff1f3a02b71fa1b49c932b2986b4d01dfc36 /libxcb/src/xcb_in.c
parentd76a22b9314bfd407c7e26f78305aeecb5d2bcfb (diff)
downloadvcxsrv-a46e26df6103fb0e6e00d8d11d58c3f7a358208c.tar.gz
vcxsrv-a46e26df6103fb0e6e00d8d11d58c3f7a358208c.tar.bz2
vcxsrv-a46e26df6103fb0e6e00d8d11d58c3f7a358208c.zip
libxcb update 19/4/2010
Diffstat (limited to 'libxcb/src/xcb_in.c')
-rw-r--r--libxcb/src/xcb_in.c28
1 files changed, 13 insertions, 15 deletions
diff --git a/libxcb/src/xcb_in.c b/libxcb/src/xcb_in.c
index 80f55232e..6dd358cbd 100644
--- a/libxcb/src/xcb_in.c
+++ b/libxcb/src/xcb_in.c
@@ -69,16 +69,6 @@ typedef struct reader_list {
struct reader_list *next;
} reader_list;
-static void wake_up_next_reader(xcb_connection_t *c)
-{
- int pthreadret;
- if(c->in.readers)
- pthreadret = pthread_cond_signal(c->in.readers->data);
- else
- pthreadret = pthread_cond_signal(&c->in.event_cond);
- assert(pthreadret == 0);
-}
-
static int read_packet(xcb_connection_t *c)
{
xcb_generic_reply_t genrep;
@@ -154,9 +144,7 @@ static int read_packet(xcb_connection_t *c)
/* XGE events may have sizes > 32 */
if (genrep.response_type == XCB_XGE_EVENT)
- {
- eventlength = ((xcb_ge_event_t*)&genrep)->length * 4;
- }
+ eventlength = genrep.length * 4;
buf = malloc(length + eventlength +
(genrep.response_type == XCB_REPLY ? 0 : sizeof(uint32_t)));
@@ -404,7 +392,7 @@ void *xcb_wait_for_reply(xcb_connection_t *c, unsigned int request, xcb_generic_
pthread_cond_destroy(&cond);
}
- wake_up_next_reader(c);
+ _xcb_in_wake_up_next_reader(c);
pthread_mutex_unlock(&c->iolock);
return ret;
}
@@ -547,7 +535,7 @@ xcb_generic_event_t *xcb_wait_for_event(xcb_connection_t *c)
if(!_xcb_conn_wait(c, &c->in.event_cond, 0, 0))
break;
- wake_up_next_reader(c);
+ _xcb_in_wake_up_next_reader(c);
pthread_mutex_unlock(&c->iolock);
return ret;
}
@@ -631,6 +619,16 @@ void _xcb_in_destroy(_xcb_in *in)
}
}
+void _xcb_in_wake_up_next_reader(xcb_connection_t *c)
+{
+ int pthreadret;
+ if(c->in.readers)
+ pthreadret = pthread_cond_signal(c->in.readers->data);
+ else
+ pthreadret = pthread_cond_signal(&c->in.event_cond);
+ assert(pthreadret == 0);
+}
+
int _xcb_in_expect_reply(xcb_connection_t *c, uint64_t request, enum workarounds workaround, int flags)
{
pending_reply *pend = malloc(sizeof(pending_reply));