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
      {

-- 


Reply via email to