[PATCH wayland] client: read_events should return -1 after an error
Pekka Paalanen
ppaalanen at gmail.com
Fri Nov 21 04:01:19 PST 2014
On Mon, 27 Oct 2014 09:19:46 +0100
Marek Chalupa <mchqwerty at gmail.com> wrote:
> 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);
Looks correct to me. Pushed.
Thanks,
pq
More information about the wayland-devel
mailing list