From e53f74787e15fccc4406b1a18fc8a3a27ef8cf93 Mon Sep 17 00:00:00 2001 From: Chris Michael Date: Tue, 13 Oct 2015 14:12:59 -0400 Subject: [PATCH] ecore-wl2: Fix issue of compositors not flushing clients properly Summary: When we use ecore_wl2 for creating compositors (E), we need to flush clients before we dispatch events on the wl loop, so add a prepare_callback for the fd handlers and flush clients there. @fix Signed-off-by: Chris Michael --- src/lib/ecore_wl2/ecore_wl2_display.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore_wl2/ecore_wl2_display.c b/src/lib/ecore_wl2/ecore_wl2_display.c index 82c8453894..a9b0854980 100644 --- a/src/lib/ecore_wl2/ecore_wl2_display.c +++ b/src/lib/ecore_wl2/ecore_wl2_display.c @@ -160,11 +160,21 @@ _cb_create_data(void *data, Ecore_Fd_Handler *hdl) loop = wl_display_get_event_loop(ewd->wl.display); wl_event_loop_dispatch(loop, 0); - wl_display_flush_clients(ewd->wl.display); + + /* wl_display_flush_clients(ewd->wl.display); */ return ECORE_CALLBACK_RENEW; } +static void +_cb_create_prepare(void *data, Ecore_Fd_Handler *hdlr EINA_UNUSED) +{ + Ecore_Wl2_Display *ewd; + + ewd = data; + wl_display_flush_clients(ewd->wl.display); +} + static Eina_Bool _cb_connect_data(void *data, Ecore_Fd_Handler *hdl) { @@ -392,6 +402,8 @@ ecore_wl2_display_create(const char *name) ECORE_FD_READ | ECORE_FD_ERROR, _cb_create_data, ewd, NULL, NULL); + ecore_main_fd_handler_prepare_callback_set(ewd->fd_hdl, + _cb_create_prepare, ewd); return ewd; socket_err: