diff options
author | wm4 <wm4@nowhere> | 2015-06-11 21:39:48 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-06-11 21:42:09 +0200 |
commit | e53cb0890e8071ca86271c8b100343944dbbefe7 (patch) | |
tree | 155073a38d2f073f412baf1c6fd7da2eea9b803d | |
parent | 87b60ded88f2cfb54636f88324a715a943f14fb9 (diff) | |
download | mpv-e53cb0890e8071ca86271c8b100343944dbbefe7.tar.bz2 mpv-e53cb0890e8071ca86271c8b100343944dbbefe7.tar.xz |
client API: add MPV_END_FILE_REASON_REDIRECT
Requested. Minor incompatible behavior change, as it was signalling
MPV_END_FILE_REASON_EOF previously.
-rw-r--r-- | DOCS/client-api-changes.rst | 3 | ||||
-rw-r--r-- | libmpv/client.h | 11 | ||||
-rw-r--r-- | player/loadfile.c | 6 |
3 files changed, 17 insertions, 3 deletions
diff --git a/DOCS/client-api-changes.rst b/DOCS/client-api-changes.rst index e821d077c7..241b7569d4 100644 --- a/DOCS/client-api-changes.rst +++ b/DOCS/client-api-changes.rst @@ -32,6 +32,9 @@ API changes :: + 1.18 - add MPV_END_FILE_REASON_REDIRECT, and change behavior of + MPV_EVENT_END_FILE accordingly + - a bunch of interface-changes.rst changes 1.17 - mpv_initialize() now blocks SIGPIPE (details see client.h) --- mpv 0.9.0 is released --- 1.16 - add mpv_opengl_cb_report_flip() diff --git a/libmpv/client.h b/libmpv/client.h index 8958865c79..3bfced25ca 100644 --- a/libmpv/client.h +++ b/libmpv/client.h @@ -198,7 +198,7 @@ extern "C" { * relational operators (<, >, <=, >=). */ #define MPV_MAKE_VERSION(major, minor) (((major) << 16) | (minor) | 0UL) -#define MPV_CLIENT_API_VERSION MPV_MAKE_VERSION(1, 17) +#define MPV_CLIENT_API_VERSION MPV_MAKE_VERSION(1, 18) /** * Return the MPV_CLIENT_API_VERSION the mpv source has been compiled with. @@ -1307,6 +1307,15 @@ typedef enum mpv_end_file_reason { * mpv_event_end_file.error will be set. */ MPV_END_FILE_REASON_ERROR = 4, + /** + * The file was a playlist or similar. When the playlist is read, its + * entries will be appended to the playlist after the entry of the current + * file, the entry of the current file is removed, and a MPV_EVENT_END_FILE + * event is sent with reason set to MPV_END_FILE_REASON_REDIRECT. Then + * playback continues with the playlist contents. + * Since API version 1.18. + */ + MPV_END_FILE_REASON_REDIRECT = 5, } mpv_end_file_reason; typedef struct mpv_event_end_file { diff --git a/player/loadfile.c b/player/loadfile.c index 93ebd73df6..6b25706055 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -1130,7 +1130,7 @@ goto_reopen_demuxer: ; e->stream_flags |= entry_stream_flags; transfer_playlist(mpctx, pl); mp_notify_property(mpctx, "playlist"); - mpctx->error_playing = 1; + mpctx->error_playing = 2; goto terminate_playback; } @@ -1300,11 +1300,13 @@ terminate_playback: case PT_ERROR: case AT_END_OF_FILE: { - if (mpctx->error_playing >= 0 && nothing_played) + if (mpctx->error_playing == 0 && nothing_played) mpctx->error_playing = MPV_ERROR_NOTHING_TO_PLAY; if (mpctx->error_playing < 0) { end_event.error = mpctx->error_playing; end_event.reason = MPV_END_FILE_REASON_ERROR; + } else if (mpctx->error_playing == 2) { + end_event.reason = MPV_END_FILE_REASON_REDIRECT; } else { end_event.reason = MPV_END_FILE_REASON_EOF; } |