Author: chris_y
Date: Sat Jun 4 16:10:39 2011
New Revision: 12461
URL:
http://source.netsurf-browser.org?rev=12461&view=rev
Log:
Rudimentary text width caching to speed up many duplicate "Today",
"Yesterday" calcs
Modified:
trunk/netsurf/desktop/tree.c
Modified: trunk/netsurf/desktop/tree.c
URL:
http://source.netsurf-browser.org/trunk/netsurf/desktop/tree.c?rev=12461&...
==============================================================================
--- trunk/netsurf/desktop/tree.c (original)
+++ trunk/netsurf/desktop/tree.c Sat Jun 4 16:10:39 2011
@@ -273,6 +273,8 @@
{
struct bitmap *bitmap = NULL;
int width, height;
+ static char *cache_text = NULL;
+ static int cache_size = 0;
assert(element != NULL);
@@ -286,10 +288,20 @@
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;