From 1a720377203f7cee2ab949c5aa2bc9e0a2a7e0f2 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 26 Mar 2020 23:58:09 +0100 Subject: scripting: remove race condition when toggling internal scripts Scripts such as the OSC can be loaded and unloaded at runtime by toggling the option that enables them. (It even works, although normally it's only used to control initial loading.) Unloading was racy because it used the client name; fix this. The load-script change is an accidental feature. And probably useless. --- player/command.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'player/command.c') diff --git a/player/command.c b/player/command.c index 3098e1d9bf..822a54c4a7 100644 --- a/player/command.c +++ b/player/command.c @@ -5538,8 +5538,14 @@ static void cmd_load_script(void *p) struct MPContext *mpctx = cmd->mpctx; char *script = cmd->args[0].v.s; - if (mp_load_user_script(mpctx, script) < 0) + int64_t id = mp_load_user_script(mpctx, script); + if (id > 0) { + struct mpv_node *res = &cmd->result; + node_init(res, MPV_FORMAT_NODE_MAP, NULL); + node_map_add_int64(res, "client_id", id); + } else { cmd->success = false; + } } static void cache_dump_poll(struct MPContext *mpctx) -- cgit v1.2.3