projects
/
free-sw
/
xcb
/
libxcb
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of git+ssh://git.freedesktop.org/git/xcb
[free-sw/xcb/libxcb]
/
src
/
xcb_in.c
diff --git
a/src/xcb_in.c
b/src/xcb_in.c
index
ea851c7
..
76f9702
100644
(file)
--- a/
src/xcb_in.c
+++ b/
src/xcb_in.c
@@
-36,6
+36,9
@@
#include "xcbext.h"
#include "xcbint.h"
#include "xcbext.h"
#include "xcbint.h"
+#define XCBError 0
+#define XCBReply 1
+
struct event_list {
XCBGenericEvent *event;
struct event_list *next;
struct event_list {
XCBGenericEvent *event;
struct event_list *next;
@@
-85,7
+88,7
@@
static int read_packet(XCBConnection *c)
memcpy(&genrep, c->in.queue, sizeof(genrep));
/* Compute 32-bit sequence number of this packet. */
memcpy(&genrep, c->in.queue, sizeof(genrep));
/* Compute 32-bit sequence number of this packet. */
- if((genrep.response_type & 0x7f) != KeymapNotify)
+ if((genrep.response_type & 0x7f) !=
XCB
KeymapNotify)
{
int lastread = c->in.request_read;
c->in.request_read = (lastread & 0xffff0000) | genrep.sequence;
{
int lastread = c->in.request_read;
c->in.request_read = (lastread & 0xffff0000) | genrep.sequence;
@@
-104,7
+107,7
@@
static int read_packet(XCBConnection *c)
}
c->in.request_completed = c->in.request_read - 1;
}
}
c->in.request_completed = c->in.request_read - 1;
}
- if(genrep.response_type !=
1) /* not reply:
error or event */
+ if(genrep.response_type !=
XCBReply) /*
error or event */
c->in.request_completed = c->in.request_read; /* XXX: does event/error imply no more replies? */
while(c->in.pending_replies && c->in.pending_replies->request <= c->in.request_completed)
c->in.request_completed = c->in.request_read; /* XXX: does event/error imply no more replies? */
while(c->in.pending_replies && c->in.pending_replies->request <= c->in.request_completed)
@@
-117,7
+120,7
@@
static int read_packet(XCBConnection *c)
}
}
}
}
- if(genrep.response_type ==
0 || genrep.response_type == 1
)
+ if(genrep.response_type ==
XCBError || genrep.response_type == XCBReply
)
{
pend = c->in.pending_replies;
if(pend && pend->request != c->in.request_read)
{
pend = c->in.pending_replies;
if(pend && pend->request != c->in.request_read)
@@
-125,7
+128,7
@@
static int read_packet(XCBConnection *c)
}
/* For reply packets, check that the entire packet is available. */
}
/* For reply packets, check that the entire packet is available. */
- if(genrep.response_type ==
1
)
+ if(genrep.response_type ==
XCBReply
)
{
if(pend && pend->workaround == WORKAROUND_GLX_GET_FB_CONFIGS_BUG)
{
{
if(pend && pend->workaround == WORKAROUND_GLX_GET_FB_CONFIGS_BUG)
{
@@
-135,7
+138,7
@@
static int read_packet(XCBConnection *c)
length += genrep.length * 4;
}
length += genrep.length * 4;
}
- buf = malloc(length + (genrep.response_type ==
1
? 0 : sizeof(CARD32)));
+ buf = malloc(length + (genrep.response_type ==
XCBReply
? 0 : sizeof(CARD32)));
if(!buf)
return 0;
if(_xcb_in_read_block(c, buf, length) <= 0)
if(!buf)
return 0;
if(_xcb_in_read_block(c, buf, length) <= 0)
@@
-149,11
+152,12
@@
static int read_packet(XCBConnection *c)
return 1;
}
return 1;
}
- if(genrep.response_type !=
1
)
+ if(genrep.response_type !=
XCBReply
)
((XCBGenericEvent *) buf)->full_sequence = c->in.request_read;
/* reply, or checked error */
((XCBGenericEvent *) buf)->full_sequence = c->in.request_read;
/* reply, or checked error */
- if(genrep.response_type == 1 || (genrep.response_type == 0 && pend && (pend->flags & XCB_REQUEST_CHECKED)))
+ if( genrep.response_type == XCBReply ||
+ (genrep.response_type == XCBError && pend && (pend->flags & XCB_REQUEST_CHECKED)))
{
reader_list *reader;
struct reply_list *cur = malloc(sizeof(struct reply_list));
{
reader_list *reader;
struct reply_list *cur = malloc(sizeof(struct reply_list));
@@
-225,7
+229,9
@@
static int read_block(const int fd, void *buf, const size_t len)
fd_set fds;
FD_ZERO(&fds);
FD_SET(fd, &fds);
fd_set fds;
FD_ZERO(&fds);
FD_SET(fd, &fds);
- ret = select(fd + 1, &fds, 0, 0, 0);
+ do {
+ ret = select(fd + 1, &fds, 0, 0, 0);
+ } while (ret == -1 && errno == EINTR);
}
if(ret <= 0)
return ret;
}
if(ret <= 0)
return ret;
@@
-252,9
+258,8
@@
void *XCBWaitForReply(XCBConnection *c, unsigned int request, XCBGenericError **
pthread_mutex_lock(&c->iolock);
/* If this request has not been written yet, write it. */
pthread_mutex_lock(&c->iolock);
/* If this request has not been written yet, write it. */
- if((signed int) (c->out.request_written - request) < 0)
- if(!_xcb_out_flush(c))
- goto done; /* error */
+ if(!_xcb_out_flush_to(c, request))
+ goto done; /* error */
for(prev_reader = &c->in.readers; *prev_reader && (*prev_reader)->request <= request; prev_reader = &(*prev_reader)->next)
if((*prev_reader)->request == request)
for(prev_reader = &c->in.readers; *prev_reader && (*prev_reader)->request <= request; prev_reader = &(*prev_reader)->next)
if((*prev_reader)->request == request)
@@
-269,7
+274,7
@@
void *XCBWaitForReply(XCBConnection *c, unsigned int request, XCBGenericError **
* wait for one. */
while(c->in.request_completed < request &&
!(c->in.request_read == request && c->in.current_reply))
* wait for one. */
while(c->in.request_completed < request &&
!(c->in.request_read == request && c->in.current_reply))
- if(!_xcb_conn_wait(c,
/*should_write*/ 0, &cond
))
+ if(!_xcb_conn_wait(c,
&cond, 0, 0
))
goto done;
if(c->in.request_read != request)
goto done;
if(c->in.request_read != request)
@@
-294,7
+299,7
@@
void *XCBWaitForReply(XCBConnection *c, unsigned int request, XCBGenericError **
ret = head->reply;
free(head);
ret = head->reply;
free(head);
- if(((XCBGenericRep *) ret)->response_type ==
0) /* X error */
+ if(((XCBGenericRep *) ret)->response_type ==
XCBError)
{
if(e)
*e = ret;
{
if(e)
*e = ret;
@@
-329,7
+334,7
@@
XCBGenericEvent *XCBWaitForEvent(XCBConnection *c)
pthread_mutex_lock(&c->iolock);
/* get_event returns 0 on empty list. */
while(!(ret = get_event(c)))
pthread_mutex_lock(&c->iolock);
/* get_event returns 0 on empty list. */
while(!(ret = get_event(c)))
- if(!_xcb_conn_wait(c,
/*should_write*/ 0, &c->in.event_cond
))
+ if(!_xcb_conn_wait(c,
&c->in.event_cond, 0, 0
))
break;
wake_up_next_reader(c);
break;
wake_up_next_reader(c);