summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2022-10-10 17:03:15 +0300
committerMarius Vlad <marius.vlad@collabora.com>2022-12-05 15:27:26 +0200
commit05bb0384732480a9f24a8d9093ac2da20081e307 (patch)
treec19334fcf20c0f02d51b0b1e7bfac3b8d021687a
parent14a1292a393774727fb85662d98d8cbe4bc6e5cd (diff)
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 <marius.vlad@collabora.com> Change-Id: I41d62c932648699aa21837afc2de5103912c370d
-rw-r--r--src/compositor.c7
-rw-r--r--src/ivi-compositor.h3
-rw-r--r--src/shell.c14
3 files changed, 14 insertions, 10 deletions
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;