see comments for info. a short workaround for now.

SVN revision: 66258
This commit is contained in:
Carsten Haitzler 2011-12-15 14:10:42 +00:00
parent 94c73aee09
commit 94e5832ce8
1 changed files with 11 additions and 2 deletions

View File

@ -217,14 +217,23 @@ shutdown_evil:
EAPI int
ecore_shutdown(void)
{
Ecore_Pipe *p;
/*
* take a lock here because _ecore_event_shutdown() does callbacks
*/
_ecore_lock();
if (--_ecore_init_count != 0)
goto unlock;
ecore_pipe_del(_thread_call);
/* this looks horrible - a hack for now, but something to note. as
* we delete the _thread_call pipe a thread COULD be doing
* ecore_pipe_write() or what not to it at the same time - we
* must ensure all possible users of this _thread_call are finished
* and exited before we delete it here */
p = _thread_call;
_thread_call = NULL;
ecore_pipe_wait(p, 1, 0.1);
ecore_pipe_del(p);
eina_lock_free(&_thread_safety);
eina_condition_free(&_thread_cond);
eina_lock_free(&_thread_mutex);