diff options
| author | Xavier Claessens <xavier.claessens@collabora.com> | 2014-03-26 12:44:24 -0400 |
|---|---|---|
| committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2014-03-27 15:18:27 +0000 |
| commit | 0df106a529b8b0822d7a1760d9c9699b9cf61909 (patch) | |
| tree | c5225aa1862f0b59942c58a9e618b23a1c7e99bd | |
| parent | c3a2706dc9fecc41734dd1b96c3993080c446b7b (diff) | |
TpAccountManager: use GDBusConnection directly to watch name
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
| -rw-r--r-- | telepathy-glib/account-manager.c | 36 |
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); |
