From 467656df0df9e6ade3808b90a4a4f9c549c14338 Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Tue, 28 May 2019 17:43:25 +0200 Subject: [PATCH] gl/wayland: fix wayland event source burning CPU Commit c71dd72b "gl/wayland: fix glib mainloop integration" was overeager in removing the poll result test from the check function. This caused dispatch to be called even if no new events are available on the Wayland connection, which in turn would wake up the glib mainloop, causing effectively a tight loop without ever blocking on the poll. Fixes #603 --- gst-libs/gst/gl/wayland/wayland_event_source.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gst-libs/gst/gl/wayland/wayland_event_source.c b/gst-libs/gst/gl/wayland/wayland_event_source.c index 3f9d482..553125e 100644 --- a/gst-libs/gst/gl/wayland/wayland_event_source.c +++ b/gst-libs/gst/gl/wayland/wayland_event_source.c @@ -151,8 +151,12 @@ wayland_event_source_check (GSource * base) source->reading = FALSE; - if (wl_display_read_events (source->display) == 0) - return TRUE; + if (source->pfd.revents & G_IO_IN) { + if (wl_display_read_events (source->display) == 0) + return TRUE; + } else { + wl_display_cancel_read (source->display); + } return FALSE; } -- 2.7.4