From 522ddf041605a765fee18732037fa8641935aa21 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sat, 4 Jun 2011 21:10:39 +0000 Subject: Rudimentary text width caching to speed up many duplicate "Today", "Yesterday" calcs svn path=/trunk/netsurf/; revision=12461 --- desktop/tree.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/desktop/tree.c b/desktop/tree.c index 696b4356f..695899fa4 100644 --- a/desktop/tree.c +++ b/desktop/tree.c @@ -273,6 +273,8 @@ static void tree_recalculate_node_element(struct tree *tree, { struct bitmap *bitmap = NULL; int width, height; + static char *cache_text = NULL; + static int cache_size = 0; assert(element != NULL); @@ -286,10 +288,20 @@ static void tree_recalculate_node_element(struct tree *tree, textarea_get_dimensions(tree->textarea, &element->box.width, NULL); } else { - nsfont.font_width(&plot_fstyle, - element->text, - strlen(element->text), - &element->box.width); + if ((cache_text != NULL) && + (strcmp(cache_text, element->text) == 0)) { + element->box.width = cache_size; + #ifdef TREE_NOISY_DEBUG + LOG(("Tree font width cache hit")); + #endif + } else { + nsfont.font_width(&plot_fstyle, + element->text, + strlen(element->text), + &cache_size); + element->box.width = cache_size; + cache_text = strdup(element->text); + } } element->box.width += 8; -- cgit v1.2.3