aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config.def.h3
-rw-r--r--image.c6
2 files changed, 6 insertions, 3 deletions
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;