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:
wm4
2013-09-07 20:34:49 +02:00
parent dc475728e0
commit c7ab8ea513
2 changed files with 11 additions and 1 deletions
+7 -1
View File
@@ -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);
}
+4
View File
@@ -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