diff --git a/gst-libs/gst/gl/wayland/wayland_event_source.c b/gst-libs/gst/gl/wayland/wayland_event_source.c index 12a0668051..3f9d482ffa 100644 --- a/gst-libs/gst/gl/wayland/wayland_event_source.c +++ b/gst-libs/gst/gl/wayland/wayland_event_source.c @@ -128,19 +128,13 @@ wayland_event_source_prepare (GSource * base, gint * timeout) wl_display_cancel_read (source->display); if (source->queue) { - while (wl_display_prepare_read_queue (source->display, source->queue) != 0) { - if (wl_display_dispatch_queue_pending (source->display, - source->queue) < 0) { - g_critical ("Failed to dispatch pending events\n"); - } - } + if (wl_display_prepare_read_queue (source->display, source->queue) != 0) + return TRUE; } else { - while (wl_display_prepare_read (source->display) != 0) { - if (wl_display_dispatch_pending (source->display) < 0) { - g_critical ("Failed to dispatch pending events\n"); - } - } + if (wl_display_prepare_read (source->display) != 0) + return TRUE; } + source->reading = TRUE; /* FIXME: this may return EAGAIN if the fd is full */ @@ -154,18 +148,13 @@ static gboolean wayland_event_source_check (GSource * base) { WaylandEventSource *source = (WaylandEventSource *) base; - gboolean retval; - retval = source->pfd.revents; - - if (source->pfd.revents & G_IO_IN) { - wl_display_read_events (source->display); - } else { - wl_display_cancel_read (source->display); - } source->reading = FALSE; - return retval; + if (wl_display_read_events (source->display) == 0) + return TRUE; + + return FALSE; } static gboolean