From c5c21abf78811d1458dc4ade95e5f04cb4b14733 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sat, 11 Oct 2014 00:25:07 +0200 Subject: lua: add command_native() function This is the Lua equivalent of mpv_command_node(). --- player/lua.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'player') diff --git a/player/lua.c b/player/lua.c index 8aa6b594fb..ef8dc1ca7d 100644 --- a/player/lua.c +++ b/player/lua.c @@ -891,6 +891,28 @@ static int script_raw_unobserve_property(lua_State *L) return 1; } +static int script_command_native(lua_State *L) +{ + struct script_ctx *ctx = get_ctx(L); + struct mpv_node node; + struct mpv_node result; + void *tmp = talloc_new(NULL); + makenode(tmp, &node, L, 1); + int err = mpv_command_node(ctx->client, &node, &result); + talloc_free(tmp); + const char *errstr = mpv_error_string(err); + if (err >= 0) { + bool ok = pushnode(L, &result, 50); + mpv_free_node_contents(&result); + if (ok) + return 1; + errstr = "command result too large"; + } + lua_pushvalue(L, 2); + lua_pushstring(L, errstr); + return 2; +} + static int script_set_osd_ass(lua_State *L) { struct MPContext *mpctx = get_mpctx(L); @@ -1117,6 +1139,7 @@ static const struct fn_entry main_fns[] = { FN_ENTRY(find_config_file), FN_ENTRY(command), FN_ENTRY(commandv), + FN_ENTRY(command_native), FN_ENTRY(get_property_bool), FN_ENTRY(get_property_number), FN_ENTRY(get_property_native), -- cgit v1.2.3