summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2017-04-01 20:36:39 +0200
committerwm4 <wm4@nowhere>2017-04-01 20:36:39 +0200
commita071d5fcfeee4cc0ac58a4e0cf1968c8c92ff080 (patch)
tree9ad851a36cba05801f691e7360ea5001b540ef65
parentec3dd7164ceea9ceda71e05e774501874fd20924 (diff)
downloadmpv-a071d5fcfeee4cc0ac58a4e0cf1968c8c92ff080.tar.bz2
mpv-a071d5fcfeee4cc0ac58a4e0cf1968c8c92ff080.tar.xz
input: add "async" flag
Obviously, this has no effect on commands which do not support this explicitly. A later commit will enable this for screenshots. Also add some wording on mpv_command_async(), which has nothing to do with this. Having a more elegant, unified behavior would be nice. But the API function was not created for this - it's merely for running commands _synchronously_ on the core, but without blocking the client API caller (if the API user consistently uses only async functions).
-rw-r--r--DOCS/man/input.rst6
-rw-r--r--input/cmd_parse.c1
-rw-r--r--input/input.h1
-rw-r--r--libmpv/client.h4
4 files changed, 12 insertions, 0 deletions
diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst
index 7dded1cca1..babfd1aacd 100644
--- a/DOCS/man/input.rst
+++ b/DOCS/man/input.rst
@@ -826,6 +826,12 @@ prefixes can be specified. They are separated by whitespace.
``repeatable``
For some commands, keeping a key pressed doesn't run the command repeatedly.
This prefix forces enabling key repeat in any case.
+``async``
+ Allow asynchronous execution (if possible). Note that only a few commands
+ will support this (usually this is explicitly documented). Some commands
+ are asynchronous by default (or rather, their effects might manifest
+ after completion of the command). The semantics of this flag might change
+ in the future. Set it only
All of the osd prefixes are still overridden by the global ``--osd-level``
settings.
diff --git a/input/cmd_parse.c b/input/cmd_parse.c
index 01e4bb6411..b0c6c50753 100644
--- a/input/cmd_parse.c
+++ b/input/cmd_parse.c
@@ -49,6 +49,7 @@ static const struct flag cmd_flags[] = {
{"expand-properties", 0, MP_EXPAND_PROPERTIES},
{"raw", MP_EXPAND_PROPERTIES, 0},
{"repeatable", 0, MP_ALLOW_REPEAT},
+ {"async", 0, MP_ASYNC_CMD},
{0}
};
diff --git a/input/input.h b/input/input.h
index fb928e0808..dfc14078f3 100644
--- a/input/input.h
+++ b/input/input.h
@@ -34,6 +34,7 @@ enum mp_cmd_flags {
MP_ON_OSD_MSG = 4, // force a message, if applicable
MP_EXPAND_PROPERTIES = 8, // expand strings as properties
MP_ALLOW_REPEAT = 16, // if used as keybinding, allow key repeat
+ MP_ASYNC_CMD = 32,
MP_ON_OSD_FLAGS = MP_ON_OSD_NO | MP_ON_OSD_AUTO |
MP_ON_OSD_BAR | MP_ON_OSD_MSG,
diff --git a/libmpv/client.h b/libmpv/client.h
index a016df691f..ee4290e22b 100644
--- a/libmpv/client.h
+++ b/libmpv/client.h
@@ -879,6 +879,10 @@ int mpv_command_string(mpv_handle *ctx, const char *args);
* MPV_EVENT_COMMAND_REPLY event. (This event will also have an
* error code set if running the command failed.)
*
+ * This has nothing to do with the "async" command prefix, although they might
+ * be unified in the future. For now, calling this API means that the command
+ * will be synchronously executed on the core, without blocking the API user.
+ *
* @param reply_userdata the value mpv_event.reply_userdata of the reply will
* be set to (see section about asynchronous calls)
* @param args NULL-terminated list of strings (see mpv_command())