From 51abca8afd7661a33d54576a00a1fcc6661d1635 Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 24 Dec 2014 14:32:02 +0100 Subject: ipc: add enable_event and disable_event commands This was requested. --- input/ipc.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'input') diff --git a/input/ipc.c b/input/ipc.c index 4fd9cf17e1..2ad850e5ed 100644 --- a/input/ipc.c +++ b/input/ipc.c @@ -424,6 +424,39 @@ static char *json_execute_command(struct client_arg *arg, void *ta_parent, } else if (!strcmp("resume", cmd)) { mpv_resume(arg->client); rc = MPV_ERROR_SUCCESS; + } else if (!strcmp("enable_event", cmd) || + !strcmp("disable_event", cmd)) + { + bool enable = !strcmp("enable_event", cmd); + + if (cmd_node->u.list->num != 2) { + rc = MPV_ERROR_INVALID_PARAMETER; + goto error; + } + + if (cmd_node->u.list->values[1].format != MPV_FORMAT_STRING) { + rc = MPV_ERROR_INVALID_PARAMETER; + goto error; + } + + char *name = cmd_node->u.list->values[1].u.string; + if (strcmp(name, "all") == 0) { + for (int n = 0; n < 64; n++) + mpv_request_event(arg->client, n, enable); + rc = MPV_ERROR_SUCCESS; + } else { + int event = -1; + for (int n = 0; n < 64; n++) { + const char *evname = mpv_event_name(n); + if (evname && strcmp(evname, name) == 0) + event = n; + } + if (event < 0) { + rc = MPV_ERROR_INVALID_PARAMETER; + goto error; + } + rc = mpv_request_event(arg->client, event, enable); + } } else { mpv_node result_node; -- cgit v1.2.3