From 83ea8187c90264bab928c96403f9a605eb1dc00e Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Tue, 20 Nov 2007 09:36:03 +0000 Subject: [PATCH] * src/widgets/modest-header-view.c: * (filter_row). Minor optimisation to use gtk_tree_model_get_value instead of gtk_tree_model_get. This makes this faster (30% or so). * (filter_row). Move the g_strdup of the id to the if branch where it's used. pmo-trunk-r3773 --- src/widgets/modest-header-view.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/widgets/modest-header-view.c b/src/widgets/modest-header-view.c index 44d9b26..b886623 100644 --- a/src/widgets/modest-header-view.c +++ b/src/widgets/modest-header-view.c @@ -1858,15 +1858,18 @@ filter_row (GtkTreeModel *model, gchar *id = NULL; gboolean visible = TRUE; gboolean found = FALSE; + GValue value = {0,}; g_return_val_if_fail (MODEST_IS_HEADER_VIEW (user_data), FALSE); priv = MODEST_HEADER_VIEW_GET_PRIVATE (user_data); /* Get header from model */ - gtk_tree_model_get (model, iter, - TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &flags, - TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &header, - -1); + gtk_tree_model_get_value (model, iter, TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &value); + flags = (TnyHeaderFlags) g_value_get_int (&value); + g_value_unset (&value); + gtk_tree_model_get_value (model, iter, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &value); + header = (TnyHeader *) g_value_get_object (&value); + g_value_unset (&value); /* Hide mark as deleted heders */ if (flags & TNY_HEADER_FLAG_DELETED) { @@ -1882,25 +1885,21 @@ filter_row (GtkTreeModel *model, /* Get message id from header (ensure is a valid id) */ if (!header) return FALSE; - id = g_strdup(tny_header_get_message_id (header)); /* Check hiding */ if (priv->hidding_ids != NULL) { + id = g_strdup(tny_header_get_message_id (header)); for (i=0; i < priv->n_selected && !found; i++) if (priv->hidding_ids[i] != NULL && id != NULL) found = (!strcmp (priv->hidding_ids[i], id)); visible = !found; + g_free(id); } frees: priv->status = ((gboolean) priv->status) && !visible; - /* Free */ - if (header) - g_object_unref (header); - g_free(id); - return visible; } -- 1.7.9.5