From 4fcf2a8de21bc613d9cbaafd59fc93c854905a90 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Thu, 12 Jan 2012 12:19:30 +0100 Subject: roster-window: factor out add_account() Also fix a stupid bug where roster_window_account_removed_cb() was called on a valid account in roster_window_account_validity_changed_cb(). https://bugzilla.gnome.org/show_bug.cgi?id=667743 --- src/empathy-roster-window.c | 52 ++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/empathy-roster-window.c b/src/empathy-roster-window.c index 629363a06..7fc7f9a6b 100644 --- a/src/empathy-roster-window.c +++ b/src/empathy-roster-window.c @@ -2052,6 +2052,28 @@ roster_window_account_removed_cb (TpAccountManager *manager, roster_window_remove_balance_action (self, account); } +static void +add_account (EmpathyRosterWindow *self, + TpAccount *account) +{ + gulong handler_id; + + handler_id = GPOINTER_TO_UINT (g_hash_table_lookup ( + self->priv->status_changed_handlers, account)); + + /* connect signal only if it was not connected yet */ + if (handler_id != 0) + return; + + handler_id = g_signal_connect (account, "status-changed", + G_CALLBACK (roster_window_connection_changed_cb), self); + + g_hash_table_insert (self->priv->status_changed_handlers, + account, GUINT_TO_POINTER (handler_id)); + + roster_window_setup_balance (self, account); +} + static void roster_window_account_validity_changed_cb (TpAccountManager *manager, TpAccount *account, @@ -2059,24 +2081,9 @@ roster_window_account_validity_changed_cb (TpAccountManager *manager, EmpathyRosterWindow *self) { if (valid) - { - gulong handler_id; - handler_id = GPOINTER_TO_UINT (g_hash_table_lookup ( - self->priv->status_changed_handlers, account)); - - /* connect signal only if it was not connected yet */ - if (handler_id == 0) - { - handler_id = g_signal_connect (account, - "status-changed", - G_CALLBACK (roster_window_connection_changed_cb), - self); - g_hash_table_insert (self->priv->status_changed_handlers, - account, GUINT_TO_POINTER (handler_id)); - } - } - - roster_window_account_removed_cb (manager, account, self); + add_account (self, account); + else + roster_window_account_removed_cb (manager, account, self); } static void @@ -2137,15 +2144,8 @@ account_manager_prepared_cb (GObject *source_object, for (j = accounts; j != NULL; j = j->next) { TpAccount *account = TP_ACCOUNT (j->data); - gulong handler_id; - handler_id = g_signal_connect (account, "status-changed", - G_CALLBACK (roster_window_connection_changed_cb), - self); - g_hash_table_insert (self->priv->status_changed_handlers, - account, GUINT_TO_POINTER (handler_id)); - - roster_window_setup_balance (self, account); + add_account (self, account); } g_signal_connect (manager, "account-validity-changed", -- cgit v1.2.3