From dc444f548998c5c16c2d43d6ba41587c1cf8bc3e Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 19 Jun 2015 16:28:13 -0400 Subject: [PATCH] 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 --- src/bin/e_comp_object.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 473b1fef8..14cf7f99c 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