devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=298d66377eddb44deca081ac19eeeab006b876f1

commit 298d66377eddb44deca081ac19eeeab006b876f1
Author: Chris Michael <cpmich...@osg.samsung.com>
Date:   Fri Dec 4 14:12:06 2015 -0500

    ecore-wl2: Implement function pointer for configure acknowledge
    
    We need a way to store the configure serial, and make the
    xdg_surface_ack_configure callback be callable by Ecore_Evas at the
    appropriate time. This fixes an issue where previously we were
    (potentially) sending a configure acknowledgment while not applying
    the configure due to deferred rendering.
    
    @fix
    
    Signed-off-by: Chris Michael <cpmich...@osg.samsung.com>
---
 src/lib/ecore_wl2/ecore_wl2_private.h | 3 +++
 src/lib/ecore_wl2/ecore_wl2_window.c  | 6 ++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h 
b/src/lib/ecore_wl2/ecore_wl2_private.h
index 1b0eebc..fee3649 100644
--- a/src/lib/ecore_wl2/ecore_wl2_private.h
+++ b/src/lib/ecore_wl2/ecore_wl2_private.h
@@ -117,6 +117,9 @@ struct _Ecore_Wl2_Window
    struct xdg_surface *xdg_surface;
    struct xdg_popup *xdg_popup;
 
+   uint32_t configure_serial;
+   void (*configure_ack)(struct xdg_surface *surface, uint32_t serial);
+
    Eina_Rectangle saved;
    Eina_Rectangle geometry;
    Eina_Rectangle opaque;
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 3fc7a9f..590dc66 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -112,10 +112,10 @@ _xdg_surface_cb_configure(void *data, struct xdg_surface 
*xdg_surface EINA_UNUSE
           }
      }
 
+   win->configure_serial = serial;
+
    if ((w > 0) && (h > 0))
      _ecore_wl2_window_configure_send(win, w, h, 0);
-
-   xdg_surface_ack_configure(win->xdg_surface, serial);
 }
 
 static void
@@ -314,6 +314,8 @@ ecore_wl2_window_show(Ecore_Wl2_Window *window)
         xdg_surface_set_user_data(window->xdg_surface, window);
         xdg_surface_add_listener(window->xdg_surface,
                                  &_xdg_surface_listener, window);
+
+        window->configure_ack = xdg_surface_ack_configure;
      }
    else if ((disp->wl.wl_shell) && (!window->wl_shell_surface))
      {

-- 


Reply via email to