_pui_ani_frame_cb(void *data)
{
Eina_Bool ret;
+ Ecore_Timer *timer = NULL;
pui_ani_t *ani = (pui_ani_t *)data;
if (ret && PUI_ANI_STATUS_STARTED == ani->status)
pui_ani_status_update(ani, PUI_ANI_STATUS_RUNNING);
- return EINA_TRUE;
+ ecore_timer_del(ani->frame_cb_timer);
+ ani->frame_cb_timer = NULL;
+
+ timer = ecore_timer_add(ani->frame_interval, _pui_ani_frame_cb, ani);
+
+ if (!timer)
+ {
+ pui_err("Failed to add ecore timer !\n");
+ return 0;
+ }
+
+ ani->frame_cb_timer = timer;
+
+ return EINA_FALSE;
}
pui_bool
{
ei = ani_func->ani_stop(ani, force);
+ if (ani->frame_cb_timer)
+ pui_ani_remove_frame_cb(ani);
+
if (ei != PUI_INT_ERROR_NONE)
{
pui_err("Failied on stopping animation ! (id:%s)\n", ani->id);
if (ani->status != PUI_ANI_STATUS_STOPPED)
pui_ani_status_update(ani, PUI_ANI_STATUS_STOPPED);
- if (ani->frame_cb_timer)
- pui_ani_remove_frame_cb(ani);
-
return PUI_ERROR_INTERNAL;
}