]> git.0d.be Git - empathy.git/commitdiff
Cache the icon inside EmpathyAccountSettings
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>
Wed, 19 Aug 2009 11:59:06 +0000 (12:59 +0100)
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>
Wed, 19 Aug 2009 15:07:15 +0000 (16:07 +0100)
At some point we should set the Icon property in the account manager,
for now just cache it in the settings so we can pass it by reference
instead of needing to dup it as that's the API we want to have in the future

libempathy/empathy-account-settings.c
src/empathy-accounts-dialog.c

index 209f017b95db92201c6004693bf231c80ff00b7c..4bafac2c9ebe8c4321af5c5a53b2dd611ed3ccb7 100644 (file)
@@ -58,6 +58,7 @@ struct _EmpathyAccountSettingsPriv
   gchar *cm_name;
   gchar *protocol;
   gchar *display_name;
+  gchar *icon_name;
   gboolean ready;
 
   GHashTable *parameters;
@@ -171,6 +172,8 @@ empathy_account_settings_constructed (GObject *object)
         g_strdup (empathy_account_get_protocol (priv->account));
     }
 
+  priv->icon_name = g_strdup_printf ("im-%s", priv->protocol);
+
   g_assert (priv->cm_name != NULL && priv->protocol != NULL);
 
   empathy_account_settings_check_readyness (self);
@@ -309,6 +312,7 @@ empathy_account_settings_finalize (GObject *object)
   g_free (priv->cm_name);
   g_free (priv->protocol);
   g_free (priv->display_name);
+  g_free (priv->icon_name);
 
   g_hash_table_destroy (priv->parameters);
 
@@ -343,6 +347,10 @@ empathy_account_settings_check_readyness (EmpathyAccountSettings *self)
       g_free (priv->display_name);
       priv->display_name =
         g_strdup (empathy_account_get_display_name (priv->account));
+
+      g_free (priv->icon_name);
+      priv->icon_name =
+        (gchar *) empathy_account_get_icon_name (priv->account);
     }
 
   priv->tp_protocol = tp_connection_manager_get_protocol (priv->manager,
@@ -446,13 +454,7 @@ empathy_account_settings_get_icon_name (EmpathyAccountSettings *settings)
 {
   EmpathyAccountSettingsPriv *priv = GET_PRIV (settings);
 
-  if (priv->account != NULL)
-    return g_strdup (empathy_account_get_icon_name (priv->account));
-
-  if (priv->tp_protocol != NULL)
-    return g_strdup_printf ("im-%s", priv->tp_protocol->name);
-
-  return NULL;
+  return priv->icon_name;
 }
 
 const gchar *
index f74de13a965a150a2ca5b4de175077f79d9ee895..9132395898beb92e66717e9024ec7b1be729da26 100644 (file)
@@ -192,8 +192,6 @@ account_dialog_create_settings_widget (EmpathyAccountsDialog *dialog,
       empathy_account_settings_get_protocol (settings));
 
   accounts_dialog_update_name_label (dialog, settings);
-
-  g_free (icon_name);
 }
 
 static void
@@ -396,8 +394,6 @@ accounts_dialog_model_pixbuf_data_func (GtkTreeViewColumn *tree_column,
   icon_name = empathy_account_settings_get_icon_name (settings);
   pixbuf = empathy_pixbuf_from_icon_name (icon_name, GTK_ICON_SIZE_BUTTON);
 
-  g_free (icon_name);
-
   if (pixbuf)
     {
       if (status == TP_CONNECTION_STATUS_DISCONNECTED ||