diff options
author | Richard Wilson <rjw@netsurf-browser.org> | 2006-01-04 17:26:43 +0000 |
---|---|---|
committer | Richard Wilson <rjw@netsurf-browser.org> | 2006-01-04 17:26:43 +0000 |
commit | a3759ab0ef10a9970fafc6d4c6d282e2d6de8e9c (patch) | |
tree | fe1e859461ab3a2164aa4ea4b05598251412e007 | |
parent | aa76fb175400f2a7791357fcdd83be49914c3892 (diff) | |
download | netsurf-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.c | 8 |
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; } |