History

js: expose mpv_abort_async_command() (match dbe831bd)

With minor difference from lua, as documented.

Avi Halachmi (:avih) committed 7 years ago

Commit 44f8dcc1 parent ad0a5253 files · +26 −3Browse files

Unified · Split

3 files
  1. DOCS/man/javascript.rst +4 −2
  2. player/javascript.c +8 −0
  3. player/javascript/defaults.js +14 −1
DOCS/man/javascript.rst+4−2
@@ -96,8 +96,10 @@ Where the Lua APIs use ``nil`` to indicate error, JS APIs use ``undefined``. · 95 unmodified lines
9696
9797 ``mp.command_native(table [,def])`` (LE)
9898
99−``mp.command_native_async(table [,fn])`` (LE) Note: ``error`` is empty string on
100−success.
99+``id = mp.command_native_async(table [,fn])`` (LE) Notes: ``id`` is true-thy on
100+success, ``fn`` is called always a-sync, ``error`` is empty string on success.
101+
102+``mp.abort_async_command(id)``
101103
102104 ``mp.get_property(name [,def])`` (LE)
103105
player/javascript.c+8−0
@@ -718,6 +718,13 @@ static void script__command_native_async(js_State *J, void *af) · 717 unmodified lines
718718 push_status(J, mpv_command_node_async(jclient(J), id, &node));
719719 }
720720
721+// args: async-command-id
722+static void script__abort_async_command(js_State *J)
723+{
724+ mpv_abort_async_command(jclient(J), jsL_checkuint64(J, 1));
725+ push_success(J);
726+}
727+
721728 // args: none, result in millisec
722729 static void script_get_time_ms(js_State *J)
723730 {
@@ -1232,6 +1239,7 @@ static const struct fn_entry main_fns[] = { · 508 unmodified lines
12321239 FN_ENTRY(commandv, 0),
12331240 AF_ENTRY(command_native, 2),
12341241 AF_ENTRY(_command_native_async, 2),
1242+ FN_ENTRY(_abort_async_command, 1),
12351243 FN_ENTRY(get_property_bool, 2),
12361244 FN_ENTRY(get_property_number, 2),
12371245 AF_ENTRY(get_property_native, 2),
player/javascript/defaults.js+14−1
@@ -144,8 +144,15 @@ var async_next_id = 1; · 143 unmodified lines
144144
145145 mp.command_native_async = function command_native_async(node, cb) {
146146 var id = async_next_id++;
147+ cb = cb || function dummy() {};
148+ if (!mp._command_native_async(id, node)) {
149+ var le = mp.last_error();
150+ setTimeout(cb, 0, false, undefined, le); /* callback async */
151+ mp._set_last_error(le);
152+ return undefined;
153+ }
147154 async_callbacks[id] = cb;
148− return mp._command_native_async(id, node);
155+ return id;
149156 }
150157
151158 function async_command_handler(ev) {
@@ -157,6 +164,12 @@ function async_command_handler(ev) { · 5 unmodified lines
157164 cb(true, ev.result, "");
158165 }
159166
167+mp.abort_async_command = function abort_async_command(id) {
168+ // cb will be invoked regardless, possibly with the abort result
169+ if (async_callbacks[id])
170+ mp._abort_async_command(id);
171+}
172+
160173 /**********************************************************************
161174 * key bindings
162175 *********************************************************************/

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t