summaryrefslogtreecommitdiffstats
path: root/stream/stream.c
diff options
context:
space:
mode:
Diffstat (limited to 'stream/stream.c')
-rw-r--r--stream/stream.c23
1 files changed, 5 insertions, 18 deletions
diff --git a/stream/stream.c b/stream/stream.c
index 5eee953bf6..59cd2f7763 100644
--- a/stream/stream.c
+++ b/stream/stream.c
@@ -56,10 +56,6 @@ char *cdrom_device = NULL;
char *dvd_device = NULL;
int dvd_title = 0;
-struct input_ctx;
-static int (*stream_check_interrupt_cb)(struct input_ctx *ctx, int time);
-static struct input_ctx *stream_check_interrupt_ctx;
-
extern const stream_info_t stream_info_vcd;
extern const stream_info_t stream_info_cdda;
extern const stream_info_t stream_info_dvb;
@@ -409,7 +405,7 @@ static int stream_reconnect(stream_t *s)
sleep_ms = MPMIN(sleep_ms * 2, RECONNECT_SLEEP_MAX_MS);
}
- if (stream_check_interrupt(0))
+ if (stream_check_interrupt(s))
return 0;
s->eof = 1;
@@ -757,20 +753,11 @@ void free_stream(stream_t *s)
talloc_free(s);
}
-void stream_set_interrupt_callback(int (*cb)(struct input_ctx *, int),
- struct input_ctx *ctx)
-{
- stream_check_interrupt_cb = cb;
- stream_check_interrupt_ctx = ctx;
-}
-
-int stream_check_interrupt(int time)
+bool stream_check_interrupt(struct stream *s)
{
- if (!stream_check_interrupt_cb) {
- mp_sleep_us(time * 1000);
- return 0;
- }
- return stream_check_interrupt_cb(stream_check_interrupt_ctx, time);
+ if (!s->global || !s->global->stream_interrupt_cb)
+ return false;
+ return s->global->stream_interrupt_cb(s->global->stream_interrupt_cb_ctx);
}
stream_t *open_memory_stream(void *data, int len)