summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>2012-08-09 10:52:48 +0000
committerJaehwan Kim <jae.hwan.kim@samsung.com>2012-08-14 22:41:58 +0900
commitde127867a524ca206271f1cce7fa4462c72e31f3 (patch)
tree11d8f0973a5994f22e1b42edffb286edc35c95ab
parent43c71792671073c2fa556a7e5b3b6fb427439818 (diff)
downloadecore-de127867a524ca206271f1cce7fa4462c72e31f3.tar.gz
ecore-de127867a524ca206271f1cce7fa4462c72e31f3.tar.bz2
ecore-de127867a524ca206271f1cce7fa4462c72e31f3.zip
ecore: correctly shutdown Ecore_Thread.
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@75039 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 Conflicts: ChangeLog
-rw-r--r--src/lib/ecore/ecore.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/lib/ecore/ecore.c b/src/lib/ecore/ecore.c
index c5aeb83b..b7e47dc2 100644
--- a/src/lib/ecore/ecore.c
+++ b/src/lib/ecore/ecore.c
@@ -224,6 +224,7 @@ shutdown_evil:
EAPI int
ecore_shutdown(void)
{
+ Ecore_Pipe *p;
/*
* take a lock here because _ecore_event_shutdown() does callbacks
*/
@@ -237,6 +238,13 @@ ecore_shutdown(void)
if (--_ecore_init_count != 0)
goto unlock;
+ if (_ecore_fps_debug) _ecore_fps_debug_shutdown();
+ _ecore_poller_shutdown();
+ _ecore_animator_shutdown();
+ _ecore_glib_shutdown();
+ _ecore_job_shutdown();
+ _ecore_thread_shutdown();
+
/* 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
@@ -246,25 +254,23 @@ ecore_shutdown(void)
* ok - this causes other valgrind complaints regarding glib aquiring
* locks internally. so fix bug a or bug b. let's leave the original
* bug in then and leave this as a note for now
- Ecore_Pipe *p;
+ */
+ /*
+ * It should be fine now as we do wait for thread to shutdown before
+ * we try to destroy the pipe.
+ */
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);
eina_condition_free(&_thread_feedback_cond);
eina_lock_free(&_thread_feedback_mutex);
eina_lock_free(&_thread_id_lock);
- if (_ecore_fps_debug) _ecore_fps_debug_shutdown();
- _ecore_poller_shutdown();
- _ecore_animator_shutdown();
- _ecore_glib_shutdown();
- _ecore_job_shutdown();
- _ecore_thread_shutdown();
+
#ifndef HAVE_EXOTIC
_ecore_exe_shutdown();
#endif