ecore: Fix obvious crash with legacy timers

ecore_timer_del() checks a flag "inside_call" that can be
set before calling the timer cb... but it was never reset
to 0. So, all legacy timers would keep on ticking forever
and ever, until they return CANCEL.

Anyway, I find the distinction between eo_del and
ecore_timer_del very troubling. eo_del() should work
on a legacy timer. Ping @cedric. Maybe override eo_del()?

Fixes T3898
This commit is contained in:
Jean-Philippe Andre 2016-07-04 15:10:17 +09:00
parent e2d7c11665
commit 3671dd64c6
1 changed files with 2 additions and 0 deletions

View File

@ -168,6 +168,8 @@ _ecore_timer_legacy_tick(void *data, const Eo_Event *event)
if (!_ecore_call_task_cb(legacy->func, (void*)legacy->data) ||
legacy->delete_me)
eo_del(event->object);
else
legacy->inside_call = 0;
}
EO_CALLBACKS_ARRAY_DEFINE(legacy_timer,