diff options
author | wm4 <wm4@nowhere> | 2014-08-14 23:45:58 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-08-14 23:53:53 +0200 |
commit | 498644afafbcff1bf4f4bcdc1bbc8ef41aae9546 (patch) | |
tree | 518b9a7257994bb52a42a89fddb05de99281b899 /player | |
parent | a7107686d74250d4e4966b661c0e41994df71952 (diff) | |
download | mpv-498644afafbcff1bf4f4bcdc1bbc8ef41aae9546.tar.bz2 mpv-498644afafbcff1bf4f4bcdc1bbc8ef41aae9546.tar.xz |
sub: call sub_reset() on seeks only
sub_reset() was called on cycling subtitle tracks and on seeking. Since
we don't want that subtitles disppear on cycling, sd_lavc.c didn't clear
its internal subtitle queue on reset, which meant that seeking with PGS
subtitles could leave the subtitle on screen (PGS subtitles usually
don't have a duration set).
Call it only on seeking, so we can also strictly clear the subtitle
queue in sd_lavc.
(This still can go very wrong if you disable a subtitle, seek, and
enable it again - for example, if used with libavformat that uses "SSA"
style demuxed ASS subtitle packets. That shouldn't happen with newer
libavformat versions, and the user can "correct" it anyway by executing
a seek while the subtitle is selected.)
Diffstat (limited to 'player')
-rw-r--r-- | player/loadfile.c | 2 | ||||
-rw-r--r-- | player/sub.c | 2 |
2 files changed, 0 insertions, 4 deletions
diff --git a/player/loadfile.c b/player/loadfile.c index 18a225568e..f3861e25eb 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -64,8 +64,6 @@ static void reselect_demux_streams(struct MPContext *mpctx); static void uninit_sub(struct MPContext *mpctx, int order) { - if (mpctx->d_sub[order]) - sub_reset(mpctx->d_sub[order]); mpctx->d_sub[order] = NULL; // Note: not free'd. int obj = order ? OSDTYPE_SUB2 : OSDTYPE_SUB; osd_set_sub(mpctx->osd, obj, NULL); diff --git a/player/sub.c b/player/sub.c index d6903c146e..efd2f68464 100644 --- a/player/sub.c +++ b/player/sub.c @@ -237,7 +237,5 @@ void reinit_subs(struct MPContext *mpctx, int order) if (order == 1 && sub_has_get_text(dec_sub)) state.render_bitmap_subs = false; - reset_subtitles(mpctx, order); - osd_set_sub(mpctx->osd, obj, &state); } |