From 899f0cd51eaadf6d0249d854efc3d0d1029045bd Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 25 Feb 2015 22:23:25 +0100 Subject: cache: limit to file size Saves some memory. Should be especially helpful if many small files are loaded, like when mass-loading subtitle files and the cache is enabled. --- stream/cache.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'stream') diff --git a/stream/cache.c b/stream/cache.c index 69e54af798..8051bfa5e7 100644 --- a/stream/cache.c +++ b/stream/cache.c @@ -622,7 +622,14 @@ int stream_cache_init(stream_t *cache, stream_t *stream, s->seek_limit = opts->seek_min * 1024ULL; - if (resize_cache(s, opts->size * 1024ULL) != STREAM_OK) { + int64_t cache_size = opts->size * 1024ULL; + + int64_t file_size = -1; + stream_control(stream, STREAM_CTRL_GET_SIZE, &file_size); + if (file_size >= 0) + cache_size = MPMIN(cache_size, file_size); + + if (resize_cache(s, cache_size) != STREAM_OK) { MP_ERR(s, "Failed to allocate cache buffer.\n"); talloc_free(s); return -1; -- cgit v1.2.3