summaryrefslogtreecommitdiffstats
path: root/input/ipc.c
diff options
context:
space:
mode:
Diffstat (limited to 'input/ipc.c')
-rw-r--r--input/ipc.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/input/ipc.c b/input/ipc.c
index 3a735dab14..6568feacfa 100644
--- a/input/ipc.c
+++ b/input/ipc.c
@@ -20,23 +20,12 @@
#include "common/msg.h"
#include "input/input.h"
#include "misc/json.h"
+#include "misc/node.h"
#include "options/m_option.h"
#include "options/options.h"
#include "options/path.h"
#include "player/client.h"
-static mpv_node *mpv_node_map_get(mpv_node *src, const char *key)
-{
- if (src->format != MPV_FORMAT_NODE_MAP)
- return NULL;
-
- for (int i = 0; i < src->u.list->num; i++)
- if (!strcmp(key, src->u.list->keys[i]))
- return &src->u.list->values[i];
-
- return NULL;
-}
-
static mpv_node *mpv_node_array_get(mpv_node *src, int index)
{
if (src->format != MPV_FORMAT_NODE_ARRAY)
@@ -217,9 +206,13 @@ static char *json_execute_command(struct mpv_handle *client, void *ta_parent,
goto error;
}
- reqid_node = mpv_node_map_get(&msg_node, "request_id");
+ reqid_node = node_map_get(&msg_node, "request_id");
+ if (reqid_node && reqid_node->format != MPV_FORMAT_INT64) {
+ mp_warn(log, "'request_id' must be an integer. Using other types is "
+ "deprecated and will trigger an error in the future!\n");
+ }
- mpv_node *cmd_node = mpv_node_map_get(&msg_node, "command");
+ mpv_node *cmd_node = node_map_get(&msg_node, "command");
if (!cmd_node ||
(cmd_node->format != MPV_FORMAT_NODE_ARRAY) ||
!cmd_node->u.list->num)
@@ -415,6 +408,8 @@ error:
*/
if (reqid_node) {
mpv_node_map_add(ta_parent, &reply_node, "request_id", reqid_node);
+ } else {
+ mpv_node_map_add_int64(ta_parent, &reply_node, "request_id", 0);
}
mpv_node_map_add_string(ta_parent, &reply_node, "error", mpv_error_string(rc));