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 f0f5f92d3d..4b090ef7d2 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 b6b0189a5c..651496898f 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 2551c0f830..6d6b69510f 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 fb1e25bf25..0592febd47 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);