From 75a149a06bca62af5ceb3fca602372d548fcbdcb Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Tue, 20 Oct 2015 12:18:59 +0900 Subject: [PATCH] elm test - genlist test - add bounce option test for testing performance for release we need to test performance - esp of evas and eo in real life usage and scroling is just such one. this adds a simple automated scrolling test to genlist test (hit the button or ELM_TEST_AUTOBOUNCE=1 elementary_test -to genlist) so you can get consistent input and benchmark info --- src/bin/test_genlist.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 68 insertions(+), 6 deletions(-) diff --git a/src/bin/test_genlist.c b/src/bin/test_genlist.c index 6f3f7a2..cf77362 100644 --- a/src/bin/test_genlist.c +++ b/src/bin/test_genlist.c @@ -279,9 +279,9 @@ _gl_longpress(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_ } static void -_gl_changed(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) +_gl_changed(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - printf("changed %p\n", event_info); +// printf("changed %p\n", event_info); } static void @@ -292,18 +292,64 @@ _cleanup_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void free(api); } +typedef struct +{ + Evas_Object *gl; + Elm_Object_Item *it1, *it2; + int state; +} Bounce; + +static Eina_Bool +_bounce_cb(void *data) +{ + Bounce *bounce = data; + bounce->state++; + if (bounce->state > 1) bounce->state = 0; + if (bounce->state == 1) + elm_genlist_item_bring_in(bounce->it2, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE); + else + elm_genlist_item_bring_in(bounce->it1, ELM_GENLIST_ITEM_SCROLLTO_MIDDLE); + return EINA_TRUE; +} + +static void +_btbounce_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) +{ + Ecore_Timer *tim = evas_object_data_get(obj, "timer"); + if (!tim) + { + _bounce_cb(data); + tim = ecore_timer_add(0.5, _bounce_cb, data); + evas_object_data_set(obj, "timer", tim); + } +} + +static void +_btdel_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) +{ + Bounce *bounce = data; + Ecore_Timer *tim = evas_object_data_get(obj, "timer"); + if (tim) + { + ecore_timer_del(tim); + evas_object_data_del(obj, "timer"); + } + free(bounce); +} + void test_genlist(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Evas_Object *win, *gl, *bt_50, *bt_1500, *bx, *bxx, *bt; Evas_Object *over; Elm_Object_Item *gli; - int i; + int i, max; + Bounce *bounce; api_data *api = calloc(1, sizeof(api_data)); win = elm_win_util_standard_add("genlist", "Genlist"); elm_win_autodel_set(win, EINA_TRUE); - evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api); + evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _cleanup_cb, api); bxx = elm_box_add(win); evas_object_size_hint_weight_set(bxx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); @@ -364,7 +410,18 @@ test_genlist(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_i evas_object_show(bt_1500); elm_box_pack_end(bx, bt_1500); - for (i = 0; i < 2000; i++) + bounce = calloc(1, sizeof(Bounce)); + bt = elm_button_add(win); + elm_object_text_set(bt, "Bounce"); + evas_object_show(bt); + elm_box_pack_end(bx, bt); + bounce->gl = gl; + evas_object_smart_callback_add(bt, "clicked", _btbounce_cb, bounce); + evas_object_event_callback_add(bt, EVAS_CALLBACK_DEL, _btdel_cb, bounce); + + max = 2000; + if (getenv("ELM_TEST_AUTOBOUNCE")) max = 200; + for (i = 0; i < max; i++) { if (i == 5) { @@ -389,12 +446,17 @@ test_genlist(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_i evas_object_smart_callback_add(bt_50, "clicked", _bt50_cb, gli); else if (i == 1500) evas_object_smart_callback_add(bt_1500, "clicked", _bt1500_cb, gli); + + if (i == 100) bounce->it1 = gli; + if (i == 120) bounce->it2 = gli; } elm_genlist_item_class_free(api->itc1); - evas_object_resize(win, 480, 800); + evas_object_resize(win, 480, 400); explode_win_enable(win); evas_object_show(win); + + if (max == 200) _btbounce_cb(bounce, bt, NULL); } -- 2.7.4