diff --git a/config.def.h b/config.def.h index 8db8983..9ac3e9b 100644 --- a/config.def.h +++ b/config.def.h @@ -56,6 +56,9 @@ static const bool ALPHA_LAYER = false; * 3 means use 3% of total memory which is about 245MiB on 8GiB machine. * 0 or less means disable cache. * 100 means use all available memory (but not above CACHE_SIZE_LIMIT). + * + * NOTE: higher cache size means better image reloading performance, but also + * higher memory usage. */ static const int CACHE_SIZE_MEM_PERCENTAGE = 3; /* use 3% of total memory for cache */ static const int CACHE_SIZE_LIMIT = 256 * 1024 * 1024; /* but not above 256MiB */ diff --git a/image.c b/image.c index beedcbd..ad2a254 100644 --- a/image.c +++ b/image.c @@ -49,14 +49,14 @@ enum { DEF_WEBP_DELAY = 75 }; static int calc_cache_size(void) { - int cache; - long pages, page_size; + long cache, pages = -1, page_size = -1; if (CACHE_SIZE_MEM_PERCENTAGE <= 0) return 0; - +#ifdef _SC_PHYS_PAGES /* _SC_PHYS_PAGES isn't POSIX */ pages = sysconf(_SC_PHYS_PAGES); page_size = sysconf(_SC_PAGE_SIZE); +#endif if (pages < 0 || page_size < 0) return CACHE_SIZE_FALLBACK; cache = (pages/100) * CACHE_SIZE_MEM_PERCENTAGE;