From 3d1d4920b7824581128e5e8aa1c6eefb58be47b7 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 15 Dec 2015 17:14:43 -0500 Subject: [PATCH] ecore-evas wayland: move frame sending to pre-flush callback it was possible to deadlock rendering if a pre-render occurred but the resulting render had no updated regions @fix Conflicts: src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c Change-Id: I2c391f037c29310d1d66945c256ba8af98d9c22f --- src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c | 2 +- src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c | 4 ++-- src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h | 2 +- src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c | 4 ++-- 4 files changed, 6 insertions(+), 6 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 437265f..bca87d2 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 @@ -1623,7 +1623,7 @@ static const struct wl_callback_listener _anim_listener = }; void -_ecore_evas_wl_common_render_pre(void *data, Evas *evas EINA_UNUSED, void *event EINA_UNUSED) +_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; 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 0c7c223..cf6f90d 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 @@ -246,8 +246,8 @@ ecore_evas_wayland_egl_options_new_internal(const char *disp_name, unsigned int evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_POST, _ecore_evas_wl_common_render_updates, ee); - 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) 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 0c9a31d..b14fe7e 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 @@ -84,7 +84,7 @@ void _ecore_evas_wl_common_post_render(Ecore_Evas *ee); int _ecore_evas_wl_common_render(Ecore_Evas *ee); 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); +void _ecore_evas_wl_common_render_flush_pre(void *data, Evas *evas EINA_UNUSED, void *event); void _ecore_evas_wl_common_render_updates(void *data, Evas *evas, void *event); void _ecore_evas_wl_common_rotation_set(Ecore_Evas *ee, int rotation, int resize); void _ecore_evas_wl_common_borderless_set(Ecore_Evas *ee, Eina_Bool on); 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 49e6330..86c9e1ad1 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 @@ -241,8 +241,8 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, unsigned int parent, evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_POST, _ecore_evas_wl_common_render_updates, ee); - 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) -- 2.7.4