discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=0e416648df05ce76fe6a5d7869a75d569c7f9157
commit 0e416648df05ce76fe6a5d7869a75d569c7f9157 Author: Mike Blumenkrantz <zm...@osg.samsung.com> Date: Tue Jun 7 11:23:24 2016 -0400 optimize e_client_res_change_geometry_restore() performing the entire unfullscreen/unmaximize routine causes a significant amount of overhead, and it also breaks window geometries in wayland due to synchronization --- src/bin/e_client.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/bin/e_client.c b/src/bin/e_client.c index b1b1260..427940c 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -2949,16 +2949,32 @@ e_client_res_change_geometry_restore(E_Client *ec) if (ec->fullscreen) { - e_client_unfullscreen(ec); - e_client_fullscreen(ec, e_config->fullscreen_policy); + if ((eina_list_count(e_comp->zones) > 1) || + (e_config->fullscreen_policy == E_FULLSCREEN_RESIZE)) + evas_object_geometry_set(ec->frame, ec->zone->x, ec->zone->y, ec->zone->w, ec->zone->h); + else + { + e_client_unfullscreen(ec); + e_client_fullscreen(ec, e_config->fullscreen_policy); + } } else if (ec->maximized != E_MAXIMIZE_NONE) { - E_Maximize max; + int x, y, w, h; - max = ec->maximized; - e_client_unmaximize(ec, E_MAXIMIZE_BOTH); - e_client_maximize(ec, max); + if (e_client_maximize_geometry_get(ec, ec->maximized, &x, &y, &w, &h)) + { + Eina_Bool override = ec->maximize_override; + ec->maximize_override = 1; + evas_object_geometry_set(ec->frame, x, y, w, h); + ec->maximize_override = override; + } + else + { + E_Maximize max = ec->maximized; + e_client_unmaximize(ec, E_MAXIMIZE_BOTH); + e_client_maximize(ec, max); + } } else { --