From 6f47d10791dac97495b73200e05122b6406ea74b Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Wed, 19 Aug 2009 12:59:06 +0100 Subject: 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 --- libempathy/empathy-account-settings.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'libempathy/empathy-account-settings.c') 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 * -- cgit v1.2.3