summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/tech/slave.txt2
-rw-r--r--input/input.c11
-rw-r--r--mplayer.c3
3 files changed, 13 insertions, 3 deletions
diff --git a/DOCS/tech/slave.txt b/DOCS/tech/slave.txt
index 2ad276defd..df23826c3c 100644
--- a/DOCS/tech/slave.txt
+++ b/DOCS/tech/slave.txt
@@ -30,6 +30,8 @@ As a temporary hack, there is also the _experimental_ "pausing_keep_force "
prefix, with which MPlayer will not exit the pause loop at all.
Like this you can avoid the "frame stepping" effect of "pausing_keep "
but most commands will either not work at all or behave in unexpected ways.
+For "set_mouse_pos" and "key_down_event", "pausing_keep_force" is the default
+since other values do not make much sense for them.
Available commands ('mplayer -input cmdlist' will print a list):
diff --git a/input/input.c b/input/input.c
index dcbeb2b11d..a12dd27958 100644
--- a/input/input.c
+++ b/input/input.c
@@ -767,7 +767,7 @@ int mp_input_parse_and_queue_cmds(const char *str) {
mp_cmd_t*
mp_input_parse_cmd(char* str) {
int i,l;
- int pausing = 0;
+ int pausing = -1;
char *ptr,*e;
mp_cmd_t *cmd;
const mp_cmd_t *cmd_def;
@@ -817,6 +817,15 @@ mp_input_parse_cmd(char* str) {
cmd = calloc(1, sizeof(mp_cmd_t));
cmd->id = cmd_def->id;
cmd->name = strdup(cmd_def->name);
+ if (pausing == -1) {
+ switch (cmd->id) {
+ case MP_CMD_KEYDOWN_EVENTS:
+ case MP_CMD_SET_MOUSE_POS:
+ pausing = 4; break;
+ default:
+ pausing = 0; break;
+ }
+ }
cmd->pausing = pausing;
ptr = str;
diff --git a/mplayer.c b/mplayer.c
index 1b6a35025b..81fc389ae0 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -2346,8 +2346,7 @@ static void pause_loop(void)
if (mpctx->audio_out && mpctx->sh_audio)
mpctx->audio_out->pause(); // pause audio, keep data if possible
- while ( (cmd = mp_input_get_cmd(20, 1, 1)) == NULL
- || cmd->id == MP_CMD_SET_MOUSE_POS || cmd->pausing == 4) {
+ while ( (cmd = mp_input_get_cmd(20, 1, 1)) == NULL || cmd->pausing == 4) {
if (cmd) {
cmd = mp_input_get_cmd(0,1,0);
run_command(mpctx, cmd);