summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Wilson <rjw@netsurf-browser.org>2006-01-04 17:26:43 +0000
committerRichard Wilson <rjw@netsurf-browser.org>2006-01-04 17:26:43 +0000
commita3759ab0ef10a9970fafc6d4c6d282e2d6de8e9c (patch)
treefe1e859461ab3a2164aa4ea4b05598251412e007
parentaa76fb175400f2a7791357fcdd83be49914c3892 (diff)
downloadnetsurf-a3759ab0ef10a9970fafc6d4c6d282e2d6de8e9c.tar.gz
netsurf-a3759ab0ef10a9970fafc6d4c6d282e2d6de8e9c.tar.bz2
[project @ 2006-01-04 17:26:43 by rjw]
Optimise searching for sprites. svn path=/import/netsurf/; revision=1979
-rw-r--r--riscos/wimp.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/riscos/wimp.c b/riscos/wimp.c
index 2539321ba..fa667d1d6 100644
--- a/riscos/wimp.c
+++ b/riscos/wimp.c
@@ -35,6 +35,8 @@ static bool ro_gui_wimp_read_eig_factors(os_mode mode, int *xeig, int *yeig);
static wimpextend_furniture_sizes furniture_sizes;
static wimp_w furniture_window = NULL;
+unsigned char last_sprite_found[16];
+
/**
* Gets the horzontal scrollbar height
*
@@ -691,6 +693,11 @@ bool ro_gui_wimp_sprite_exists(const char *sprite)
{
os_error *error;
+ /* make repeated calls fast */
+ if (!strncmp(sprite, last_sprite_found, 16))
+ return true;
+
+ /* fallback if not known to exist */
error = xwimpspriteop_select_sprite(sprite, 0);
if (error) {
if (error->errnum != error_SPRITE_OP_DOESNT_EXIST) {
@@ -700,6 +707,7 @@ bool ro_gui_wimp_sprite_exists(const char *sprite)
}
return false;
}
+ snprintf(last_sprite_found, 16, sprite);
return true;
}