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