diff options
author | Derek Foreman <derek.foreman.samsung@gmail.com> | 2018-08-08 14:58:44 -0400 |
---|---|---|
committer | Mike Blumenkrantz <zmike@samsung.com> | 2018-08-08 14:58:44 -0400 |
commit | c45348770cf37c9cecd0459d115d9b019bf1ad3e (patch) | |
tree | 7f6ff792a7c8279be0bac9c55e4a3ff031feb181 | |
parent | efl/ui_format: Use STRING type for format strings that contain %% (diff) | |
download | efl-c45348770cf37c9cecd0459d115d9b019bf1ad3e.tar.gz |
Revert "ee_wayland: Remove pointless ack_configure"
Summary:
This reverts commit a61f254f19df163c860235e6c19e0d65ce9eb0c4.
and a follow up commit that removed some warnings
Apparently this is instrumental in enlightenment's window maximize
animation processing.
The removed bits would force an ack configure when an inbound
configure didn't result in a change that would cause a re-render.
Since this calculation needs knowledge of state ecore_wl2 doesn't
track, it does need to happen here.
ref https://phab.enlightenment.org/T7243
Reviewers: zmike
Reviewed By: zmike
Subscribers: cedric, #reviewers, #committers, zmike
Tags: #efl
Maniphest Tasks: https://phab.enlightenment.org/T7243
Differential Revision: https://phab.enlightenment.org/D6783
-rw-r--r-- | src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c | 25 |
1 files changed, 20 insertions, 5 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 8fdd6d9846..6aa098e37f 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 @@ -566,9 +566,9 @@ _ecore_evas_wl_common_cb_window_configure(void *data EINA_UNUSED, int type EINA_ Ecore_Evas *ee; Ecore_Evas_Engine_Wl_Data *wdata; Ecore_Wl2_Event_Window_Configure *ev; - int nw = 0, nh = 0, fw, fh, sw, sh, contentw, contenth; + int nw = 0, nh = 0, fw, fh, pfw, pfh, sw, sh, contentw, contenth; int framew, frameh; - Eina_Bool active, prev_max, prev_full; + Eina_Bool active, prev_max, prev_full, state_change = EINA_FALSE; LOGFN(__FILE__, __LINE__, __FUNCTION__); @@ -605,13 +605,14 @@ _ecore_evas_wl_common_cb_window_configure(void *data EINA_UNUSED, int type EINA_ evas_output_framespace_get(ee->evas, NULL, NULL, &framew, &frameh); contentw = wdata->win->set_config.geometry.w - (framew - sw); contenth = wdata->win->set_config.geometry.h - (frameh - sh); - fw = wdata->win->set_config.geometry.w - contentw; - fh = wdata->win->set_config.geometry.h - contenth; + pfw = fw = wdata->win->set_config.geometry.w - contentw; + pfh = fh = wdata->win->set_config.geometry.h - contenth; if ((prev_max != ee->prop.maximized) || (prev_full != ee->prop.fullscreen) || (active != wdata->activated)) { + state_change = EINA_TRUE; _ecore_evas_wl_common_state_update(ee); sw = ee->shadow.l + ee->shadow.r; sh = ee->shadow.t + ee->shadow.b; @@ -622,7 +623,21 @@ _ecore_evas_wl_common_cb_window_configure(void *data EINA_UNUSED, int type EINA_ fh = wdata->win->set_config.geometry.h - contenth; } if ((!nw) && (!nh)) - return ECORE_CALLBACK_RENEW; + { + if ((wdata->win->set_config.serial != wdata->win->req_config.serial) && + wdata->win->req_config.serial && wdata->win->surface && + ((!state_change) || ((pfw == fw) && (pfh == fh)))) + { + if (wdata->win->xdg_configure_ack) + wdata->win->xdg_configure_ack(wdata->win->xdg_surface, + wdata->win->req_config.serial); + if (wdata->win->zxdg_configure_ack) + wdata->win->zxdg_configure_ack(wdata->win->zxdg_surface, + wdata->win->req_config.serial); + wdata->win->set_config.serial = wdata->win->req_config.serial; + } + return ECORE_CALLBACK_RENEW; + } if (!ee->prop.borderless) { |