summaryrefslogtreecommitdiffstats
path: root/player/command.c
diff options
context:
space:
mode:
Diffstat (limited to 'player/command.c')
-rw-r--r--player/command.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/player/command.c b/player/command.c
index cd623c03f4..ffe9683adb 100644
--- a/player/command.c
+++ b/player/command.c
@@ -5700,15 +5700,16 @@ static void cmd_subprocess(void *p)
.capture = {0, cmd->args[3].v.i, cmd->args[4].v.i},
};
- struct mp_cancel *cancel = NULL;
- if (playback_only)
- cancel = mpctx->playback_abort;
+ pthread_mutex_lock(&mpctx->abort_lock);
+ cmd->abort->coupled_to_playback = playback_only;
+ mp_abort_recheck_locked(mpctx, cmd->abort);
+ pthread_mutex_unlock(&mpctx->abort_lock);
mp_core_unlock(mpctx);
char *error = NULL;
- int status = mp_subprocess(args, cancel, &ctx, subprocess_stdout,
- subprocess_stderr, &error);
+ int status = mp_subprocess(args, cmd->abort->cancel, &ctx,
+ subprocess_stdout, subprocess_stderr, &error);
mp_core_lock(mpctx);
@@ -6156,6 +6157,7 @@ const struct mp_cmd_def mp_cmds[] = {
OPT_FLAG("capture_stderr", v.i, 0, OPTDEF_INT(0)),
},
.spawn_thread = true,
+ .can_abort = true,
},
{ "set", cmd_set, { ARG_STRING, ARG_STRING } },