mirror of https://github.com/mpv-player/mpv
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.
This commit is contained in:
parent
3459130e5c
commit
8336563d23
|
@ -1137,16 +1137,11 @@ goto_reopen_demuxer: ;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
reinit_video_chain(mpctx);
|
if (!mpctx->current_track[0][STREAM_VIDEO] &&
|
||||||
reinit_audio_chain(mpctx);
|
!mpctx->current_track[0][STREAM_AUDIO])
|
||||||
reinit_subs(mpctx, 0);
|
{
|
||||||
reinit_subs(mpctx, 1);
|
|
||||||
|
|
||||||
//==================== START PLAYING =======================
|
|
||||||
|
|
||||||
if (!mpctx->d_video && !mpctx->d_audio) {
|
|
||||||
struct demuxer *d = mpctx->demuxer;
|
|
||||||
MP_FATAL(mpctx, "No video or audio streams selected.\n");
|
MP_FATAL(mpctx, "No video or audio streams selected.\n");
|
||||||
|
struct demuxer *d = mpctx->demuxer;
|
||||||
if (d->stream->uncached_type == STREAMTYPE_DVB) {
|
if (d->stream->uncached_type == STREAMTYPE_DVB) {
|
||||||
int dir = mpctx->last_dvb_step;
|
int dir = mpctx->last_dvb_step;
|
||||||
if (demux_stream_control(d, STREAM_CTRL_DVB_STEP_CHANNEL, &dir) > 0)
|
if (demux_stream_control(d, STREAM_CTRL_DVB_STEP_CHANNEL, &dir) > 0)
|
||||||
|
@ -1156,6 +1151,11 @@ goto_reopen_demuxer: ;
|
||||||
goto terminate_playback;
|
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");
|
MP_VERBOSE(mpctx, "Starting playback...\n");
|
||||||
|
|
||||||
if (mpctx->max_frames == 0) {
|
if (mpctx->max_frames == 0) {
|
||||||
|
|
Loading…
Reference in New Issue