[empathy] accounts-dialog: Ensure correct connectivity information



commit ff6007612e6560514dbd6a5a581475d72de8c29d
Author: Rob Bradford <rob linux intel com>
Date:   Wed Jun 2 12:47:34 2010 +0100

    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 files changed, 10 insertions(+), 4 deletions(-)
---
diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c
index 649df9d..2acac45 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



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