From 1d28bcdcf1f93af97dec85bdcfeae9674b6bb26c Mon Sep 17 00:00:00 2001 From: michelle legrand Date: Fri, 30 Jan 2015 10:49:52 +0100 Subject: [PATCH] eo: fix to pass make check on windows @fix Signed-off-by: Cedric BAIL --- src/tests/eo/suite/eo_test_threaded_calls.c | 23 ++++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/tests/eo/suite/eo_test_threaded_calls.c b/src/tests/eo/suite/eo_test_threaded_calls.c index e6f60e3738..33520f20c5 100644 --- a/src/tests/eo/suite/eo_test_threaded_calls.c +++ b/src/tests/eo/suite/eo_test_threaded_calls.c @@ -8,6 +8,7 @@ #include "eo_suite.h" static Eina_Barrier barrier; +static Eina_Barrier barrier0; static Eina_Spinlock locks[2]; typedef struct @@ -37,14 +38,14 @@ _try_swap_stack(Eo *obj EINA_UNUSED, void *class_data) if (pd->v == 0 ) { - eina_spinlock_release(&locks[0]); - eina_spinlock_take(&locks[1]); + fail_if(EINA_LOCK_SUCCEED != eina_spinlock_release(&locks[0])); + fail_if(EINA_LOCK_SUCCEED != eina_spinlock_take(&locks[1])); eina_barrier_wait(&barrier); } else if (pd->v == 1 ) { eina_barrier_wait(&barrier); - eina_spinlock_take(&locks[1]); + fail_if(EINA_LOCK_SUCCEED != eina_spinlock_take(&locks[1])); } } @@ -82,14 +83,20 @@ _thread_job(void *data, Eina_Thread t EINA_UNUSED) Eo *obj; int v = (int) (uintptr_t) data; - if (v == 1) - eina_spinlock_take(&locks[0]); + if (v == 0) { + fail_if(EINA_LOCK_SUCCEED != eina_spinlock_take(&locks[0])); + eina_barrier_wait(&barrier0); + } + else { + eina_barrier_wait(&barrier0); + fail_if(EINA_LOCK_SUCCEED != eina_spinlock_take(&locks[0])); + } obj = eo_add(THREAD_TEST_CLASS, NULL, thread_test_constructor(v)); eo_do(obj, thread_test_try_swap_stack(), v = thread_test_v_get()); - eina_spinlock_release(&locks[1]); + fail_if(EINA_LOCK_SUCCEED != eina_spinlock_release(&locks[1])); eo_unref(obj); @@ -105,8 +112,7 @@ START_TEST(eo_threaded_calls_test) fail_if(!eina_spinlock_new(&locks[0])); fail_if(!eina_spinlock_new(&locks[1])); fail_if(!eina_barrier_new(&barrier, 2)); - - eina_spinlock_take(&locks[0]); + fail_if(!eina_barrier_new(&barrier0, 2)); fail_if(!eina_thread_create(&threads[0], EINA_THREAD_NORMAL, 0, _thread_job, (void *) (uintptr_t)0)); fail_if(!eina_thread_create(&threads[1], EINA_THREAD_NORMAL, 0, _thread_job, (void *) (uintptr_t)1)); @@ -117,6 +123,7 @@ START_TEST(eo_threaded_calls_test) eina_spinlock_free(&locks[0]); eina_spinlock_free(&locks[1]); eina_barrier_free(&barrier); + eina_barrier_free(&barrier0); eo_shutdown(); }