cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8215d9832c3ae0e2889a528b08f8b462fb90cd69
commit 8215d9832c3ae0e2889a528b08f8b462fb90cd69 Author: Cedric BAIL <ced...@osg.samsung.com> Date: Mon Nov 14 11:53:01 2016 -0800 ecore: introduce adjusting main loop time on animator. --- src/lib/ecore_evas/ecore_evas.c | 8 +++++--- src/lib/ecore_evas/ecore_evas_private.h | 2 +- src/modules/ecore_evas/engines/drm/ecore_evas_drm.c | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c index d48394e..c92d5cd 100644 --- a/src/lib/ecore_evas/ecore_evas.c +++ b/src/lib/ecore_evas/ecore_evas.c @@ -2438,7 +2438,7 @@ _ecore_evas_fps_debug_rendertime_add(double t) static Ecore_Evas *_general_tick = NULL; EAPI void -ecore_evas_animator_tick(Ecore_Evas *ee, Eina_Rectangle *viewport) +ecore_evas_animator_tick(Ecore_Evas *ee, Eina_Rectangle *viewport, double loop_time) { Ecore_Evas *subee; Eina_List *l; @@ -2453,13 +2453,15 @@ ecore_evas_animator_tick(Ecore_Evas *ee, Eina_Rectangle *viewport) a.update_area = *viewport; } + ecore_loop_time_set(loop_time); + ee->animator_ran = EINA_TRUE; efl_event_callback_legacy_call(ee->evas, EFL_EVENT_ANIMATOR_TICK, &a); // FIXME: We do not support partial animator in the subcanvas EINA_LIST_FOREACH(ee->sub_ecore_evas, l, subee) { - ecore_evas_animator_tick(subee, NULL); + ecore_evas_animator_tick(subee, NULL, loop_time); } // We are the source of sync for general animator. @@ -2501,7 +2503,7 @@ _ecore_evas_tick_source_find(void) static Eina_Bool _ecore_evas_animator_fallback(void *data) { - ecore_evas_animator_tick(data, NULL); + ecore_evas_animator_tick(data, NULL, ecore_loop_time_get()); return EINA_TRUE; } diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h index 432152f..e4642c7 100644 --- a/src/lib/ecore_evas/ecore_evas_private.h +++ b/src/lib/ecore_evas/ecore_evas_private.h @@ -436,7 +436,7 @@ const Eina_List *_ecore_evas_available_engines_get(void); void _ecore_evas_engine_init(void); void _ecore_evas_engine_shutdown(void); -EAPI void ecore_evas_animator_tick(Ecore_Evas *ee, Eina_Rectangle *viewport); +EAPI void ecore_evas_animator_tick(Ecore_Evas *ee, Eina_Rectangle *viewport, double loop_time); Eina_Module *_ecore_evas_vnc_server_module_load(void); diff --git a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c index ba97f5d..79c1c58 100644 --- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c +++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c @@ -627,7 +627,7 @@ _cb_pageflip(int fd EINA_UNUSED, unsigned int frame EINA_UNUSED, unsigned int se if (edata->ticking) { - ecore_evas_animator_tick(ee, NULL); + ecore_evas_animator_tick(ee, NULL, ecore_loop_time_get()); ecore_drm2_fb_flip(NULL, edata->output); } else if (ret) ecore_drm2_fb_flip(NULL, edata->output); --