eina: add eina_main_loop_is.
authorcedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 29 Jul 2011 14:56:42 +0000 (14:56 +0000)
committercedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 29 Jul 2011 14:56:42 +0000 (14:56 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@61896 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
src/include/eina_main.h
src/lib/eina_main.c

index a049e6b..9390a8c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 2011-07-04  Carsten Haitzler (The Rasterman)
 
        * Add eina_mmap safety handling.
+
+2011-07-29  Cedric Bail
+
+       * Add eina_main_loop_is.
+
index c2c3ffa..e94cfc1 100644 (file)
@@ -133,6 +133,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);
+
+/**
  * @}
  */
 
index bb60c19..9a3cf42 100644 (file)
@@ -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
+}
+
 /**
  * @}
  */