diff options
author | wm4 <wm4@nowhere> | 2015-03-04 17:21:02 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2015-03-04 17:31:36 +0100 |
commit | 5c49fe97cba11bf6cd58b6e18577dbf8095a5222 (patch) | |
tree | 359c365054e7e44372e57cea404c5288e199ad64 /player | |
parent | 9e1866af1ecb8faf2b3e913eaca60c4a36911108 (diff) | |
download | mpv-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')
-rw-r--r-- | player/command.c | 15 |
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); |