mirror of https://github.com/mpv-player/mpv
lua: add command_native() function
This is the Lua equivalent of mpv_command_node().
This commit is contained in:
parent
63e2b6c4ae
commit
c5c21abf78
|
@ -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
|
||||||
|
|
23
player/lua.c
23
player/lua.c
|
@ -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),
|
||||||
|
|
Loading…
Reference in New Issue