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
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;
}