From: Marius Vlad Date: Mon, 10 Oct 2022 14:03:15 +0000 (+0300) Subject: compositor: Allow to start other clients X-Git-Tag: 17.90.0~59 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=05bb0384732480a9f24a8d9093ac2da20081e307;p=src%2Fagl-compositor.git compositor: Allow to start other clients This introduces shell-client-ext as a new section entry to add to allow starting the gRPC server helper client. Bug-AGL: SPEC-4503 Signed-off-by: Marius Vlad Change-Id: I41d62c932648699aa21837afc2de5103912c370d --- diff --git a/src/compositor.c b/src/compositor.c index 15fd42a..7e89926 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -1829,7 +1829,12 @@ int wet_main(int argc, char *argv[], const struct weston_testsuite_data *test_da weston_compositor_wake(ivi.compositor); ivi_shell_create_global(&ivi); - ivi_launch_shell_client(&ivi); + + ivi_launch_shell_client(&ivi, "shell-client", + &ivi.shell_client.client); + ivi_launch_shell_client(&ivi, "shell-client-ext", + &ivi.shell_client_ext.client); + if (debug) ivi_screenshooter_create(&ivi); ivi_agl_systemd_notify(&ivi); diff --git a/src/ivi-compositor.h b/src/ivi-compositor.h index 5a0f66c..1d03747 100644 --- a/src/ivi-compositor.h +++ b/src/ivi-compositor.h @@ -94,6 +94,7 @@ struct ivi_compositor { } shell_client; struct { + struct wl_client *client; struct wl_resource *resource; bool doas_requested; enum agl_shell_bound_status status; @@ -361,7 +362,7 @@ int ivi_shell_create_global(struct ivi_compositor *ivi); int -ivi_launch_shell_client(struct ivi_compositor *ivi); +ivi_launch_shell_client(struct ivi_compositor *ivi, const char *cmd_section, struct wl_client **client); int ivi_desktop_init(struct ivi_compositor *ivi); diff --git a/src/shell.c b/src/shell.c index ad62a27..ab74f69 100644 --- a/src/shell.c +++ b/src/shell.c @@ -996,17 +996,16 @@ process_handle_sigchld(struct weston_process *process, int status) } int -ivi_launch_shell_client(struct ivi_compositor *ivi) +ivi_launch_shell_client(struct ivi_compositor *ivi, const char *cmd_section, + struct wl_client **client) { struct process_info *pinfo; struct weston_config_section *section; char *command = NULL; - section = weston_config_get_section(ivi->config, "shell-client", - NULL, NULL); + section = weston_config_get_section(ivi->config, cmd_section, NULL, NULL); if (section) - weston_config_section_get_string(section, "command", - &command, NULL); + weston_config_section_get_string(section, "command", &command, NULL); if (!command) return -1; @@ -1019,9 +1018,8 @@ ivi_launch_shell_client(struct ivi_compositor *ivi) if (!pinfo->path) goto out_free; - ivi->shell_client.client = client_launch(ivi->compositor, &pinfo->proc, - command, process_handle_sigchld); - if (!ivi->shell_client.client) + *client = client_launch(ivi->compositor, &pinfo->proc, command, process_handle_sigchld); + if (!*client) goto out_str; return 0;