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-10-21 20:16:53 +0300
commitc5a4b229486a1b26890ed06ef251e473f0fd8c0b (patch)
treedf406fcb6af8d28c2cf623512ac2b5c95aa0f3c3
parent68dab999a68e42af926e8e6b1f7adb834bea6d51 (diff)
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 <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 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;