summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--input/input.c1
-rw-r--r--player/command.c15
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: