[PATCH wayland] client: read_events should return -1 after an error
Marek Chalupa
mchqwerty at gmail.com
Mon Oct 27 01:19:46 PDT 2014
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: Marek Chalupa <mchqwerty at gmail.com>
---
src/wayland-client.c | 5 +++++
tests/display-test.c | 4 ++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/wayland-client.c b/src/wayland-client.c
index b0f77b9..1a70dc7 100644
--- a/src/wayland-client.c
+++ b/src/wayland-client.c
@@ -1187,6 +1187,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;
diff --git a/tests/display-test.c b/tests/display-test.c
index eb4ba1c..6ce9fe5 100644
--- a/tests/display-test.c
+++ b/tests/display-test.c
@@ -384,9 +384,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);
--
1.9.3
More information about the wayland-devel
mailing list