summaryrefslogtreecommitdiffstats
path: root/demux/cache.c
diff options
context:
space:
mode:
authorDudemanguy <random342@airmail.cc>2023-05-02 19:42:23 -0500
committerDudemanguy <random342@airmail.cc>2023-05-09 20:37:17 +0000
commit4502522a7aee093c923e79a65e4684ea2634af30 (patch)
treed7855be2c4cfb6a16edc784da0e6f3dad29ee667 /demux/cache.c
parent7c4c9bc86f55f4d1224814fbeafdee8f1c3c3108 (diff)
downloadmpv-4502522a7aee093c923e79a65e4684ea2634af30.tar.bz2
mpv-4502522a7aee093c923e79a65e4684ea2634af30.tar.xz
player: use XDG_CACHE_HOME by default
This adds cache as a possible path for mpv to internally pick (~/.cache/mpv for non-darwin unix-like systems, the usual config directory for everyone else). For gpu shader cache and icc cache, controlling whether or not to write such files is done with the new --gpu-shader-cache and --icc-cache options respectively. Additionally, --cache-on-disk no longer requires explicitly setting the --cache-dir option. The old options, --cache-dir, --gpu-shader-cache-dir, and --icc-cache-dir simply set an override for the directory to save cache files. If unset, then the cache is saved in XDG_CACHE_HOME.
Diffstat (limited to 'demux/cache.c')
-rw-r--r--demux/cache.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/demux/cache.c b/demux/cache.c
index f48598807c..08ac193cdf 100644
--- a/demux/cache.c
+++ b/demux/cache.c
@@ -100,10 +100,12 @@ struct demux_cache *demux_cache_create(struct mpv_global *global,
cache->fd = -1;
char *cache_dir = cache->opts->cache_dir;
- if (!(cache_dir && cache_dir[0])) {
- MP_ERR(cache, "No cache data directory supplied.\n");
- goto fail;
+ if (cache_dir && cache_dir[0]) {
+ cache_dir = mp_get_user_path(NULL, global, cache_dir);
+ } else {
+ cache_dir = mp_find_user_file(NULL, global, "cache", "");
}
+ mp_mkdirp(cache_dir);
cache->filename = mp_path_join(cache, cache_dir, "mpv-cache-XXXXXX.dat");
cache->fd = mp_mkostemps(cache->filename, 4, O_CLOEXEC);