summaryrefslogtreecommitdiffstats
path: root/player/command.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-03-04 17:21:02 +0100
committerwm4 <wm4@nowhere>2015-03-04 17:31:36 +0100
commit5c49fe97cba11bf6cd58b6e18577dbf8095a5222 (patch)
tree359c365054e7e44372e57cea404c5288e199ad64 /player/command.c
parent9e1866af1ecb8faf2b3e913eaca60c4a36911108 (diff)
downloadmpv-5c49fe97cba11bf6cd58b6e18577dbf8095a5222.tar.bz2
mpv-5c49fe97cba11bf6cd58b6e18577dbf8095a5222.tar.xz
input: use flag option type for some input commands
This gets rid of the need for a second (or more) parameters; instead it can be all in one parameter. The (now) redundant parameter is still parsed for compatibility, though. The way the flags make each other conflict is a bit tricky: they have overlapping bits, and the option parser disallows setting already set bits.
Diffstat (limited to 'player/command.c')
-rw-r--r--player/command.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/player/command.c b/player/command.c
index b10ad6a34b..7c0efdc7d7 100644
--- a/player/command.c
+++ b/player/command.c
@@ -4185,8 +4185,12 @@ int run_command(MPContext *mpctx, mp_cmd_t *cmd)
switch (cmd->id) {
case MP_CMD_SEEK: {
double v = cmd->args[0].v.d * cmd->scale;
- int abs = cmd->args[1].v.i;
- int exact = cmd->args[2].v.i;
+ int abs = cmd->args[1].v.i & 3;
+ int exact = ((cmd->args[2].v.i | cmd->args[1].v.i) >> 3) & 3;
+ switch (exact) {
+ case 1: exact = -1; break;
+ case 2: exact = 1; break;
+ }
if (!mpctx->num_sources)
return -1;
mark_seek(mpctx);
@@ -4655,9 +4659,12 @@ int run_command(MPContext *mpctx, mp_cmd_t *cmd)
break;
}
- case MP_CMD_SCREENSHOT:
- screenshot_request(mpctx, cmd->args[0].v.i, cmd->args[1].v.i, msg_osd);
+ case MP_CMD_SCREENSHOT: {
+ int mode = cmd->args[0].v.i & 3;
+ int freq = (cmd->args[0].v.i | cmd->args[1].v.i) >> 3;
+ screenshot_request(mpctx, mode, freq, msg_osd);
break;
+ }
case MP_CMD_SCREENSHOT_TO_FILE:
screenshot_to_file(mpctx, cmd->args[0].v.s, cmd->args[1].v.i, msg_osd);