summaryrefslogtreecommitdiff
path: root/src/tests/efreet
diff options
context:
space:
mode:
authorSebastian Dransfeld <sd@tango.flipp.net>2013-11-29 22:20:13 +0100
committerSebastian Dransfeld <sd@tango.flipp.net>2013-11-29 22:20:50 +0100
commitb47e7651aa1eb697bd12f95f73c9afc3fd5a3e84 (patch)
tree4185bf3132de914f5b0b24adc61c4579010d7201 /src/tests/efreet
parent575f466a1022b1827d7cbbf6f205d3ee674f4bec (diff)
downloadefl-b47e7651aa1eb697bd12f95f73c9afc3fd5a3e84.tar.gz
efreet: add async menu test
Diffstat (limited to 'src/tests/efreet')
-rw-r--r--src/tests/efreet/efreet_async_test.c72
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;
+}