summaryrefslogtreecommitdiff
path: root/src/xcb_in.c
diff options
context:
space:
mode:
authorArvind Umrao <arvind.umrao@oracle.com>2011-11-04 15:42:05 +0530
committerJulien Danjou <julien@danjou.info>2012-01-11 18:01:29 +0100
commit769acff0da8b9859ebdf052dce80045465c7598c (patch)
treeda557d02c65a7f3ba8dfd73284c0300f780593a1 /src/xcb_in.c
parent9b4d6f30a339e2d18ebaea98149da81aba453216 (diff)
Added more error states and removed global error_connection
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=41443 Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=42304 I have added more xcb connection error states at xcb.h header. Also I have removed global error_connection variable, and added an interface that returns connection error state. TBD: I will segregate errors states in a separate header file and try to provide more precise error states, in future. Also I will give patch for libX11, in that patch xcb_connection_t::has_error will be passed to default io handler of libX11. This value can then be used for displaying error messages. Reviewed-by: Rami Ylimäki <rami.ylimaki@vincit.fi> Reviewed-by: Uli Schlachter <psychon@znc.in> Signed-off-by: Arvind Umrao <arvind.umrao@oracle.com>
Diffstat (limited to 'src/xcb_in.c')
-rw-r--r--src/xcb_in.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/xcb_in.c b/src/xcb_in.c
index e075a40..969cfc0 100644
--- a/src/xcb_in.c
+++ b/src/xcb_in.c
@@ -174,7 +174,7 @@ static int read_packet(xcb_connection_t *c)
(genrep.response_type == XCB_REPLY ? 0 : sizeof(uint32_t)));
if(!buf)
{
- _xcb_conn_shutdown(c);
+ _xcb_conn_shutdown(c, XCB_CONN_CLOSED_MEM_INSUFFICIENT);
return 0;
}
@@ -210,7 +210,7 @@ static int read_packet(xcb_connection_t *c)
struct reply_list *cur = malloc(sizeof(struct reply_list));
if(!cur)
{
- _xcb_conn_shutdown(c);
+ _xcb_conn_shutdown(c, XCB_CONN_CLOSED_MEM_INSUFFICIENT);
free(buf);
return 0;
}
@@ -227,7 +227,7 @@ static int read_packet(xcb_connection_t *c)
event = malloc(sizeof(struct event_list));
if(!event)
{
- _xcb_conn_shutdown(c);
+ _xcb_conn_shutdown(c, XCB_CONN_CLOSED_MEM_INSUFFICIENT);
free(buf);
return 0;
}
@@ -433,7 +433,7 @@ static void insert_pending_discard(xcb_connection_t *c, pending_reply **prev_nex
pend = malloc(sizeof(*pend));
if(!pend)
{
- _xcb_conn_shutdown(c);
+ _xcb_conn_shutdown(c, XCB_CONN_CLOSED_MEM_INSUFFICIENT);
return;
}
@@ -633,7 +633,7 @@ int _xcb_in_expect_reply(xcb_connection_t *c, uint64_t request, enum workarounds
assert(workaround != WORKAROUND_NONE || flags != 0);
if(!pend)
{
- _xcb_conn_shutdown(c);
+ _xcb_conn_shutdown(c, XCB_CONN_CLOSED_MEM_INSUFFICIENT);
return 0;
}
pend->first_request = pend->last_request = request;
@@ -672,7 +672,7 @@ int _xcb_in_read(xcb_connection_t *c)
if((n > 0) || (n < 0 && WSAGetLastError() == WSAEWOULDBLOCK))
#endif /* !_WIN32 */
return 1;
- _xcb_conn_shutdown(c);
+ _xcb_conn_shutdown(c, XCB_CONN_ERROR);
return 0;
}
@@ -691,7 +691,7 @@ int _xcb_in_read_block(xcb_connection_t *c, void *buf, int len)
int ret = read_block(c->fd, (char *) buf + done, len - done);
if(ret <= 0)
{
- _xcb_conn_shutdown(c);
+ _xcb_conn_shutdown(c, XCB_CONN_ERROR);
return ret;
}
}