diff options
Diffstat (limited to 'mpvcore/input/input.c')
-rw-r--r-- | mpvcore/input/input.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/mpvcore/input/input.c b/mpvcore/input/input.c index 3e0313976a..744d474919 100644 --- a/mpvcore/input/input.c +++ b/mpvcore/input/input.c @@ -2309,12 +2309,17 @@ struct input_ctx *mp_input_init(struct mpv_global *global) } #ifndef __MINGW32__ - long ret = pipe(ictx->wakeup_pipe); - for (int i = 0; i < 2 && ret >= 0; i++) { - ret = fcntl(ictx->wakeup_pipe[i], F_GETFL); - if (ret < 0) - break; - ret = fcntl(ictx->wakeup_pipe[i], F_SETFL, ret | O_NONBLOCK); + int ret = pipe(ictx->wakeup_pipe); + if (ret == 0) { + for (int i = 0; i < 2 && ret >= 0; i++) { + mp_set_cloexec(ictx->wakeup_pipe[i]); + ret = fcntl(ictx->wakeup_pipe[i], F_GETFL); + if (ret < 0) + break; + ret = fcntl(ictx->wakeup_pipe[i], F_SETFL, ret | O_NONBLOCK); + if (ret < 0) + break; + } } if (ret < 0) MP_ERR(ictx, "Failed to initialize wakeup pipe: %s\n", strerror(errno)); |