From 57e691b9011e9bdcc4fbc53a484f80057c65a891 Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 2 Dec 2015 23:08:39 +0100 Subject: client API: disallow masking MPV_EVENT_SHUTDOWN This makes no sense, because the client is obligated to react to this event. This also happens to fix a deadlock with JSON IPC clients sending "disable_event all", because MPV_EVENT_SHUTDOWN was used to stop the thread driving the socket connection (fixes #2558). --- player/client.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'player') diff --git a/player/client.c b/player/client.c index b1dd8d3c55..f4758f653c 100644 --- a/player/client.c +++ b/player/client.c @@ -711,6 +711,8 @@ int mpv_request_event(mpv_handle *ctx, mpv_event_id event, int enable) { if (!mpv_event_name(event) || enable < 0 || enable > 1) return MPV_ERROR_INVALID_PARAMETER; + if (event == MPV_EVENT_SHUTDOWN && !enable) + return MPV_ERROR_INVALID_PARAMETER; assert(event < (int)INTERNAL_EVENT_BASE); // excluded above; they have no name pthread_mutex_lock(&ctx->lock); uint64_t bit = 1ULL << event; -- cgit v1.2.3