summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-01-12 13:04:21 +0100
committerwm4 <wm4@nowhere>2015-01-12 13:04:21 +0100
commit8336563d237a2fe78bafda9e8690e812f28fa5aa (patch)
tree4a69668a7993cff26dd635c9eb5de057eed8d656
parent3459130e5c5873f3db794a98d63d261e483e23dc (diff)
downloadmpv-8336563d237a2fe78bafda9e8690e812f28fa5aa.tar.bz2
mpv-8336563d237a2fe78bafda9e8690e812f28fa5aa.tar.xz
player: check sufficient track selection before destroying VO
mpv needs at least an audio or video track to play something. If the track selection is basically insufficient, the player will immediately skip to the next file (or quit). One slightly annoying thing might be that trying to play a subtitle file will close the VO window, and then go to the next file immediately (so "mpv 1.mkv 2.srt 3.mkv" would flash the video window when 2.srt is skipped). Move the check to before the video window is possibly closed. This is a minor cosmetic issue; one can use --force-window to avoid closing the video window at all. Fixes #1459.
-rw-r--r--player/loadfile.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/player/loadfile.c b/player/loadfile.c
index bd46983837..e3e1b4fa30 100644
--- a/player/loadfile.c
+++ b/player/loadfile.c
@@ -1137,16 +1137,11 @@ goto_reopen_demuxer: ;
}
#endif
- reinit_video_chain(mpctx);
- reinit_audio_chain(mpctx);
- reinit_subs(mpctx, 0);
- reinit_subs(mpctx, 1);
-
- //==================== START PLAYING =======================
-
- if (!mpctx->d_video && !mpctx->d_audio) {
- struct demuxer *d = mpctx->demuxer;
+ if (!mpctx->current_track[0][STREAM_VIDEO] &&
+ !mpctx->current_track[0][STREAM_AUDIO])
+ {
MP_FATAL(mpctx, "No video or audio streams selected.\n");
+ struct demuxer *d = mpctx->demuxer;
if (d->stream->uncached_type == STREAMTYPE_DVB) {
int dir = mpctx->last_dvb_step;
if (demux_stream_control(d, STREAM_CTRL_DVB_STEP_CHANNEL, &dir) > 0)
@@ -1156,6 +1151,11 @@ goto_reopen_demuxer: ;
goto terminate_playback;
}
+ reinit_video_chain(mpctx);
+ reinit_audio_chain(mpctx);
+ reinit_subs(mpctx, 0);
+ reinit_subs(mpctx, 1);
+
MP_VERBOSE(mpctx, "Starting playback...\n");
if (mpctx->max_frames == 0) {