summaryrefslogtreecommitdiffstats
path: root/mplayer.c
diff options
context:
space:
mode:
Diffstat (limited to 'mplayer.c')
-rw-r--r--mplayer.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/mplayer.c b/mplayer.c
index d79f062ca3..5b0c78dbab 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -3783,12 +3783,15 @@ if (stream->type==STREAMTYPE_DVDNAV && dvd_nav_still)
case MP_CMD_SUB_SELECT:
if (global_sub_size) {
int source = -1;
+ int reset=0;
int v = cmd->args[0].v.i;
if (v < -1)
global_sub_pos++;
else
global_sub_pos = v;
+ if(global_sub_pos == global_sub_size)
+ reset = 1;
if (global_sub_pos >= global_sub_size)
global_sub_pos = -1;
if (global_sub_pos >= 0)
@@ -3805,7 +3808,7 @@ if (stream->type==STREAMTYPE_DVDNAV && dvd_nav_still)
vo_sub_last = vo_sub = NULL;
#endif
vobsub_id = -1;
- if(dvdsub_lang) {
+ if(dvdsub_lang || reset) {
dvdsub_id = -1;
if (d_dvdsub) d_dvdsub->id = -1;
}
@@ -3872,6 +3875,13 @@ if (stream->type==STREAMTYPE_DVDNAV && dvd_nav_still)
}
if (!global_sub_quiet_osd_hack) osd_show_vobsub_changed = sh_video->fps;
} else { // off
+#ifdef USE_DVDREAD
+ if (vo_spudec && stream->type == STREAMTYPE_DVD && dvdsub_id < 0) {
+ dvdsub_id = -2;
+ d_dvdsub->id = dvdsub_id;
+ spudec_reset(vo_spudec);
+ }
+#endif
if (!global_sub_quiet_osd_hack) osd_show_vobsub_changed = sh_video->fps;
#ifdef USE_SUB
vo_osd_changed(OSDTYPE_SUBTITLE);