davemds pushed a commit to branch master.

http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=5a3c19b521a8a29d8b90218f7417ad151e9713c5

commit 5a3c19b521a8a29d8b90218f7417ad151e9713c5
Author: Dave Andreoli <[email protected]>
Date:   Mon Aug 8 17:20:16 2016 +0200

    dbus: do not segv atexit under py3
    
    This is a workaround as I cannot find a better way to fix this :(
    
    The real issue is that dbus run some callback in our code after
    our shutdown of ecore and eina
---
 efl/dbus_mainloop/e_dbus.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/efl/dbus_mainloop/e_dbus.c b/efl/dbus_mainloop/e_dbus.c
index 9829ca3..642b3cb 100644
--- a/efl/dbus_mainloop/e_dbus.c
+++ b/efl/dbus_mainloop/e_dbus.c
@@ -72,6 +72,9 @@ cb_dispatch_status(DBusConnection *conn, DBusDispatchStatus 
new_status, void *da
 {
    E_DBus_Connection *cd = data;
 
+   if (_edbus_init_count <= 0)
+      return;
+
    DBG("dispatch status: %d!", new_status);
 
    if (new_status == DBUS_DISPATCH_DATA_REMAINS && !cd->idler)
@@ -190,6 +193,9 @@ cb_watch_del(DBusWatch *watch, void *data)
 {
    E_DBus_Handler_Data *hd;
 
+   if (_edbus_init_count <= 0)
+      return;
+
    DDBG("Watch del on fd: %d (flags: %d)", dbus_watch_get_unix_fd(watch),
         dbus_watch_get_flags(watch));
 
@@ -210,6 +216,9 @@ cb_watch_toggle(DBusWatch *watch, void *data)
 {
    E_DBus_Handler_Data *hd;
 
+   if (_edbus_init_count <= 0)
+      return;
+
    DDBG("Watch toggle on fd: %d (flags: %d) enable: %d",
         dbus_watch_get_unix_fd(watch), dbus_watch_get_flags(watch),
         dbus_watch_get_enabled(watch));
@@ -330,7 +339,9 @@ e_dbus_connection_free(void *data)
    E_DBus_Handler_Data *hd;
    Ecore_Timer *timer;
    Eina_List *l, *ll;
-   DBG("e_dbus_connection free!");
+
+   if (_edbus_init_count <= 0)
+      return;
 
    EINA_LIST_FOREACH_SAFE(cd->fd_handlers, l, ll, hd)
       e_dbus_fd_handler_del(hd);

-- 


Reply via email to