From 5c49fe97cba11bf6cd58b6e18577dbf8095a5222 Mon Sep 17 00:00:00 2001 From: wm4 Date: Wed, 4 Mar 2015 17:21:02 +0100 Subject: 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. --- player/command.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'player/command.c') 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); -- cgit v1.2.3