devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=47cd4d4168878fd9f2439ed5e2aa5525ca727774

commit 47cd4d4168878fd9f2439ed5e2aa5525ca727774
Author: Chris Michael <[email protected]>
Date:   Tue Oct 13 14:12:59 2015 -0400

    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 <[email protected]>
---
 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 82c8453..a9b0854 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:

-- 


Reply via email to