[kmscon-devel] [PATCH] wlt: toolkit: flush display after wl_display_dispatch_pending()

Ran Benita ran234 at gmail.com
Wed Sep 11 09:05:32 PDT 2013


wlterm doesn't work with current Wayland/Weston; the events are never
sent and the window doesn't come up. We need to flush the display, as
per wl_display_dispatch_pending(3):

    To proper integrate the wayland display fd into a main loop, the
    client should always call wl_display_dispatch_pending() and then
    wl_display_flush() prior to going back to sleep.

Signed-off-by: Ran Benita <ran234 at gmail.com>
---
Hi David,

I've used this locally for some time but forgot to send it. It works fine,
but feel free to fix it however you prefer.

Ran

 src/wlt_toolkit.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/wlt_toolkit.c b/src/wlt_toolkit.c
index f2a118f..ef036dd 100644
--- a/src/wlt_toolkit.c
+++ b/src/wlt_toolkit.c
@@ -405,10 +405,13 @@ static void dp_dispatch(struct wlt_display *disp, bool nonblock)
 	int ret;
 
 	errno = 0;
-	if (nonblock)
+	if (nonblock) {
 		ret = wl_display_dispatch_pending(disp->dp);
-	else
+		if (ret != -1)
+			ret = wl_display_flush(disp->dp);
+	} else {
 		ret = wl_display_dispatch(disp->dp);
+	}
 
 	if (ret == -1) {
 		log_error("error during wayland dispatch (%d): %m", errno);
-- 
1.8.4



More information about the kmscon-devel mailing list