From ef10335307a1207930e77fa1ba1ef4c9187b6053 Mon Sep 17 00:00:00 2001 From: raster Date: Sat, 23 Oct 2010 04:36:52 +0000 Subject: [PATCH] lets lock del too eh? git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@53796 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/modules/mp/one_big/eina_one_big.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/modules/mp/one_big/eina_one_big.c b/src/modules/mp/one_big/eina_one_big.c index d26dbc7..47c9f22 100644 --- a/src/modules/mp/one_big/eina_one_big.c +++ b/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; - - pool = data; + One_Big *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); } -- 2.7.4