1 From 5fed5c51ca8c1574804362bfdea4930c16457d34 Mon Sep 17 00:00:00 2001
2 From: Michael Teyfel <mteyfel@de.adit-jv.com>
3 Date: Fri, 12 Oct 2018 16:57:24 +0200
4 Subject: [PATCH 3/3] ivi-controller: load id-agent module
6 Reworked for wayland-ivi-extension 2.2.0 by Scott Murray.
8 Signed-off-by: Michael Teyfel <mteyfel@de.adit-jv.com>
9 Signed-off-by: Scott Murray <scott.murray@konsulko.com>
11 diff --git a/weston-ivi-shell/src/ivi-controller.c b/weston-ivi-shell/src/ivi-controller.c
12 index 8faec2a..8fa51f4 100644
13 --- a/weston-ivi-shell/src/ivi-controller.c
14 +++ b/weston-ivi-shell/src/ivi-controller.c
15 @@ -2154,6 +2154,41 @@ load_input_module(struct ivishell *shell)
19 +static int load_id_agent_module(struct ivishell *shell)
21 + struct weston_config *config = wet_get_config(shell->compositor);
22 + struct weston_config_section *section;
23 + char *id_agent_module = NULL;
25 + int (*id_agent_module_init)(struct weston_compositor *compositor,
26 + const struct ivi_layout_interface *interface);
28 + section = weston_config_get_section(config, "ivi-shell", NULL, NULL);
30 + if (weston_config_section_get_string(section, "ivi-id-agent-module",
31 + &id_agent_module, NULL) < 0) {
32 + /* input events are handled by weston's default grabs */
33 + weston_log("ivi-controller: No ivi-id-agent-module set\n");
37 + id_agent_module_init = wet_load_module_entrypoint(id_agent_module, "id_agent_module_init");
38 + if (!id_agent_module_init) {
39 + free(id_agent_module);
43 + if (id_agent_module_init(shell->compositor, shell->interface) != 0) {
44 + weston_log("ivi-controller: Initialization of id-agent module failed\n");
45 + free(id_agent_module);
49 + free(id_agent_module);
55 launch_client_process(void *data)
57 @@ -2221,6 +2256,10 @@ wet_module_init(struct weston_compositor *compositor,
58 shell->destroy_listener.notify = ivi_shell_destroy;
59 wl_signal_add(&compositor->destroy_signal, &shell->destroy_listener);
61 + if (load_id_agent_module(shell) < 0) {
62 + weston_log("ivi-controller: id-agent module not loaded\n");
65 if (shell->bkgnd_surface_id && shell->ivi_client_name) {
66 loop = wl_display_get_event_loop(compositor->wl_display);
67 wl_event_loop_add_idle(loop, launch_client_process, shell);