aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd.simons@collabora.co.uk>2009-08-19 19:59:06 +0800
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>2009-08-19 23:07:15 +0800
commit6f47d10791dac97495b73200e05122b6406ea74b (patch)
tree1420b93e52c59975e02903e968c8195720793f46
parenteaac8d0b0724b90e6891ae69c3c8937861b8cdc9 (diff)
downloadgsoc2013-empathy-6f47d10791dac97495b73200e05122b6406ea74b.tar
gsoc2013-empathy-6f47d10791dac97495b73200e05122b6406ea74b.tar.gz
gsoc2013-empathy-6f47d10791dac97495b73200e05122b6406ea74b.tar.bz2
gsoc2013-empathy-6f47d10791dac97495b73200e05122b6406ea74b.tar.lz
gsoc2013-empathy-6f47d10791dac97495b73200e05122b6406ea74b.tar.xz
gsoc2013-empathy-6f47d10791dac97495b73200e05122b6406ea74b.tar.zst
gsoc2013-empathy-6f47d10791dac97495b73200e05122b6406ea74b.zip
Cache the icon inside EmpathyAccountSettings
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
-rw-r--r--libempathy/empathy-account-settings.c16
-rw-r--r--src/empathy-accounts-dialog.c4
2 files changed, 9 insertions, 11 deletions
diff --git a/libempathy/empathy-account-settings.c b/libempathy/empathy-account-settings.c
index 209f017b9..4bafac2c9 100644
--- a/libempathy/empathy-account-settings.c
+++ b/libempathy/empathy-account-settings.c
@@ -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 *
diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c
index f74de13a9..913239589 100644
--- a/src/empathy-accounts-dialog.c
+++ b/src/empathy-accounts-dialog.c
@@ -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 ||