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:
parent
edaefd6b47
commit
26bd8479d0
@ -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.
|
||||||
|
|
||||||
|
@ -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,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user