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) { --