1
0
mirror of https://github.com/mpv-player/mpv synced 2025-02-16 20:27:23 +00:00

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
This commit is contained in:
wm4 2020-05-14 21:40:43 +02:00
parent edaefd6b47
commit 26bd8479d0
2 changed files with 11 additions and 1 deletions

View File

@ -3760,6 +3760,8 @@ Input
In both cases, you must sure the FD is actually inherited by mpv (do not In both cases, you must sure the FD is actually inherited by mpv (do not
set the POSIX ``CLOEXEC`` flag). set the POSIX ``CLOEXEC`` flag).
The player quits when the connection is closed.
This is somewhat similar to the removed ``--input-file`` option, except it This is somewhat similar to the removed ``--input-file`` option, except it
supports only integer FDs, and cannot open actual paths. supports only integer FDs, and cannot open actual paths.

View File

@ -61,6 +61,7 @@ struct client_arg {
const char *client_name; const char *client_name;
int client_fd; int client_fd;
bool close_client_fd; bool close_client_fd;
bool quit_on_close;
bool writable; bool writable;
}; };
@ -210,8 +211,14 @@ done:
talloc_free(client_msg.start); talloc_free(client_msg.start);
if (arg->close_client_fd) if (arg->close_client_fd)
close(arg->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); talloc_free(arg);
if (quit) {
mpv_terminate_destroy(h);
} else {
mpv_destroy(h);
}
return NULL; 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", id >= 0 ? talloc_asprintf(client, "ipc-%d", id) : "ipc",
.client_fd = fd, .client_fd = fd,
.close_client_fd = id >= 0, .close_client_fd = id >= 0,
.quit_on_close = id < 0,
.writable = true, .writable = true,
}; };