diff options
author | Rob Bradford <rob@linux.intel.com> | 2010-06-02 19:47:34 +0800 |
---|---|---|
committer | Rob Bradford <rob@linux.intel.com> | 2010-06-03 21:50:08 +0800 |
commit | ff6007612e6560514dbd6a5a581475d72de8c29d (patch) | |
tree | 9ee2bf2e0818e9e0d56aaf6c1338e1d3605fe7b8 /src | |
parent | 7d4202aa8e193c22e9cc3871fbc384454cb734ef (diff) | |
download | gsoc2013-empathy-ff6007612e6560514dbd6a5a581475d72de8c29d.tar gsoc2013-empathy-ff6007612e6560514dbd6a5a581475d72de8c29d.tar.gz gsoc2013-empathy-ff6007612e6560514dbd6a5a581475d72de8c29d.tar.bz2 gsoc2013-empathy-ff6007612e6560514dbd6a5a581475d72de8c29d.tar.lz gsoc2013-empathy-ff6007612e6560514dbd6a5a581475d72de8c29d.tar.xz gsoc2013-empathy-ff6007612e6560514dbd6a5a581475d72de8c29d.tar.zst gsoc2013-empathy-ff6007612e6560514dbd6a5a581475d72de8c29d.zip |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/empathy-accounts-dialog.c | 14 |
1 files changed, 10 insertions, 4 deletions
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 |