From 2d33a8f85a83ceaf55dd5ab6a9e363191bfe3c08 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sat, 10 Sep 2011 00:55:39 +0000 Subject: Make high level cache, low level cache and image cache all be initialised from passed parameters Calculate all cache sizes from single memory cache size option and sanity check have a single global struct to hold all parameters instead of several individual variables svn path=/trunk/netsurf/; revision=12784 --- desktop/netsurf.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'desktop/netsurf.c') diff --git a/desktop/netsurf.c b/desktop/netsurf.c index 37e06a330..cb63e7d6b 100644 --- a/desktop/netsurf.c +++ b/desktop/netsurf.c @@ -70,7 +70,7 @@ /* the time between cache clean runs in ms */ #define IMAGE_CACHE_CLEAN_TIME (10 * 1000) -#define HL_CACHE_CLEAN_TIME (5 * 1000) +#define HL_CACHE_CLEAN_TIME (2 * IMAGE_CACHE_CLEAN_TIME) bool netsurf_quit = false; bool verbose_log = false; @@ -109,6 +109,8 @@ static nserror netsurf_llcache_query_handler(const llcache_query *query, return NSERROR_OK; } +#define MINIMUM_MEMORY_CACHE_SIZE (2 * 1024 * 1024) + /** * Initialise components used by gui NetSurf. */ @@ -127,11 +129,9 @@ nserror netsurf_init(int *pargc, }; struct image_cache_parameters image_cache_parameters = { .bg_clean_time = IMAGE_CACHE_CLEAN_TIME, - .limit = (8 * 1024 * 1024), - .hysteresis = (2 * 1024 * 1024), .speculative_small = SPECULATE_SMALL }; - + #ifdef HAVE_SIGPIPE /* Ignore SIGPIPE - this is necessary as OpenSSL can generate these * and the default action is to terminate the app. There's no easy @@ -169,6 +169,24 @@ nserror netsurf_init(int *pargc, messages_load(messages); + /* set up cache limits based on the memory cache size option */ + hlcache_parameters.limit = option_memory_cache_size; + + if (hlcache_parameters.limit < MINIMUM_MEMORY_CACHE_SIZE) { + hlcache_parameters.limit = MINIMUM_MEMORY_CACHE_SIZE; + LOG(("Setting minimum memory cache size to %d", + hlcache_parameters.limit)); + } + + /* image cache is 25% of total memory cache size */ + image_cache_parameters.limit = (hlcache_parameters.limit * 25) / 100; + + /* image cache hysteresis is 20% of teh image cache size */ + image_cache_parameters.hysteresis = (image_cache_parameters.limit * 20) / 100; + + /* account for image cache use from total */ + hlcache_parameters.limit -= image_cache_parameters.limit; + /* image handler bitmap cache */ error = image_cache_init(&image_cache_parameters); if (error != NSERROR_OK) @@ -244,9 +262,6 @@ void netsurf_exit(void) LOG(("Finalising high-level cache")); hlcache_finalise(); - LOG(("Finalising low-level cache")); - llcache_finalise(); - LOG(("Closing fetches")); fetch_quit(); -- cgit v1.2.3