From 26bd8479d0fe165d9afbc84a1680ad43209d9058 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 14 May 2020 21:40:43 +0200 Subject: ipc: make --input-ipc-client terminate player on connection close As discussed in the referenced issue. This is quite a behavior change, bit since this option is new, and not included in any releases yet, I think it's OK. Fixes: #7648 --- input/ipc-unix.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'input') diff --git a/input/ipc-unix.c b/input/ipc-unix.c index ef9f26e5c0..b237efa1a0 100644 --- a/input/ipc-unix.c +++ b/input/ipc-unix.c @@ -61,6 +61,7 @@ struct client_arg { const char *client_name; int client_fd; bool close_client_fd; + bool quit_on_close; bool writable; }; @@ -210,8 +211,14 @@ done: talloc_free(client_msg.start); if (arg->close_client_fd) close(arg->client_fd); - mpv_destroy(arg->client); + struct mpv_handle *h = arg->client; + bool quit = arg->quit_on_close; talloc_free(arg); + if (quit) { + mpv_terminate_destroy(h); + } else { + mpv_destroy(h); + } return NULL; } @@ -252,6 +259,7 @@ static void ipc_start_client_json(struct mp_ipc_ctx *ctx, int id, int fd) id >= 0 ? talloc_asprintf(client, "ipc-%d", id) : "ipc", .client_fd = fd, .close_client_fd = id >= 0, + .quit_on_close = id < 0, .writable = true, }; -- cgit v1.2.3