]> git.0d.be Git - empathy.git/commitdiff
Simplify code when initializing the store.
authorXavier Claessens <xclaesse@src.gnome.org>
Tue, 6 Jan 2009 16:49:30 +0000 (16:49 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Tue, 6 Jan 2009 16:49:30 +0000 (16:49 +0000)
Always start the 10sec timeout when we change status to connected.
Rename TpConnectionStatus variables connection->status.

svn path=/trunk/; revision=2091

libempathy/empathy-account-manager.c

index c343a167366eb9729c5d0e690c9b082f824f583a..2d20cc0710215f759af1018f591dd25f35c3468f 100644 (file)
@@ -40,7 +40,7 @@ typedef struct {
 
 typedef struct {
   McPresence presence;
-  TpConnectionStatus connection;
+  TpConnectionStatus status;
   gboolean is_enabled;
 
   guint source_id;
@@ -64,14 +64,14 @@ G_DEFINE_TYPE (EmpathyAccountManager, empathy_account_manager, G_TYPE_OBJECT);
 
 static AccountData *
 account_data_new (McPresence presence,
-                  TpConnectionStatus connection,
+                  TpConnectionStatus status,
                   gboolean is_enabled)
 {
   AccountData *retval;
 
   retval = g_slice_new0 (AccountData);
   retval->presence = presence;
-  retval->connection = connection;
+  retval->status = status;
   retval->is_enabled = is_enabled;
   retval->source_id = 0;
 
@@ -123,6 +123,7 @@ account_created_cb (McAccountMonitor *mon,
 {
   McAccount *account;
   EmpathyAccountManagerPriv *priv = GET_PRIV (manager);
+  guint initial_status;
 
   account = mc_account_lookup (account_name);
 
@@ -132,6 +133,14 @@ account_created_cb (McAccountMonitor *mon,
 
       data = account_data_new_default (priv->mc, account);
 
+      initial_status = mission_control_get_connection_status (priv->mc,
+                                                             account, NULL);
+
+      if (initial_status == TP_CONNECTION_STATUS_CONNECTED)
+       priv->connected++;
+      else if (initial_status == TP_CONNECTION_STATUS_CONNECTING)
+       priv->connecting++;
+
       /* the reference returned by mc_account_lookup is owned by the
        * hash table.
        */
@@ -222,31 +231,31 @@ account_enabled_cb (McAccountMonitor *mon,
 
 static void
 update_connection_numbers (EmpathyAccountManager *manager,
-                           TpConnectionStatus conn,
-                           TpConnectionStatus old_c)
+                           TpConnectionStatus status,
+                           TpConnectionStatus old_s)
 {
   EmpathyAccountManagerPriv *priv = GET_PRIV (manager);
 
-  if (conn == TP_CONNECTION_STATUS_CONNECTED)
+  if (status == TP_CONNECTION_STATUS_CONNECTED)
     {
       priv->connected++;
-      if (old_c == TP_CONNECTION_STATUS_CONNECTING)
+      if (old_s == TP_CONNECTION_STATUS_CONNECTING)
         priv->connecting--;
     }
 
-  if (conn == TP_CONNECTION_STATUS_CONNECTING)
+  if (status == TP_CONNECTION_STATUS_CONNECTING)
     {
       priv->connecting++;
-      if (old_c == TP_CONNECTION_STATUS_CONNECTED)
+      if (old_s == TP_CONNECTION_STATUS_CONNECTED)
         priv->connected--;
     }
 
-  if (conn == TP_CONNECTION_STATUS_DISCONNECTED)
+  if (status == TP_CONNECTION_STATUS_DISCONNECTED)
     {
-      if (old_c == TP_CONNECTION_STATUS_CONNECTED)
+      if (old_s == TP_CONNECTION_STATUS_CONNECTED)
         priv->connected--;
 
-      if (old_c == TP_CONNECTION_STATUS_CONNECTING)
+      if (old_s == TP_CONNECTION_STATUS_CONNECTING)
         priv->connecting--;
     }
 }
@@ -263,7 +272,7 @@ remove_data_timeout (gpointer _data)
 
 static void
 account_status_changed_cb (MissionControl *mc,
-                           TpConnectionStatus connection,
+                           TpConnectionStatus status,
                            McPresence presence,
                            TpConnectionStatusReason reason,
                            const gchar *unique_name,
@@ -273,7 +282,7 @@ account_status_changed_cb (MissionControl *mc,
   EmpathyAccountManagerPriv *priv = GET_PRIV (manager);
   AccountData *data;
   McPresence old_p;
-  TpConnectionStatus old_c;
+  TpConnectionStatus old_s;
   gboolean emit_presence = FALSE, emit_connection = FALSE;
 
   account = mc_account_lookup (unique_name);
@@ -284,7 +293,7 @@ account_status_changed_cb (MissionControl *mc,
       g_assert (data);
 
       old_p = data->presence;
-      old_c = data->connection;
+      old_s = data->status;
 
       if (old_p != presence)
         {
@@ -292,13 +301,12 @@ account_status_changed_cb (MissionControl *mc,
           emit_presence = TRUE;
         }
 
-      if (old_c != connection)
+      if (old_s != status)
         {
-          data->connection = connection;
-          update_connection_numbers (manager, connection, old_c);
+          data->status = status;
+          update_connection_numbers (manager, status, old_s);
 
-          if (old_c == TP_CONNECTION_STATUS_CONNECTING &&
-              connection == TP_CONNECTION_STATUS_CONNECTED)
+          if (status == TP_CONNECTION_STATUS_CONNECTED)
             {
                 if (data->source_id > 0) {
                   g_source_remove (data->source_id);
@@ -318,7 +326,7 @@ account_status_changed_cb (MissionControl *mc,
 
       if (emit_connection)
         g_signal_emit (manager, signals[ACCOUNT_CONNECTION_CHANGED], 0,
-                       account, reason, connection, old_c);
+                       account, reason, status, old_s);
 
       g_object_unref (account);
     }
@@ -331,7 +339,6 @@ empathy_account_manager_init (EmpathyAccountManager *manager)
       G_TYPE_INSTANCE_GET_PRIVATE (manager,
                                    EMPATHY_TYPE_ACCOUNT_MANAGER, EmpathyAccountManagerPriv);
   GList *mc_accounts, *l;
-  guint initial_connection;
   AccountData *data;
 
   manager->priv = priv;
@@ -351,18 +358,7 @@ empathy_account_manager_init (EmpathyAccountManager *manager)
     {
       data = account_data_new_default (priv->mc, l->data);
 
-      initial_connection = mission_control_get_connection_status (priv->mc,
-                                                                 l->data, NULL);
-      if (initial_connection == TP_CONNECTION_STATUS_CONNECTED) {
-       priv->connected++;
-      } else if (initial_connection == TP_CONNECTION_STATUS_CONNECTING) {
-       priv->connecting++;
-      }
-
-      /* no need to g_object_ref () the account here, as mc_accounts_list ()
-       * already increases the refcount.
-       */
-      g_hash_table_insert (priv->accounts, l->data, data);
+      account_created_cb (priv->monitor, (char *) mc_account_get_unique_name (l->data), manager);
     }
 
   g_signal_connect (priv->monitor, "account-created",
@@ -380,7 +376,7 @@ empathy_account_manager_init (EmpathyAccountManager *manager)
                                G_CALLBACK (account_status_changed_cb),
                                manager, NULL);
 
-  g_list_free (mc_accounts);
+  mc_accounts_list_free (mc_accounts);
 }
 
 static void