aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDerek Foreman <derek.foreman.samsung@gmail.com>2018-08-08 14:58:44 -0400
committerMike Blumenkrantz <zmike@samsung.com>2018-08-08 14:58:44 -0400
commitc45348770cf37c9cecd0459d115d9b019bf1ad3e (patch)
tree7f6ff792a7c8279be0bac9c55e4a3ff031feb181
parentefl/ui_format: Use STRING type for format strings that contain %% (diff)
downloadefl-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.c25
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)
{