devilhorns pushed a commit to branch master.

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

commit abbfde9d68b7e54d0561f5263f4b8797c8b7aa51
Author: Chris Michael <cpmich...@osg.samsung.com>
Date:   Wed Dec 9 09:38:01 2015 -0500

    ecore-evas-wayland: Move configure acknowledge to render_flush_pre
    
    If we acknowledge a configure from xdg during post render, we end up
    breaking maximize of EFL clients inside Weston (and perhaps other
    compositors). In order to fix that, we will now send the configure ack
    post render but pre flush.
    
    @fix
    
    Signed-off-by: Chris Michael <cpmich...@osg.samsung.com>
---
 .../engines/wayland/ecore_evas_wayland_common.c       | 19 ++++++++++++-------
 .../engines/wayland/ecore_evas_wayland_egl.c          |  3 +++
 .../engines/wayland/ecore_evas_wayland_private.h      |  1 +
 .../engines/wayland/ecore_evas_wayland_shm.c          |  3 +++
 4 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c 
b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
index f0f5f92..4b090ef 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
@@ -1310,6 +1310,18 @@ _ecore_evas_wl_common_render_pre(void *data, Evas *evas 
EINA_UNUSED, void *event
    ecore_evas_manual_render_set(ee, 1);
 }
 
+void
+_ecore_evas_wl_common_render_flush_pre(void *data, Evas *evas EINA_UNUSED, 
void *event EINA_UNUSED)
+{
+   Ecore_Evas *ee = data;
+   Ecore_Evas_Engine_Wl_Data *wdata;
+
+   wdata = ee->engine.data;
+   if (wdata->win->configure_ack)
+     wdata->win->configure_ack(wdata->win->xdg_surface,
+                               wdata->win->configure_serial);
+}
+
 void 
 _ecore_evas_wl_common_render_updates(void *data, Evas *evas EINA_UNUSED, void 
*event)
 {
@@ -1342,15 +1354,8 @@ _ecore_evas_wl_common_render_updates(void *data, Evas 
*evas EINA_UNUSED, void *e
 void
 _ecore_evas_wl_common_post_render(Ecore_Evas *ee)
 {
-   Ecore_Evas_Engine_Wl_Data *wdata;
-
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
 
-   wdata = ee->engine.data;
-   if (wdata->win->configure_ack)
-     wdata->win->configure_ack(wdata->win->xdg_surface,
-                               wdata->win->configure_serial);
-
    _ecore_evas_idle_timeout_update(ee);
    if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
 }
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c 
b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
index b6b0189..6514968 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
@@ -236,6 +236,9 @@ ecore_evas_wayland_egl_new_internal(const char *disp_name, 
unsigned int parent,
    evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_PRE,
                             _ecore_evas_wl_common_render_pre, ee);
 
+   evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_FLUSH_PRE,
+                           _ecore_evas_wl_common_render_flush_pre, ee);
+
    /* FIXME: This needs to be set based on theme & scale */
    if (ee->prop.draw_frame)
      evas_output_framespace_set(ee->evas, fx, fy, fw, fh);
diff --git 
a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h 
b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h
index 2551c0f..6d6b695 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h
@@ -75,6 +75,7 @@ int  _ecore_evas_wl_common_pre_render(Ecore_Evas *ee);
 /* int  _ecore_evas_wl_common_render_updates(Ecore_Evas *ee); */
 void _ecore_evas_wl_common_post_render(Ecore_Evas *ee);
 int  _ecore_evas_wl_common_render(Ecore_Evas *ee);
+void _ecore_evas_wl_common_render_flush_pre(void *data, Evas *evas 
EINA_UNUSED, void *event EINA_UNUSED);
 void _ecore_evas_wl_common_screen_geometry_get(const Ecore_Evas *ee, int *x, 
int *y, int *w, int *h);
 void _ecore_evas_wl_common_screen_dpi_get(const Ecore_Evas *ee, int *xdpi, int 
*ydpi);
 void _ecore_evas_wl_common_render_pre(void *data, Evas *evas EINA_UNUSED, void 
*event);
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c 
b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
index fb1e25b..0592feb 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
@@ -232,6 +232,9 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, 
unsigned int parent,
    evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_PRE,
                             _ecore_evas_wl_common_render_pre, ee);
 
+   evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_FLUSH_PRE,
+                           _ecore_evas_wl_common_render_flush_pre, ee);
+
    /* FIXME: This needs to be set based on theme & scale */
    if (ee->prop.draw_frame)
      evas_output_framespace_set(ee->evas, fx, fy, fw, fh);

-- 


Reply via email to