summaryrefslogtreecommitdiffstats
path: root/mplayer.c
diff options
context:
space:
mode:
authoruau <uau@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-02-06 00:18:35 +0000
committeruau <uau@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-02-06 00:18:35 +0000
commitb5c470a029f9d008f63b4b26dc461ac9366eee53 (patch)
tree22b204282cc142df82e4992bef4c4f8003a857e0 /mplayer.c
parentd524405f5c644a225caaeca2a2a1758c1a52165d (diff)
downloadmpv-b5c470a029f9d008f63b4b26dc461ac9366eee53.tar.bz2
mpv-b5c470a029f9d008f63b4b26dc461ac9366eee53.tar.xz
Fix multiple appearing or appearing+disappearing subs in the same frame
in non-ASS mode. The latter is common (old sub replaced by new) and resulted in an incorrect frame where both appeared simultaneously. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@22162 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'mplayer.c')
-rw-r--r--mplayer.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/mplayer.c b/mplayer.c
index 1708a5204d..46089b2aa4 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -2966,17 +2966,14 @@ static void update_subtitles(void)
} else if (dvdsub_id >= 0 && type == 't') {
static subtitle subs;
double curpts = sh_video->pts + sub_delay;
- double pts = MP_NOPTS_VALUE;
double endpts;
vo_sub = &subs;
while (d_dvdsub->first) {
- double nextpts = ds_get_next_pts(d_dvdsub);
- if (nextpts == MP_NOPTS_VALUE || nextpts > curpts)
+ double pts = ds_get_next_pts(d_dvdsub);
+ if (pts > curpts)
break;
endpts = d_dvdsub->first->endpts;
len = ds_get_packet_sub(d_dvdsub, &packet);
- pts = nextpts;
- }
#ifdef USE_ASS
if (ass_enabled) {
static ass_track_t *global_ass_track = NULL;
@@ -2998,7 +2995,9 @@ static void update_subtitles(void)
sub_clear_text(&subs, MP_NOPTS_VALUE);
sub_add_text(&subs, packet, len, endpts);
vo_osd_changed(OSDTYPE_SUBTITLE);
- } else if (sub_clear_text(&subs, curpts))
+ }
+ }
+ if (sub_clear_text(&subs, curpts))
vo_osd_changed(OSDTYPE_SUBTITLE);
}
current_module=NULL;