lua: add command_native() function

This is the Lua equivalent of mpv_command_node().
This commit is contained in:
wm4 2014-10-11 00:25:07 +02:00
parent 63e2b6c4ae
commit c5c21abf78
2 changed files with 32 additions and 0 deletions

View File

@ -94,6 +94,15 @@ The ``mp`` module is preloaded, although it can be loaded manually with
the ``expand-properties`` prefix, or the ``mp.get_property`` family of
functions.
``mp.command_native(table [,def])``
Similar to ``mp.commandv``, but pass the argument list as table. This has
the advantage that in at least some cases, arguments can be passed as
native types.
Returns a result table on success (usually empty), or ``def, error`` on
error. ``def`` is the second parameter provided to the function, and is
nil if it's missing.
``mp.get_property(name [,def])``
Return the value of the given property as string. These are the same
properties as used in input.conf. See `Properties`_ for a list of

View File

@ -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),