Commit 59f255d6 authored by Marek Chalupa's avatar Marek Chalupa Committed by Pekka Paalanen

client: read_events should return -1 after an error

When a thread is sleeping, waiting until another thread read
from the display, it always returns 0. Even when an error
occured. In documentation stands:

  "return 0 on success or -1 on error.  In case of error errno will
   be set accordingly"

So this is a fix for this.

Along with the read_events, fix a test so that it now complies
with this behaviour (and we have this tested)
Signed-off-by: default avatarMarek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
parent 05922054
......@@ -1190,6 +1190,11 @@ read_events(struct wl_display *display)
while (display->read_serial == serial)
pthread_cond_wait(&display->reader_cond,
&display->mutex);
if (display->last_error) {
errno = display->last_error;
return -1;
}
}
return 0;
......
......@@ -369,9 +369,9 @@ thread_read_error(void *data)
* thread should be woken up or it will block indefinitely.
*/
c->display_stopped = 1;
assert(wl_display_read_events(c->wl_display) == 0);
assert(wl_display_read_events(c->wl_display) == -1);
wl_display_dispatch_pending(c->wl_display);
assert(wl_display_dispatch_pending(c->wl_display) == -1);
assert(wl_display_get_error(c->wl_display));
pthread_exit(NULL);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment