From c5a4b229486a1b26890ed06ef251e473f0fd8c0b Mon Sep 17 00:00:00 2001 From: Marius Vlad Date: Mon, 10 Oct 2022 17:03:15 +0300 Subject: [PATCH] src: Allow to start other clients With shell-client-ext is a new section entry to add to allow starting the gRPC server helper client. Signed-off-by: Marius Vlad Change-Id: I41d62c932648699aa21837afc2de5103912c370d --- src/compositor.c | 7 ++++++- src/ivi-compositor.h | 3 ++- src/shell.c | 14 ++++++-------- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/compositor.c b/src/compositor.c index 634c468..c143fd2 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -1816,7 +1816,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 4211399..9fe6cf1 100644 --- a/src/shell.c +++ b/src/shell.c @@ -986,17 +986,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; @@ -1009,9 +1008,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; -- 2.16.6