From 89f81da481c81cda1abd7c971b36f00ea80d80fe Mon Sep 17 00:00:00 2001 From: Ricardo Constantino Date: Tue, 2 Jan 2018 14:20:53 +0000 Subject: player: add on_load_fail hook --- player/loadfile.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'player/loadfile.c') diff --git a/player/loadfile.c b/player/loadfile.c index ca782f88d8..c54204db0b 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -734,12 +734,12 @@ static void transfer_playlist(struct MPContext *mpctx, struct playlist *pl) } } -static int process_open_hooks(struct MPContext *mpctx) +static int process_open_hooks(struct MPContext *mpctx, char *name) { - mp_hook_run(mpctx, NULL, "on_load"); + mp_hook_run(mpctx, NULL, name); - while (!mp_hook_test_completion(mpctx, "on_load")) { + while (!mp_hook_test_completion(mpctx, name)) { mp_idle(mpctx); if (mpctx->stop_play) { // Can't exit immediately, the script would interfere with the @@ -1214,7 +1214,7 @@ reopen_file: assert(mpctx->demuxer == NULL); - if (process_open_hooks(mpctx) < 0) + if (process_open_hooks(mpctx, "on_load") < 0) goto terminate_playback; if (opts->stream_dump && opts->stream_dump[0]) { @@ -1224,6 +1224,13 @@ reopen_file: } open_demux_reentrant(mpctx); + if (!mpctx->stop_play && !mpctx->demuxer && + process_open_hooks(mpctx, "on_load_fail") >= 0 && + strcmp(mpctx->stream_open_filename, mpctx->filename) != 0) + { + mpctx->error_playing = MPV_ERROR_LOADING_FAILED; + open_demux_reentrant(mpctx); + } if (!mpctx->demuxer || mpctx->stop_play) goto terminate_playback; -- cgit v1.2.3