summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2014-03-26 12:44:24 -0400
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2014-03-27 15:18:27 +0000
commit0df106a529b8b0822d7a1760d9c9699b9cf61909 (patch)
treec5225aa1862f0b59942c58a9e618b23a1c7e99bd
parentc3a2706dc9fecc41734dd1b96c3993080c446b7b (diff)
TpAccountManager: use GDBusConnection directly to watch name
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
-rw-r--r--telepathy-glib/account-manager.c36
1 files changed, 17 insertions, 19 deletions
diff --git a/telepathy-glib/account-manager.c b/telepathy-glib/account-manager.c
index bfe7747b6..8eb3da352 100644
--- a/telepathy-glib/account-manager.c
+++ b/telepathy-glib/account-manager.c
@@ -118,6 +118,7 @@ struct _TpAccountManagerPrivate {
gchar *requested_status_message;
guint n_preparing_accounts;
+ guint watch_name_id;
};
typedef struct {
@@ -224,18 +225,12 @@ _tp_account_manager_start (TpAccountManager *self)
}
static void
-_tp_account_manager_name_owner_cb (TpDBusDaemon *proxy,
+name_vanished_cb (GDBusConnection *connection,
const gchar *name,
- const gchar *new_owner,
gpointer user_data)
{
- DEBUG ("Name owner changed for %s, new name: %s", name, new_owner);
-
- if (tp_str_empty (new_owner))
- {
- /* AM quit or crashed for some reason, let's start it again */
- _tp_account_manager_start (user_data);
- }
+ /* AM quit or crashed for some reason, let's start it again */
+ _tp_account_manager_start (user_data);
}
static void insert_account (TpAccountManager *self, TpAccount *account);
@@ -539,15 +534,11 @@ _tp_account_manager_dispose (GObject *object)
TpAccountManager *self = TP_ACCOUNT_MANAGER (object);
TpAccountManagerPrivate *priv = self->priv;
- if (priv->dispose_run)
- return;
-
- priv->dispose_run = TRUE;
-
- g_hash_table_unref (priv->accounts);
+ g_clear_pointer (&priv->accounts, g_hash_table_unref);
- tp_dbus_daemon_cancel_name_owner_watch (tp_proxy_get_dbus_daemon (self),
- TP_ACCOUNT_MANAGER_BUS_NAME, _tp_account_manager_name_owner_cb, self);
+ if (priv->watch_name_id != 0)
+ g_bus_unwatch_name (priv->watch_name_id);
+ priv->watch_name_id = 0;
G_OBJECT_CLASS (tp_account_manager_parent_class)->dispose (object);
}
@@ -1300,8 +1291,15 @@ tp_account_manager_enable_restart (TpAccountManager *manager)
{
g_return_if_fail (TP_IS_ACCOUNT_MANAGER (manager));
- tp_dbus_daemon_watch_name_owner (tp_proxy_get_dbus_daemon (manager),
- TP_ACCOUNT_MANAGER_BUS_NAME, _tp_account_manager_name_owner_cb,
+ if (manager->priv->watch_name_id != 0)
+ return;
+
+ manager->priv->watch_name_id = g_bus_watch_name_on_connection (
+ tp_proxy_get_dbus_connection (manager),
+ TP_ACCOUNT_MANAGER_BUS_NAME,
+ G_BUS_NAME_WATCHER_FLAGS_NONE,
+ NULL,
+ name_vanished_cb,
manager, NULL);
_tp_account_manager_start (manager);