Getting no data from the socket is not an error condition. This may
happen in case of calling prepare_read() and then read_events() with
no other pending readers and no data in the socket. In general,
read_events() may not queue up events in the given event queue. From
a given threads point of view it doesn't matter whether events were
read and put in a different event queue or no events were read at all.
if (display->reader_count == 0) {
total = wl_connection_read(display->connection);
if (total == -1) {
- if (errno != EAGAIN)
- display_fatal_error(display, errno);
+ if (errno == EAGAIN)
+ return 0;
+
+ display_fatal_error(display, errno);
return -1;
} else if (total == 0) {
/* The compositor has closed the socket. This