From 2936a4ccfee8a824be35d8fd7c8d9df38369f745 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Sat, 20 Jun 2015 12:31:32 -0400 Subject: [PATCH] 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) { -- 2.7.4