diff options
author | Sjoerd Simons <sjoerd.simons@collabora.co.uk> | 2009-08-19 19:59:06 +0800 |
---|---|---|
committer | Sjoerd Simons <sjoerd.simons@collabora.co.uk> | 2009-08-19 23:07:15 +0800 |
commit | 6f47d10791dac97495b73200e05122b6406ea74b (patch) | |
tree | 1420b93e52c59975e02903e968c8195720793f46 | |
parent | eaac8d0b0724b90e6891ae69c3c8937861b8cdc9 (diff) | |
download | gsoc2013-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.c | 16 | ||||
-rw-r--r-- | src/empathy-accounts-dialog.c | 4 |
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 || |