diff options
author | wm4 <wm4@nowhere> | 2014-11-23 15:30:36 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-11-23 15:31:32 +0100 |
commit | 5bbd734fffde5f0d689216c07dfeb3508aeb1f57 (patch) | |
tree | bf5a2645d660cb1bc24214822de641e010ff4f52 | |
parent | 17ee2ca52444dec09713d62fb092d5df4b0d2b75 (diff) | |
download | mpv-5bbd734fffde5f0d689216c07dfeb3508aeb1f57.tar.bz2 mpv-5bbd734fffde5f0d689216c07dfeb3508aeb1f57.tar.xz |
command: don't queue framesteps
If repeated framestep commands are sent, just unpause the player, instead
of playing N frames for N repeated commands.
-rw-r--r-- | input/input.c | 1 | ||||
-rw-r--r-- | player/command.c | 15 |
2 files changed, 15 insertions, 1 deletions
diff --git a/input/input.c b/input/input.c index 7c647adef3..3a2bbbc4e5 100644 --- a/input/input.c +++ b/input/input.c @@ -537,6 +537,7 @@ static bool key_updown_ok(enum mp_command_type cmd) { switch (cmd) { case MP_CMD_SCRIPT_BINDING: + case MP_CMD_FRAME_STEP: return true; default: return false; diff --git a/player/command.c b/player/command.c index 0042d8dee7..90adf003eb 100644 --- a/player/command.c +++ b/player/command.c @@ -4113,7 +4113,20 @@ int run_command(MPContext *mpctx, mp_cmd_t *cmd) case MP_CMD_FRAME_STEP: if (!mpctx->num_sources) return -1; - add_step_frame(mpctx, 1); + if (cmd->is_up_down) { + if (cmd->is_up) { + if (mpctx->step_frames < 1) + pause_player(mpctx); + } else { + if (cmd->repeated) { + unpause_player(mpctx); + } else { + add_step_frame(mpctx, 1); + } + } + } else { + add_step_frame(mpctx, 1); + } break; case MP_CMD_FRAME_BACK_STEP: |