projects
/
free-sw
/
xcb
/
libxcb
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Always wake up readers after writing.
[free-sw/xcb/libxcb]
/
src
/
xcb_in.c
diff --git
a/src/xcb_in.c
b/src/xcb_in.c
index
a2f7312
..
6dd358c
100644
(file)
--- a/
src/xcb_in.c
+++ b/
src/xcb_in.c
@@
-69,16
+69,6
@@
typedef struct reader_list {
struct reader_list *next;
} 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;
static int read_packet(xcb_connection_t *c)
{
xcb_generic_reply_t genrep;
@@
-402,7
+392,7
@@
void *xcb_wait_for_reply(xcb_connection_t *c, unsigned int request, xcb_generic_
pthread_cond_destroy(&cond);
}
pthread_cond_destroy(&cond);
}
- wake_up_next_reader(c);
+
_xcb_in_
wake_up_next_reader(c);
pthread_mutex_unlock(&c->iolock);
return ret;
}
pthread_mutex_unlock(&c->iolock);
return ret;
}
@@
-545,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;
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;
}
pthread_mutex_unlock(&c->iolock);
return ret;
}
@@
-629,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));
int _xcb_in_expect_reply(xcb_connection_t *c, uint64_t request, enum workarounds workaround, int flags)
{
pending_reply *pend = malloc(sizeof(pending_reply));