discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=a7adf21c884b8b9f1f0750ae8a626c1de29ace3a

commit a7adf21c884b8b9f1f0750ae8a626c1de29ace3a
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Fri Apr 8 16:01:55 2016 -0400

    add E_Client->maximize_anims_disabled to selectively disable maximize anims
    
    for some clients it's impossible to animate resizing due to various race 
conditions
    being created which will break the client
---
 src/bin/e_client.c | 9 ++++++---
 src/bin/e_client.h | 8 +++++---
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 676a664..1ab8f67 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -1549,7 +1549,8 @@ _e_client_maximize_done(void *data, E_Efx_Map_Data *emd 
EINA_UNUSED, Evas_Object
 static void
 _e_client_maximize_run(E_Client *ec, int x, int y, int w, int h)
 {
-   if (e_config->window_maximize_animate && (!starting) && 
(!ec->changes.need_maximize))
+   if (e_config->window_maximize_animate && (!ec->maximize_anims_disabled) &&
+       (!starting) && (!ec->changes.need_maximize))
      {
         Evas_Object *agent;
 
@@ -3812,7 +3813,9 @@ e_client_maximize(E_Client *ec, E_Maximize max)
       e_client_maximize_geometry_get(ec, max, &x, &y, &w, &h);
       _e_client_maximize_run(ec, x, y, w, h);
    }
-   if (ec->maximize_override && (starting || ec->changes.need_maximize || 
(!e_config->window_maximize_animate)))
+   if (ec->maximize_override && (ec->maximize_anims_disabled || starting ||
+                                 ec->changes.need_maximize ||
+                                 (!e_config->window_maximize_animate)))
      ec->maximize_override = override;
 
    /* Remove previous type */
@@ -3957,7 +3960,7 @@ e_client_unmaximize(E_Client *ec, E_Maximize max)
                   _e_client_frame_update(ec);
                   e_hints_window_size_unset(ec);
                }
-             if (e_config->window_maximize_animate)
+             if (e_config->window_maximize_animate && 
(!ec->maximize_anims_disabled))
                ec->maximize_override = 1;
              evas_object_smart_callback_call(ec->frame, "unmaximize", NULL);
              e_client_resize_limit(ec, &w, &h);
diff --git a/src/bin/e_client.h b/src/bin/e_client.h
index 55c9e2f..5d8295c 100644
--- a/src/bin/e_client.h
+++ b/src/bin/e_client.h
@@ -684,6 +684,10 @@ struct E_Client
 
    E_Focus_Policy             focus_policy_override;
 
+#ifdef HAVE_WAYLAND
+   uuid_t uuid;
+#endif
+
    Eina_Bool override : 1;
    Eina_Bool input_only : 1;
    Eina_Bool dialog : 1;
@@ -695,12 +699,10 @@ struct E_Client
    Eina_Bool ignored : 1; // client is comp-ignored
    Eina_Bool no_shape_cut : 1; // client shape should not be cut
    Eina_Bool maximize_override : 1; // client is doing crazy stuff and should 
"just do it" when moving/resizing
+   Eina_Bool maximize_anims_disabled : 1; // client cannot invoke anims or it 
will break
    Eina_Bool keyboard_resizing : 1;
 
    Eina_Bool on_post_updates : 1; // client is on the post update list
-#ifdef HAVE_WAYLAND
-   uuid_t uuid;
-#endif
 };
 
 #define e_client_focus_policy_click(ec) \

-- 


Reply via email to