From: Sebastian Dransfeld Date: Fri, 29 Nov 2013 21:20:13 +0000 (+0100) Subject: efreet: add async menu test X-Git-Tag: v1.8.0~11 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b47e7651aa1eb697bd12f95f73c9afc3fd5a3e84;p=platform%2Fupstream%2Fefl.git efreet: add async menu test --- diff --git a/src/Makefile_Efreet.am b/src/Makefile_Efreet.am index 725760a..3225316 100644 --- a/src/Makefile_Efreet.am +++ b/src/Makefile_Efreet.am @@ -108,6 +108,7 @@ if EFL_ENABLE_TESTS noinst_PROGRAMS += \ tests/efreet/efreet_test \ +tests/efreet/efreet_async_test \ tests/efreet/efreet_spec_test \ tests/efreet/efreet_cache_test \ tests/efreet/efreet_icon_cache_dump \ @@ -137,6 +138,16 @@ tests/efreet/ef_test.h \ tests/efreet/ef_utils.c \ tests/efreet/main.c +# efreet_async_test +tests_efreet_efreet_async_test_CPPFLAGS = -I$(top_builddir)/src/lib/efl $(EFREET_COMMON_CPPFLAGS) +tests_efreet_efreet_async_test_LDADD = \ +@USE_EFREET_LIBS@ +tests_efreet_efreet_async_test_DEPENDENCIES = \ +@USE_EFREET_INTERNAL_LIBS@ + +tests_efreet_efreet_async_test_SOURCES = \ +tests/efreet/efreet_async_test.c + # efreet_spec_test tests_efreet_efreet_spec_test_CPPFLAGS = -I$(top_builddir)/src/lib/efl $(EFREET_COMMON_CPPFLAGS) tests_efreet_efreet_spec_test_LDADD = @USE_EFREET_LIBS@ diff --git a/src/tests/efreet/efreet_async_test.c b/src/tests/efreet/efreet_async_test.c new file mode 100644 index 0000000..2c36189 --- /dev/null +++ b/src/tests/efreet/efreet_async_test.c @@ -0,0 +1,72 @@ +#include +#include +#include +#include + +#define TCOUNT 10 +#define MCOUNT 10 +#define MENU "/etc/xdg/menus/applications.menu" + +static int count = 0; +static Eina_Lock lock; +static Eina_Thread threads[TCOUNT]; + +static void +menu_cb(void *data EINA_UNUSED, Efreet_Menu *menu) +{ + efreet_menu_dump(menu, ""); + eina_lock_take(&lock); + count++; + fprintf(stderr, "count: %d\n", count); + if (count == (MCOUNT * TCOUNT)) ecore_main_loop_quit(); + eina_lock_release(&lock); + efreet_menu_free(menu); +} + +static void * +thread_cb(void *data EINA_UNUSED, Eina_Thread t EINA_UNUSED) +{ + int i; + for (i = 0; i < MCOUNT; i++) { + efreet_menu_async_parse(MENU, menu_cb, NULL); + usleep(1e5); + } + return NULL; +} + +static void +create_threads(void) +{ + int i; + + for (i = 0; i < TCOUNT; i++) + { + if (!eina_thread_create(&threads[i], EINA_THREAD_NORMAL, -1, thread_cb, NULL)) + fprintf(stderr, "error: eina_thread_create\n"); + usleep(1e5); + } +} + +int +main(void) +{ + int i; + + eina_init(); + ecore_init(); + efreet_init(); + + eina_lock_new(&lock); + + create_threads(); + ecore_main_loop_begin(); + for (i = 0; i < TCOUNT; i++) + eina_thread_join(threads[i]); + + eina_lock_free(&lock); + + efreet_shutdown(); + ecore_shutdown(); + eina_shutdown(); + return 0; +}