From 5fed5c51ca8c1574804362bfdea4930c16457d34 Mon Sep 17 00:00:00 2001 From: Michael Teyfel Date: Fri, 12 Oct 2018 16:57:24 +0200 Subject: [PATCH 3/3] ivi-controller: load id-agent module Signed-off-by: Michael Teyfel --- weston-ivi-shell/src/ivi-controller.c | 39 +++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/weston-ivi-shell/src/ivi-controller.c b/weston-ivi-shell/src/ivi-controller.c index 6d95c88..f6ac174 100644 --- a/weston-ivi-shell/src/ivi-controller.c +++ b/weston-ivi-shell/src/ivi-controller.c @@ -2164,6 +2164,41 @@ load_input_module(struct ivishell *shell) return 0; } +static int load_id_agent_module(struct ivishell *shell) +{ + struct weston_config *config = wet_get_config(shell->compositor); + struct weston_config_section *section; + char *id_agent_module = NULL; + + int (*id_agent_module_init)(struct weston_compositor *compositor, + const struct ivi_layout_interface *interface); + + section = weston_config_get_section(config, "ivi-shell", NULL, NULL); + + if (weston_config_section_get_string(section, "ivi-id-agent-module", + &id_agent_module, NULL) < 0) { + /* input events are handled by weston's default grabs */ + weston_log("ivi-controller: No ivi-id-agent-module set\n"); + return 0; + } + + id_agent_module_init = wet_load_module_entrypoint(id_agent_module, "id_agent_module_init"); + if (!id_agent_module_init) { + free(id_agent_module); + return -1; + } + + if (id_agent_module_init(shell->compositor, shell->interface) != 0) { + weston_log("ivi-controller: Initialization of id-agent module failed\n"); + free(id_agent_module); + return -1; + } + + free(id_agent_module); + + return 0; +} + static void launch_client_process(void *data) { @@ -2229,6 +2264,10 @@ controller_module_init(struct weston_compositor *compositor, return -1; } + if (load_id_agent_module(shell) < 0) { + weston_log("ivi-controller: id-agent module not loaded\n"); + } + if (shell->bkgnd_surface_id && shell->ivi_client_name) { loop = wl_display_get_event_loop(compositor->wl_display); wl_event_loop_add_idle(loop, launch_client_process, shell); -- 2.7.4