* Fix case where SSL certificates would not be used
* Added ECORE_CON_REMOTE_CORK for applying TCP_CORK to sends
+
+2011-12-12 Carsten Haitzler (The Rasterman)
+
+ * Fix bug where an animator that just keeps adding another
+ animator keeps the animator handler in an infinite loop. Do
+ the same as timers and mark them as "just added" to skip in
+ this run of animators
+
Eina_Bool delete_me : 1;
Eina_Bool suspended : 1;
+ Eina_Bool just_added : 1;
};
GENERIC_ALLOC_SIZE_DECLARE(Ecore_Animator);
EINA_INLIST_FOREACH(animators, animator)
{
- if (!animator->delete_me && !animator->suspended)
+ animator->just_added = EINA_FALSE;
+ }
+ EINA_INLIST_FOREACH(animators, animator)
+ {
+ if ((!animator->delete_me) &&
+ (!animator->suspended) &&
+ (!animator->just_added))
{
if (!_ecore_call_task_cb(animator->func, animator->data))
{
animators_delete_me++;
}
}
+ else animator->just_added = EINA_FALSE;
}
if (animators_delete_me)
{
ECORE_MAGIC_SET(animator, ECORE_MAGIC_ANIMATOR);
animator->func = func;
animator->data = (void *)data;
+ animator->just_added = EINA_TRUE;
animators = (Ecore_Animator *)eina_inlist_append(EINA_INLIST_GET(animators), EINA_INLIST_GET(animator));
_begin_tick();
return animator;