diff options
Diffstat (limited to 'player/client.c')
-rw-r--r-- | player/client.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/player/client.c b/player/client.c index 97bb215464..d01c611a3d 100644 --- a/player/client.c +++ b/player/client.c @@ -589,9 +589,16 @@ void mp_client_broadcast_event(struct MPContext *mpctx, int event, void *data) pthread_mutex_unlock(&clients->lock); } +// If client_name == NULL, then broadcast and free the event. int mp_client_send_event(struct MPContext *mpctx, const char *client_name, int event, void *data) { + if (!client_name) { + mp_client_broadcast_event(mpctx, event, data); + talloc_free(data); + return 0; + } + struct mp_client_api *clients = mpctx->clients; int r = 0; @@ -615,6 +622,23 @@ int mp_client_send_event(struct MPContext *mpctx, const char *client_name, return r; } +int mp_client_send_event_dup(struct MPContext *mpctx, const char *client_name, + int event, void *data) +{ + if (!client_name) { + mp_client_broadcast_event(mpctx, event, data); + return 0; + } + + struct mpv_event event_data = { + .event_id = event, + .data = data, + }; + + dup_event_data(&event_data); + return mp_client_send_event(mpctx, client_name, event, event_data.data); +} + int mpv_request_event(mpv_handle *ctx, mpv_event_id event, int enable) { if (!mpv_event_name(event) || enable < 0 || enable > 1) |