diff --git a/legacy/evas/src/lib/file/evas_module.c b/legacy/evas/src/lib/file/evas_module.c index e02cb5e1d9..46f60710b5 100644 --- a/legacy/evas/src/lib/file/evas_module.c +++ b/legacy/evas/src/lib/file/evas_module.c @@ -174,9 +174,12 @@ evas_module_init(void) em->handle = NULL; em->data = NULL; em->loaded = 0; -#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD) - pthread_spin_init(&em->lock, PTHREAD_PROCESS_PRIVATE); -#endif +#ifdef BUILD_ASYNC_PRELOAD + LKI(em->lock); +#endif +//#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD) +// pthread_mutex_init(&em->lock, NULL); +//#endif if (em->type == EVAS_MODULE_TYPE_ENGINE) { Evas_Module_Engine *eme; @@ -309,35 +312,50 @@ evas_module_unload(Evas_Module *em) em->func.close = NULL; em->api = NULL; em->loaded = 0; -#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD) - pthread_spin_destroy(&em->lock); +#ifdef BUILD_ASYNC_PRELOAD + LKD(em->lock); #endif +//#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD) +// pthread_mutex_destroy(&em->lock); +//#endif } void evas_module_ref(Evas_Module *em) { -#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD) - pthread_spin_lock(&em->lock); -#endif +#ifdef BUILD_ASYNC_PRELOAD + LKL(em->lock); +#endif +//#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD) +// pthread_mutex_lock(&em->lock); +//#endif em->ref++; /* printf("M: %s ref++ = %i\n", em->name, em->ref); */ -#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD) - pthread_spin_unlock(&em->lock); +#ifdef BUILD_ASYNC_PRELOAD + LKU(em->lock); #endif +//#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD) +// pthread_mutex_unlock(&em->lock); +//#endif } void evas_module_unref(Evas_Module *em) { -#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD) - pthread_spin_lock(&em->lock); -#endif +#ifdef BUILD_ASYNC_PRELOAD + LKL(em->lock); +#endif +//#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD) +// pthread_mutex_lock(&em->lock); +//#endif em->ref--; /* printf("M: %s ref-- = %i\n", em->name, em->ref); */ -#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD) - pthread_spin_unlock(&em->lock); +#ifdef BUILD_ASYNC_PRELOAD + LKU(em->lock); #endif +//#if defined(BUILD_PTHREAD) && defined(BUILD_ASYNC_PRELOAD) +// pthread_mutex_unlock(&em->lock); +//#endif } static int use_count = 0; diff --git a/legacy/evas/src/lib/file/evas_module.h b/legacy/evas/src/lib/file/evas_module.h index bc7e6de736..7c6c277b27 100644 --- a/legacy/evas/src/lib/file/evas_module.h +++ b/legacy/evas/src/lib/file/evas_module.h @@ -50,8 +50,8 @@ struct _Evas_Module int ref; /* how many refs */ int last_used; /* the cycle count when it was last used */ -#if defined(HAVE_PTHREAD_H) && defined(BUILD_ASYNC_PRELOAD) && _POSIX_SPIN_LOCKS > -1 - pthread_spinlock_t lock; +#if defined(HAVE_PTHREAD_H) && defined(BUILD_ASYNC_PRELOAD) + pthread_mutex_t lock; #endif unsigned char loaded : 1;