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 the ``expand-properties`` prefix, or the ``mp.get_property`` family of
functions. 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])`` ``mp.get_property(name [,def])``
Return the value of the given property as string. These are the same 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 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; 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) static int script_set_osd_ass(lua_State *L)
{ {
struct MPContext *mpctx = get_mpctx(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(find_config_file),
FN_ENTRY(command), FN_ENTRY(command),
FN_ENTRY(commandv), FN_ENTRY(commandv),
FN_ENTRY(command_native),
FN_ENTRY(get_property_bool), FN_ENTRY(get_property_bool),
FN_ENTRY(get_property_number), FN_ENTRY(get_property_number),
FN_ENTRY(get_property_native), FN_ENTRY(get_property_native),