mirror of https://github.com/mpv-player/mpv
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:
parent
edaefd6b47
commit
26bd8479d0
|
@ -3760,6 +3760,8 @@ Input
|
|||
In both cases, you must sure the FD is actually inherited by mpv (do not
|
||||
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
|
||||
supports only integer FDs, and cannot open actual paths.
|
||||
|
||||
|
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue