jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=69a684cf0451fb24bb471e6ba6e32eca2727c49a

commit 69a684cf0451fb24bb471e6ba6e32eca2727c49a
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Wed Nov 23 14:56:44 2016 +0900

    evas: Fix a few issues after init/shutdown/init
    
    elm_suite would crash when CK_FORK=no is set, because evas was
    badly initializing or shutting down. Note that elm_suite still
    crashes with CK_FORK=no but valgrind doesn't complain.
---
 src/lib/evas/canvas/evas_async_events.c  | 12 +++++++-----
 src/lib/evas/canvas/evas_main.c          |  2 +-
 src/lib/evas/common/evas_thread_render.c |  3 ++-
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/lib/evas/canvas/evas_async_events.c 
b/src/lib/evas/canvas/evas_async_events.c
index cdec83e..7d11172 100644
--- a/src/lib/evas/canvas/evas_async_events.c
+++ b/src/lib/evas/canvas/evas_async_events.c
@@ -98,8 +98,8 @@ evas_async_events_init(void)
 {
    int filedes[2];
 
-   _init_evas_event++;
-   if (_init_evas_event > 1) return _init_evas_event;
+   if (_init_evas_event++)
+     return _init_evas_event;
 
    _fd_pid = getpid();
 
@@ -136,8 +136,8 @@ evas_async_events_init(void)
 int
 evas_async_events_shutdown(void)
 {
-   _init_evas_event--;
-   if (_init_evas_event > 0) return _init_evas_event;
+   if (--_init_evas_event)
+     return _init_evas_event;
 
    eina_condition_free(&_thread_cond);
    eina_lock_free(&_thread_mutex);
@@ -145,9 +145,11 @@ evas_async_events_shutdown(void)
    eina_lock_free(&_thread_feedback_mutex);
    eina_spinlock_free(&_thread_id_lock);
 
+   free(async_queue_cache);
+   async_queue_cache = NULL;
+
    eina_spinlock_free(&async_lock);
    eina_inarray_flush(&async_queue);
-   free(async_queue_cache);
 
    pipe_close(_fd_read);
    pipe_close(_fd_write);
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index d05d754..48048cf 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -160,7 +160,7 @@ evas_shutdown(void)
    evas_thread_shutdown();
    _evas_preload_thread_shutdown();
    evas_async_events_shutdown();
-   evas_common_shutdown();
+   //evas_common_shutdown();
    evas_module_shutdown();
 
 #ifdef BUILD_LOADER_EET
diff --git a/src/lib/evas/common/evas_thread_render.c 
b/src/lib/evas/common/evas_thread_render.c
index d2d8581..03812b5 100644
--- a/src/lib/evas/common/evas_thread_render.c
+++ b/src/lib/evas/common/evas_thread_render.c
@@ -226,8 +226,9 @@ timeout_shutdown:
 
     evas_thread_worker = 0;
 
-    eina_inarray_flush(&evas_thread_queue);
     free(evas_thread_queue_cache);
+    evas_thread_queue_cache = NULL;
+    eina_inarray_flush(&evas_thread_queue);
 
     eina_threads_shutdown();
 

-- 


Reply via email to