diff --git a/DOCS/man/javascript.rst b/DOCS/man/javascript.rst index 99112db40b..e164408266 100644 --- a/DOCS/man/javascript.rst +++ b/DOCS/man/javascript.rst @@ -91,7 +91,7 @@ Where the Lua APIs use ``nil`` to indicate error, JS APIs use ``undefined``. ``mp.command_native(table [,def])`` (LE) ``id = mp.command_native_async(table [,fn])`` (LE) Notes: ``id`` is true-thy on -success, ``fn`` is called always a-sync, ``error`` is empty string on success. +success, ``error`` is empty string on success. ``mp.abort_async_command(id)`` diff --git a/DOCS/man/lua.rst b/DOCS/man/lua.rst index cdbe7498c2..546cf93a1d 100644 --- a/DOCS/man/lua.rst +++ b/DOCS/man/lua.rst @@ -191,6 +191,8 @@ The ``mp`` module is preloaded, although it can be loaded manually with If starting the command failed for some reason, ``nil, error`` is returned, and ``fn`` is called indicating failure, using the same error value. + ``fn`` is always called asynchronously, even if the command failed to start. + ``mp.abort_async_command(t)`` Abort a ``mp.command_native_async`` call. The argument is the return value of that command (which starts asynchronous execution of the command). diff --git a/player/lua/defaults.lua b/player/lua/defaults.lua index 0643c0b1d9..dcbb4e0f62 100644 --- a/player/lua/defaults.lua +++ b/player/lua/defaults.lua @@ -617,7 +617,7 @@ function mp.command_native_async(node, cb) async_next_id = async_next_id + 1 local res, err = mp.raw_command_native_async(id, node) if not res then - cb(false, nil, err) + mp.add_timeout(0, function() cb(false, nil, err) end) return res, err end local t = {cb = cb, id = id}