derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7e0beea3f599c56dd2a99d4eaec820723cf6bda2
commit 7e0beea3f599c56dd2a99d4eaec820723cf6bda2 Author: Derek Foreman <[email protected]> Date: Tue Jul 11 16:13:46 2017 -0500 ecore_evas: Refactor event catchers to call custom_tick_begin/end Make the event catcher functions call the custom_tick_begin/end helpers instead of directly calling the engine functions. --- src/lib/ecore_evas/ecore_evas.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c index a9657add9c..ffc4e6f75d 100644 --- a/src/lib/ecore_evas/ecore_evas.c +++ b/src/lib/ecore_evas/ecore_evas.c @@ -3158,19 +3158,22 @@ _check_animator_event_catcher_add(void *data, const Efl_Event *event) { if (array[i].desc == EFL_EVENT_ANIMATOR_TICK) { - if (ee->anim_count++ > 0) return; - INF("Setting up animator for %p from '%s' with title '%s'.", ee->evas, ee->driver, ee->prop.title); + if (!ee->anim_count) + INF("Setting up animator for %p from '%s' with title '%s'.", ee->evas, ee->driver, ee->prop.title); if (ee->engine.func->fn_animator_register && ee->engine.func->fn_animator_unregister) { // Backend support per window vsync - ee->engine.func->fn_animator_register(ee); + _ecore_evas_custom_tick_begin(ee); + + if (ee->anim_count > 0) return; if (!_general_tick) _general_tick = ee; } else { // Backend doesn't support per window vsync, fallback to generic support + if (ee->anim_count++ > 0) return; ee->anim = ecore_animator_add(_ecore_evas_animator_fallback, ee); } @@ -3192,19 +3195,21 @@ _check_animator_event_catcher_del(void *data, const Efl_Event *event) { if (array[i].desc == EFL_EVENT_ANIMATOR_TICK) { - if ((--ee->anim_count) > 0) return; + if (ee->anim_count == 1) + INF("Unsetting up animator for %p from '%s' titled '%s'.", ee->evas, ee->driver, ee->prop.title); - INF("Unsetting up animator for %p from '%s' titled '%s'.", ee->evas, ee->driver, ee->prop.title); if (ee->engine.func->fn_animator_register && ee->engine.func->fn_animator_unregister) { // Backend support per window vsync - ee->engine.func->fn_animator_unregister(ee); + _ecore_evas_custom_tick_end(ee); + if (ee->anim_count > 0) return; if (_general_tick == ee) _ecore_evas_tick_source_find(); } else { // Backend doesn't support per window vsync, fallback to generic support + if (--ee->anim_count > 0) return; ecore_animator_del(ee->anim); ee->anim = NULL; } --
