discomfitor pushed a commit to branch master.

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

commit 2936a4ccfee8a824be35d8fd7c8d9df38369f745
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Sat Jun 20 12:31:32 2015 -0400

    handle compositor animation race condition when changing effects
    
    this is more of an academic case than any existing scenario, but
    it's possible that an effect may be stopped by something attempting
    to trigger another effect during the animation
---
 src/bin/e_comp_object.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 14cf7f9..9e0bba1 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -3612,10 +3612,20 @@ e_comp_object_effect_set(Evas_Object *obj, const char 
*effect)
         if (!e_theme_edje_object_set(cw->effect_obj, "base/theme/comp", buf))
           if (!e_theme_edje_object_set(cw->effect_obj, "base/theme/comp", 
"e/comp/effects/none"))
             {
+               if (cw->effect_running)
+                 {
+                    if (!e_comp_object_effect_stop(obj, 
evas_object_data_get(cw->effect_obj, "_e_comp.end_cb")))
+                      return EINA_FALSE;
+                 }
                cw->effect_set = EINA_FALSE;
                return cw->effect_set;
             }
      }
+   if (cw->effect_running)
+     {
+        if (!e_comp_object_effect_stop(obj, 
evas_object_data_get(cw->effect_obj, "_e_comp.end_cb")))
+          return EINA_FALSE;
+     }
    edje_object_part_swallow(cw->effect_obj, "e.swallow.content", cw->shobj);
    if (cw->effect_clip)
      {

-- 


Reply via email to