From c7d0a8f58e536b22db88a229dc2f53daf0f02951 Mon Sep 17 00:00:00 2001 From: Aman Gupta Date: Thu, 26 Sep 2019 16:11:48 -0700 Subject: stream_cb: add cancel_fn callback This allows stream_cb backends to implement blocking behavior inside read_fn, and still get notified when the user wants to cancel and stop playback. Signed-off-by: Aman Gupta --- stream/stream_cb.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'stream') diff --git a/stream/stream_cb.c b/stream/stream_cb.c index fa8871ddf6..fa52935a4b 100644 --- a/stream/stream_cb.c +++ b/stream/stream_cb.c @@ -17,9 +17,11 @@ #include "options/path.h" #include "player/client.h" #include "libmpv/stream_cb.h" +#include "misc/thread_tools.h" struct priv { mpv_stream_cb_info info; + struct mp_cancel *cancel; }; static int fill_buffer(stream_t *s, char *buffer, int max_len) @@ -98,6 +100,12 @@ static int open_cb(stream_t *stream) stream->read_chunk = 64 * 1024; stream->close = s_close; + if (p->info.cancel_fn && stream->cancel) { + p->cancel = mp_cancel_new(p); + mp_cancel_set_parent(p->cancel, stream->cancel); + mp_cancel_set_cb(p->cancel, p->info.cancel_fn, p->info.cookie); + } + return STREAM_OK; } -- cgit v1.2.3