englebass pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=b47e7651aa1eb697bd12f95f73c9afc3fd5a3e84

commit b47e7651aa1eb697bd12f95f73c9afc3fd5a3e84
Author: Sebastian Dransfeld <[email protected]>
Date:   Fri Nov 29 22:20:13 2013 +0100

    efreet: add async menu test
---
 src/Makefile_Efreet.am               | 11 ++++++
 src/tests/efreet/efreet_async_test.c | 72 ++++++++++++++++++++++++++++++++++++
 2 files changed, 83 insertions(+)

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 <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;
+}

-- 


Reply via email to