actually do cleanup, nasty nobody noticed it before.
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 28 Mar 2009 18:59:04 +0000 (18:59 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 28 Mar 2009 18:59:04 +0000 (18:59 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/e_dbus@39780 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/dbus/e_dbus.c
src/lib/dbus/e_dbus_signal.c

index 3f65e0d..32ea145 100644 (file)
@@ -433,8 +433,8 @@ e_dbus_idler(void *data)
   DEBUG(5, "dispatch!\n");
   dbus_connection_dispatch(cd->conn);
   dbus_connection_unref(cd->conn);
-  e_dbus_signal_handlers_clean(cd);
   e_dbus_idler_active--;
+  e_dbus_signal_handlers_clean(cd);
   if (!e_dbus_idler_active && close_connection)
   {
     do
index 21bd918..36fff22 100644 (file)
@@ -272,14 +272,14 @@ void
 e_dbus_signal_handlers_clean(E_DBus_Connection *conn)
 {
   E_DBus_Signal_Handler *sh;
-  Eina_List *l;
+  Eina_List *l, *l_next;
 
   if (!e_dbus_handler_deletions) return;
+  e_dbus_handler_deletions = 0;
   if (!conn->signal_handlers) return;
-  EINA_LIST_FOREACH(conn->signal_handlers, l, sh)
+  EINA_LIST_FOREACH_SAFE(conn->signal_handlers, l, l_next, sh)
   {
     if (sh->delete_me)
       e_dbus_signal_handler_del(conn, sh);
   }
-  e_dbus_handler_deletions = 0;
 }