diff options
author | Dudemanguy <random342@airmail.cc> | 2023-05-02 19:29:27 -0500 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2023-05-09 20:37:17 +0000 |
commit | 7c4c9bc86f55f4d1224814fbeafdee8f1c3c3108 (patch) | |
tree | 049c5f74a1380fd5de1c1911a4829103c875d146 /player/configfiles.c | |
parent | 5158b85b21b9316b610ab59ba65da36144e03b9a (diff) | |
download | mpv-7c4c9bc86f55f4d1224814fbeafdee8f1c3c3108.tar.bz2 mpv-7c4c9bc86f55f4d1224814fbeafdee8f1c3c3108.tar.xz |
player: use XDG_STATE_HOME for watch_later
A pain point for some users is the fact that watch_later is stored in
the ~/.config directory when it's really not configuration data. Roughly
2 years ago, XDG_STATE_DIR was added to the XDG Base Directory
Specification[0] and its description, user-specific state data, actually
perfectly matches what watch_later data is for. Let's go ahead and use
this directory as the default for watch_later. This change only affects
non-darwin unix-like systems (i.e. Linux, BSDs, etc.). The directory
doesn't move for anyone else.
Internally, quite a few things change with regards to the path
selection. If the platform in question does not have a statedir concept,
then the path selection will simply return "home" instead (old
behavior). Fixes #9147.
[0]: https://gitlab.freedesktop.org/xdg/xdg-specs/-/commit/4f2884e16db35f2962d9b64312917c81be5cb54b
Diffstat (limited to 'player/configfiles.c')
-rw-r--r-- | player/configfiles.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/player/configfiles.c b/player/configfiles.c index 9de7e36ec7..93079f85a9 100644 --- a/player/configfiles.c +++ b/player/configfiles.c @@ -192,6 +192,17 @@ static bool copy_mtime(const char *f1, const char *f2) return true; } +static char *mp_get_playback_resume_dir(struct MPContext *mpctx) +{ + char *wl_dir = mpctx->opts->watch_later_directory; + if (wl_dir && wl_dir[0]) { + wl_dir = mp_get_user_path(mpctx, mpctx->global, wl_dir); + } else { + wl_dir = mp_find_user_file(mpctx, mpctx->global, "state", MP_WATCH_LATER_CONF); + } + return wl_dir; +} + static char *mp_get_playback_resume_config_filename(struct MPContext *mpctx, const char *fname) { @@ -216,21 +227,9 @@ static char *mp_get_playback_resume_config_filename(struct MPContext *mpctx, for (int i = 0; i < 16; i++) conf = talloc_asprintf_append(conf, "%02X", md5[i]); - if (!mpctx->cached_watch_later_configdir) { - char *wl_dir = mpctx->opts->watch_later_directory; - if (wl_dir && wl_dir[0]) { - mpctx->cached_watch_later_configdir = - mp_get_user_path(mpctx, mpctx->global, wl_dir); - } - } - - if (!mpctx->cached_watch_later_configdir) { - mpctx->cached_watch_later_configdir = - mp_find_user_file(mpctx, mpctx->global, "home", MP_WATCH_LATER_CONF); - } - - if (mpctx->cached_watch_later_configdir) - res = mp_path_join(NULL, mpctx->cached_watch_later_configdir, conf); + char *wl_dir = mp_get_playback_resume_dir(mpctx); + if (wl_dir && wl_dir[0]) + res = mp_path_join(NULL, wl_dir, conf); exit: talloc_free(tmp); @@ -292,7 +291,8 @@ void mp_write_watch_later_conf(struct MPContext *mpctx) if (!conffile) goto exit; - mp_mk_user_dir(mpctx->global, "home", mpctx->cached_watch_later_configdir); + char *wl_dir = mp_get_playback_resume_dir(mpctx); + mp_mk_user_dir(mpctx->global, "state", wl_dir); MP_INFO(mpctx, "Saving state.\n"); |