diff --git a/src/bin/main.c b/src/bin/main.c index cc812c8..4e26070 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -1135,6 +1135,7 @@ static const Ecore_Getopt optdesc = { ECORE_GETOPT_STORE_TRUE('m', "compat", "Output compatible with expedite-cmp"), ECORE_GETOPT_STORE_TRUE('y', "async", "Enable async output"), ECORE_GETOPT_STORE_TRUE('a', "all", "Run all tests"), + ECORE_GETOPT_STORE_FALSE('i', "tick", "Follow output animator tick"), ECORE_GETOPT_LICENSE('L', "license"), ECORE_GETOPT_COPYRIGHT('C', "copyright"), ECORE_GETOPT_VERSION('V', "version"), @@ -1171,6 +1172,8 @@ static const Expedite_Resolution resolutions[] = { { NULL, 0, 0 } }; +Eina_Bool tick = EINA_TRUE; + static void _cb_delete(Ecore_Evas *ee EINA_UNUSED) { @@ -1180,6 +1183,22 @@ _cb_delete(Ecore_Evas *ee EINA_UNUSED) static Eina_Bool _cb_anim(void *data EINA_UNUSED) { + static double last = 0; + static double avg = 0; + static unsigned long long count = 0; + double current; + + current = ecore_loop_time_get(); + if (count++) + { + avg += current - last; + if (abs(current - last - (avg / (count - 1))) > 0.05) + fprintf(stderr, "delta: %f vs %f (%f)\n", + current - last, + avg / (count - 1)); + } + last = current; + ui_loop(NULL); return EINA_TRUE; } @@ -1230,6 +1249,7 @@ main(int argc, char **argv) ECORE_GETOPT_VALUE_BOOL(cmp_report), ECORE_GETOPT_VALUE_BOOL(async), ECORE_GETOPT_VALUE_BOOL(all_tests), + ECORE_GETOPT_VALUE_BOOL(tick), ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_BOOL(quit_option), ECORE_GETOPT_VALUE_BOOL(quit_option), @@ -1351,7 +1371,7 @@ main(int argc, char **argv) choosen_engine = ecore_evas_engine_name_get(ee); ecore_evas_callback_delete_request_set(ee, _cb_delete); - ecore_evas_callback_post_render_set(ee, _cb_post_render); + if (tick) ecore_evas_callback_post_render_set(ee, _cb_post_render); evas = ecore_evas_get(ee); @@ -1390,7 +1410,7 @@ main(int argc, char **argv) if (all_tests) ui_all(); anim = ecore_animator_add(_cb_anim, ee); - ecore_animator_custom_tick(); + if (tick) ecore_animator_custom_tick(); ecore_main_loop_begin(); ecore_animator_del(anim); diff --git a/src/bin/main.h b/src/bin/main.h index cba52c7..cd481b1 100644 --- a/src/bin/main.h +++ b/src/bin/main.h @@ -52,6 +52,7 @@ extern const char *choosen_engine; extern Eina_Bool fullscreen; extern Eina_Bool cmp_report; extern char *output; +extern Eina_Bool tick; typedef struct _Expedite_Resolution Expedite_Resolution; typedef struct _Expedite_Engine Expedite_Engine; diff --git a/src/bin/ui.c b/src/bin/ui.c index 40e4124..78e3db1 100644 --- a/src/bin/ui.c +++ b/src/bin/ui.c @@ -664,8 +664,11 @@ ui_func_set(void (*kfunc) (const char *key), void (*lfunc) (double t, int f)) f_loop = f_start = 0; ui_fps(0.0); - ecore_animator_source_set(ECORE_ANIMATOR_SOURCE_CUSTOM); - ecore_animator_custom_tick(); + if (tick) + { + ecore_animator_source_set(ECORE_ANIMATOR_SOURCE_CUSTOM); + ecore_animator_custom_tick(); + } } void