summaryrefslogtreecommitdiffstats
path: root/mplayer.c
diff options
context:
space:
mode:
Diffstat (limited to 'mplayer.c')
-rw-r--r--mplayer.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/mplayer.c b/mplayer.c
index 65de54f309..0a2a0e3a12 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -3200,6 +3200,10 @@ if(stream_dump_type==5){
mp_msg(MSGT_CPLAYER,MSGL_FATAL,MSGTR_CantOpenDumpfile);
exit_player(mpctx, MSGTR_Exit_error);
}
+ if (dvd_chapter > 1) {
+ int chapter = dvd_chapter - 1;
+ stream_control(mpctx->stream, STREAM_CTRL_SEEK_TO_CHAPTER, &chapter);
+ }
while(!mpctx->stream->eof){
len=stream_read(mpctx->stream,buf,4096);
if(len>0) {
@@ -3722,7 +3726,9 @@ if (mpctx->sh_audio)
if(!mpctx->sh_video) {
// handle audio-only case:
double a_pos=0;
- if(!quiet || end_at.type == END_AT_TIME )
+ // sh_audio can be NULL due to video stream switching
+ // TODO: handle this better
+ if(!quiet || end_at.type == END_AT_TIME && mpctx->sh_audio)
a_pos = playing_audio_pts(mpctx);
if(!quiet)
@@ -4022,6 +4028,9 @@ if(mpctx->eof == PT_NEXT_ENTRY || mpctx->eof == PT_PREV_ENTRY) {
mpctx->playtree_iter = NULL;
}
}
+} else if (mpctx->eof == PT_STOP) {
+ play_tree_iter_free(mpctx->playtree_iter);
+ mpctx->playtree_iter = NULL;
} else { // NEXT PREV SRC
mpctx->eof = mpctx->eof == PT_PREV_SRC ? -1 : 1;
}