From: Mike Blumenkrantz Date: Fri, 19 Jun 2015 20:28:13 +0000 (-0400) Subject: fix animation refcounting when toggling object visibility very quickly X-Git-Tag: upstream/0.20.0~766 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dc444f548998c5c16c2d43d6ba41587c1cf8bc3e;p=platform%2Fupstream%2Fenlightenment.git fix animation refcounting when toggling object visibility very quickly previously the animating flag would receive an additional increment for every effect, even if it was currently animating a prior effect, leading to objects which were never deleted --- diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 473b1fe..14cf7f9 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -714,8 +714,10 @@ _e_comp_object_effect_visibility_start(E_Comp_Object *cw, Eina_Bool state) int x, y, zw, zh; if ((!cw->visibility_effect) || (!e_comp_object_effect_allowed_get(cw->smart_obj))) return EINA_TRUE;; - _e_comp_object_animating_begin(cw); - e_comp_object_effect_stop(cw->smart_obj, _e_comp_object_done_defer); + if (!cw->effect_running) + _e_comp_object_animating_begin(cw); + if (!e_comp_object_effect_stop(cw->smart_obj, _e_comp_object_done_defer)) + return _e_comp_object_animating_end(cw); if (!e_comp_object_effect_set(cw->smart_obj, cw->visibility_effect)) return _e_comp_object_animating_end(cw); /* mouse position is not available for some windows under X11