mirror of
https://github.com/mpv-player/mpv.git
synced 2026-06-06 20:10:30 +00:00
mplayer: don't auto-load explicitly loaded subtitle files
Even if a subtitle was explicitly loaded with -sub, it was still auto- loaded (if auto-loading applied to that file). Fix this by explicitly checking whether a file is already loaded. The check is maximal naive and just compares the filenames as strings. The change in find_subfiles.c is so that "-sub something.ass" happens to work (auto-loading prepended a "./" to it, so the naive filename comparison check didn't work).
This commit is contained in:
+7
-1
@@ -3957,9 +3957,15 @@ static void open_subtitles_from_options(struct MPContext *mpctx)
|
||||
char **tmp = find_text_subtitles(mpctx->opts, mpctx->filename);
|
||||
int nsub = MP_TALLOC_ELEMS(tmp);
|
||||
for (int i = 0; i < nsub; i++) {
|
||||
struct track *track = mp_add_subtitles(mpctx, tmp[i]);
|
||||
char *filename = tmp[i];
|
||||
for (int n = 0; n < mpctx->num_sources; n++) {
|
||||
if (strcmp(mpctx->sources[n]->stream->url, filename) == 0)
|
||||
goto skip;
|
||||
}
|
||||
struct track *track = mp_add_subtitles(mpctx, filename);
|
||||
if (track)
|
||||
track->auto_loaded = true;
|
||||
skip:;
|
||||
}
|
||||
talloc_free(tmp);
|
||||
}
|
||||
|
||||
@@ -172,6 +172,10 @@ static void append_dir_subtitles(struct MPOpts *opts,
|
||||
MP_GROW_ARRAY(*slist, *nsub);
|
||||
struct subfn *sub = *slist + (*nsub)++;
|
||||
|
||||
// annoying and redundant
|
||||
if (strncmp(subpath, "./", 2) == 0)
|
||||
subpath += 2;
|
||||
|
||||
sub->priority = prio;
|
||||
sub->fname = subpath;
|
||||
} else
|
||||
|
||||
Reference in New Issue
Block a user