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 <cpmichael@osg.samsung.com>
This commit is contained in:
Chris Michael 2015-12-09 09:38:01 -05:00
parent 18b66a3192
commit abbfde9d68
4 changed files with 19 additions and 7 deletions

View File

@ -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);
}

View File

@ -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);

View File

@ -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);

View File

@ -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);