],
[want_g_main_loop="no"])
+# thread safety
+
+AC_ARG_ENABLE([thread-safety],
+ [AC_HELP_STRING([--enable-thread-safety],
+ [enable thread safety. @<:@default=disabled@:>@])],
+ [
+ if test "x${enableval}" = "xyes" ; then
+ want_thread_safety="yes"
+ else
+ want_thread_safety="no"
+ fi
+ ],
+ [want_thread_safety="no"])
+
# epoll
AC_ARG_ENABLE([epoll],
want_glib="yes"
fi
+if test "x${want_thread_safety}" = "xyes" ; then
+ AC_DEFINE([HAVE_THREAD_SAFETY], [1], [Define to enable thread safety])
+fi
+
want_ecore_timer_dump="no"
if test "x${build_profile}" = "xdebug" && test "x${ac_cv_func_backtrace}" = "xyes"; then
want_ecore_timer_dump="yes"
echo
echo "Ecore:"
+echo " Thread safety..............: $want_thread_safety"
echo " GLib support...............: $with_glib"
echo " Use g_main_loop............: $want_g_main_loop"
echo " Gathering memory statistic.: $ac_cv_func_mallinfo"
static inline void
_ecore_lock(void)
{
+#ifdef HAVE_THREAD_SAFETY
eina_lock_take(&_ecore_main_loop_lock);
+#else
+ /* at least check we're not being called from a thread */
+ EINA_MAIN_LOOP_CHECK_RETURN;
+#endif
_ecore_main_lock_count++;
/* assert(_ecore_main_lock_count == 1); */
}
{
_ecore_main_lock_count--;
/* assert(_ecore_main_lock_count == 0); */
+#ifdef HAVE_THREAD_SAFETY
eina_lock_release(&_ecore_main_loop_lock);
+#endif
}
/*