diff options
author | Sebastian Dransfeld <sd@tango.flipp.net> | 2013-11-29 22:20:13 +0100 |
---|---|---|
committer | Sebastian Dransfeld <sd@tango.flipp.net> | 2013-11-29 22:20:50 +0100 |
commit | b47e7651aa1eb697bd12f95f73c9afc3fd5a3e84 (patch) | |
tree | 4185bf3132de914f5b0b24adc61c4579010d7201 /src/tests/efreet | |
parent | 575f466a1022b1827d7cbbf6f205d3ee674f4bec (diff) | |
download | efl-b47e7651aa1eb697bd12f95f73c9afc3fd5a3e84.tar.gz |
efreet: add async menu test
Diffstat (limited to 'src/tests/efreet')
-rw-r--r-- | src/tests/efreet/efreet_async_test.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/tests/efreet/efreet_async_test.c b/src/tests/efreet/efreet_async_test.c new file mode 100644 index 0000000000..2c3618987b --- /dev/null +++ b/src/tests/efreet/efreet_async_test.c @@ -0,0 +1,72 @@ +#include <unistd.h> +#include <Eina.h> +#include <Ecore.h> +#include <Efreet.h> + +#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; +} |