From ff6007612e6560514dbd6a5a581475d72de8c29d Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Wed, 2 Jun 2010 12:47:34 +0100 Subject: accounts-dialog: Ensure correct connectivity information Move the creation of the EmpathyConnectivity object to the dialog construction so that there is time for the asynchronous calls that the EmpathyConnectivity makes (in ConnMan mode) to return. Without this change the error is always reported as network connection failure rather than the real error when built with ConnMan. Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=620474 --- src/empathy-accounts-dialog.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/empathy-accounts-dialog.c') diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c index 649df9d61..2acac45a5 100644 --- a/src/empathy-accounts-dialog.c +++ b/src/empathy-accounts-dialog.c @@ -112,6 +112,7 @@ typedef struct { TpAccountManager *account_manager; EmpathyConnectionManagers *cms; + EmpathyConnectivity *connectivity; GtkWindow *parent_window; TpAccount *initial_selection; @@ -200,7 +201,6 @@ accounts_dialog_update_status_infobar (EmpathyAccountsDialog *dialog, guint status; guint reason; guint presence; - EmpathyConnectivity *connectivity; GtkTreeView *view; GtkTreeModel *model; GtkTreeSelection *selection; @@ -302,11 +302,9 @@ accounts_dialog_update_status_infobar (EmpathyAccountsDialog *dialog, GTK_MESSAGE_ERROR); } - connectivity = empathy_connectivity_dup_singleton (); - if (!empathy_connectivity_is_online (connectivity)) + if (!empathy_connectivity_is_online (priv->connectivity)) message = _("Offline — No Network Connection"); - g_object_unref (connectivity); gtk_spinner_stop (GTK_SPINNER (priv->throbber)); gtk_widget_show (priv->image_status); gtk_widget_hide (priv->throbber); @@ -2138,6 +2136,12 @@ do_dispose (GObject *obj) priv->cms = NULL; } + if (priv->connectivity) + { + g_object_unref (priv->connectivity); + priv->connectivity = NULL; + } + if (priv->initial_selection != NULL) g_object_unref (priv->initial_selection); priv->initial_selection = NULL; @@ -2222,6 +2226,8 @@ do_constructed (GObject *object) gtk_widget_show (import_dialog); } } + + priv->connectivity = empathy_connectivity_dup_singleton (); } static void -- cgit v1.2.3