GList *handlers;
GHashTable *request_channel_class_async_ids;
- /* (TpAccount *) => gulong
+ /* reffed (TpAccount *) => gulong
* Signal handler ID of the "status-changed" signal */
GHashTable *status_changed_handlers;
id = g_signal_connect (account, "status-changed",
G_CALLBACK (dispatcher_status_changed_cb), self);
- g_hash_table_insert (priv->status_changed_handlers, account,
+ g_hash_table_insert (priv->status_changed_handlers, g_object_ref (account),
GUINT_TO_POINTER (id));
}
connect_account (self, a);
}
+
+ g_list_foreach (accounts, (GFunc) g_object_ref, NULL);
g_list_free (accounts);
}
priv->request_channel_class_async_ids = g_hash_table_new (g_direct_hash,
g_direct_equal);
- priv->status_changed_handlers = g_hash_table_new (g_direct_hash,
- g_direct_equal);
+ priv->status_changed_handlers = g_hash_table_new_full (NULL, NULL,
+ (GDestroyNotify) g_object_unref, NULL);
priv->dbus = tp_dbus_daemon_dup (NULL);
priv->channel_dispatcher = tp_channel_dispatcher_new (priv->dbus);