wayland-server: Return 0 from read_events() in case of EAGAIN

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.
This commit is contained in:
Kristian Høgsberg 2013-07-09 17:55:45 -04:00
parent 12cea95593
commit becca5fcf7

View file

@ -873,8 +873,10 @@ read_events(struct wl_display *display)
if (display->reader_count == 0) { if (display->reader_count == 0) {
total = wl_connection_read(display->connection); total = wl_connection_read(display->connection);
if (total == -1) { if (total == -1) {
if (errno != EAGAIN) if (errno == EAGAIN)
display_fatal_error(display, errno); return 0;
display_fatal_error(display, errno);
return -1; return -1;
} else if (total == 0) { } else if (total == 0) {
/* The compositor has closed the socket. This /* The compositor has closed the socket. This