[empathy] accounts-dialog: wait that account is prepared before calling accounts_dialog_add_account



commit ef9f82c085a018e3959800ad010f47da62d9b364
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Fri Nov 13 14:31:34 2009 +0000

    accounts-dialog: wait that account is prepared before calling accounts_dialog_add_account
    
    This ensure that EmpathyAccountSettings has been updated and so we don't
    add a new row in the model for this account (#601796).

 src/empathy-accounts-dialog.c |   21 ++++++++++++++++++++-
 1 files changed, 20 insertions(+), 1 deletions(-)
---
diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c
index e4e963c..daae3d8 100644
--- a/src/empathy-accounts-dialog.c
+++ b/src/empathy-accounts-dialog.c
@@ -1237,12 +1237,31 @@ accounts_dialog_add_account (EmpathyAccountsDialog *dialog,
 }
 
 static void
+account_prepare_cb (GObject *source_object,
+    GAsyncResult *result,
+    gpointer user_data)
+{
+  EmpathyAccountsDialog *dialog = EMPATHY_ACCOUNTS_DIALOG (user_data);
+  TpAccount *account = TP_ACCOUNT (source_object);
+  GError *error = NULL;
+
+  if (!tp_account_prepare_finish (account, result, &error))
+    {
+      DEBUG ("Failed to prepare account: %s", error->message);
+      g_error_free (error);
+      return;
+    }
+
+  accounts_dialog_add_account (dialog, account);
+}
+
+static void
 accounts_dialog_account_validity_changed_cb (TpAccountManager *manager,
     TpAccount *account,
     gboolean valid,
     EmpathyAccountsDialog *dialog)
 {
-  accounts_dialog_add_account (dialog, account);
+  tp_account_prepare_async (account, NULL, account_prepare_cb, dialog);
 }
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]