barbieri pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=482437ee14885a21a94ee0d110474253ae3202ab

commit 482437ee14885a21a94ee0d110474253ae3202ab
Author: Gustavo Sverzut Barbieri <[email protected]>
Date:   Mon Dec 19 11:37:24 2016 -0200

    ecore_con/ecore_ipc: keep log domain alive after shutdown.
    
    These legacy API had the nasty behavior of keeping handles alive until
    the pending events were dispatched, this could happen after the module
    itself was shutdown, resulting in log to unregistered domains.
    
    Then do not unregister the domain -- eina_shutdown will avoid leaks
    anyway.
---
 src/lib/ecore_con/ecore_con.c | 15 ++++++++++-----
 src/lib/ecore_ipc/ecore_ipc.c | 22 +++++++++++++++-------
 2 files changed, 25 insertions(+), 12 deletions(-)

diff --git a/src/lib/ecore_con/ecore_con.c b/src/lib/ecore_con/ecore_con.c
index 6954d17..58e0805 100644
--- a/src/lib/ecore_con/ecore_con.c
+++ b/src/lib/ecore_con/ecore_con.c
@@ -92,10 +92,13 @@ ecore_con_init(void)
    if (!ecore_init())
      goto ecore_err;
 
-   _ecore_con_log_dom = eina_log_domain_register
-       ("ecore_con", ECORE_CON_DEFAULT_LOG_COLOR);
    if (_ecore_con_log_dom < 0)
-     goto ecore_con_log_error;
+     {
+        _ecore_con_log_dom = eina_log_domain_register
+          ("ecore_con", ECORE_CON_DEFAULT_LOG_COLOR);
+        if (_ecore_con_log_dom < 0)
+          goto ecore_con_log_error;
+     }
 
    ecore_con_mempool_init();
    ecore_con_legacy_init();
@@ -159,8 +162,10 @@ ecore_con_shutdown(void)
 
    ecore_con_legacy_shutdown();
 
-   eina_log_domain_unregister(_ecore_con_log_dom);
-   _ecore_con_log_dom = -1;
+   /* do not unregister log domain as ecore_con_servers may be pending deletion
+    * due Ecore_Event.
+    */
+
    ecore_shutdown();
 #ifdef HAVE_EVIL
    evil_shutdown();
diff --git a/src/lib/ecore_ipc/ecore_ipc.c b/src/lib/ecore_ipc/ecore_ipc.c
index 17f7744..dfacf93 100644
--- a/src/lib/ecore_ipc/ecore_ipc.c
+++ b/src/lib/ecore_ipc/ecore_ipc.c
@@ -323,13 +323,18 @@ ecore_ipc_init(void)
 
    if (++_ecore_ipc_init_count != 1)
      return _ecore_ipc_init_count;
-   _ecore_ipc_log_dom = eina_log_domain_register
-     ("ecore_ipc", ECORE_IPC_DEFAULT_LOG_COLOR);
-   if(_ecore_ipc_log_dom < 0)
+
+   if (_ecore_ipc_log_dom < 0)
      {
-       EINA_LOG_ERR("Impossible to create a log domain for the Ecore IPC 
module.");
-       return --_ecore_ipc_init_count;
+        _ecore_ipc_log_dom = eina_log_domain_register
+          ("ecore_ipc", ECORE_IPC_DEFAULT_LOG_COLOR);
+        if(_ecore_ipc_log_dom < 0)
+          {
+             EINA_LOG_ERR("Impossible to create a log domain for the Ecore IPC 
module.");
+             return --_ecore_ipc_init_count;
+          }
      }
+
    if (!ecore_con_init())
      return --_ecore_ipc_init_count;
 
@@ -378,8 +383,11 @@ ecore_ipc_shutdown(void)
 #endif
 
    ecore_con_shutdown();
-   eina_log_domain_unregister(_ecore_ipc_log_dom);
-   _ecore_ipc_log_dom = -1;
+
+   /* do not unregister log domain as ecore_ipc_servers may be pending deletion
+    * due Ecore_Event.
+    */
+
    return _ecore_ipc_init_count;
 }
 

-- 


Reply via email to