From 2b574523d25277e3d2c2f5784439c10199dbcb09 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Fri, 29 Jul 2011 14:56:42 +0000 Subject: [PATCH] eina: add eina_main_loop_is. SVN revision: 61896 --- legacy/eina/ChangeLog | 5 +++++ legacy/eina/src/include/eina_main.h | 9 +++++++++ legacy/eina/src/lib/eina_main.c | 13 +++++++++++++ 3 files changed, 27 insertions(+) diff --git a/legacy/eina/ChangeLog b/legacy/eina/ChangeLog index a049e6bd9c..9390a8c499 100644 --- a/legacy/eina/ChangeLog +++ b/legacy/eina/ChangeLog @@ -118,3 +118,8 @@ 2011-07-04 Carsten Haitzler (The Rasterman) * Add eina_mmap safety handling. + +2011-07-29 Cedric Bail + + * Add eina_main_loop_is. + diff --git a/legacy/eina/src/include/eina_main.h b/legacy/eina/src/include/eina_main.h index c2c3ffa136..e94cfc15b8 100644 --- a/legacy/eina/src/include/eina_main.h +++ b/legacy/eina/src/include/eina_main.h @@ -132,6 +132,15 @@ EAPI int eina_threads_init(void); */ EAPI int eina_threads_shutdown(void); +/** + * @brief Check if you are calling this function from the same thread Eina was initialized or not + * + * Most EFL function are not thread safe and all the call need to happen in + * the main loop. With this call you could know if you can call an EFL + * function or not. + */ +EAPI Eina_Bool eina_main_loop_is(void); + /** * @} */ diff --git a/legacy/eina/src/lib/eina_main.c b/legacy/eina/src/lib/eina_main.c index bb60c19d0f..9a3cf4223a 100644 --- a/legacy/eina/src/lib/eina_main.c +++ b/legacy/eina/src/lib/eina_main.c @@ -316,6 +316,19 @@ eina_threads_shutdown(void) #endif } +EAPI Eina_Bool +eina_main_loop_is(void) +{ +#ifdef EINA_HAVE_DEBUG_THREADS + if (pthread_equal(_eina_main_loop, pthread_self())) + return EINA_TRUE; + return EINA_FALSE; +#else + /* FIXME: need to check how to do this on windows */ + return EINA_TRUE; +#endif +} + /** * @} */