From 51e3cd64199429218152e5e3e3834a263795b8f6 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sat, 23 Oct 2010 04:36:52 +0000 Subject: [PATCH] lets lock del too eh? SVN revision: 53796 --- .../src/modules/mp/one_big/eina_one_big.c | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/legacy/eina/src/modules/mp/one_big/eina_one_big.c b/legacy/eina/src/modules/mp/one_big/eina_one_big.c index d26dbc7431..47c9f2298a 100644 --- a/legacy/eina/src/modules/mp/one_big/eina_one_big.c +++ b/legacy/eina/src/modules/mp/one_big/eina_one_big.c @@ -181,7 +181,8 @@ eina_one_big_free(void *data, void *ptr) } else { - Eina_Inlist *il = (Eina_Inlist *)(((unsigned char *)ptr) - sizeof(Eina_Inlist)); + Eina_Inlist *il; + il = (Eina_Inlist *)(((unsigned char *)ptr) - sizeof(Eina_Inlist)); pool->over_list = eina_inlist_remove(pool->over_list, il); free(il); pool->over--; @@ -252,11 +253,16 @@ eina_one_big_init(const char *context, static void eina_one_big_shutdown(void *data) { - One_Big *pool; + One_Big *pool = data; - pool = data; - - if (!pool) return ; + if (!pool) return; +#ifdef EFL_HAVE_THREADS +# ifdef EFL_HAVE_POSIX_THREADS + pthread_mutex_lock(&pool->mutex); +# else + WaitForSingleObject(pool->mutex, INFINITE); +# endif +#endif if (pool->empty) { @@ -302,6 +308,16 @@ eina_one_big_shutdown(void *data) #endif free(pool->base); + +#ifdef EFL_HAVE_THREADS +# ifdef EFL_HAVE_POSIX_THREADS + pthread_mutex_unlock(&pool->mutex); + pthread_mutex_destroy(&pool->mutex); +# else + ReleaseMutex(pool->mutex); + // FIXME: how to do a mutex destroy in winland? +# endif +#endif free(pool); }