wayland-ivi-extension: Added ivi-id-agent by mtey
[AGL/meta-agl-demo.git] / recipes-graphics / wayland / wayland-ivi-extension / 0003-ivi-controller-load-id-agent-module.patch
diff --git a/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-controller-load-id-agent-module.patch b/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-controller-load-id-agent-module.patch
new file mode 100644 (file)
index 0000000..06fe784
--- /dev/null
@@ -0,0 +1,70 @@
+From 5fed5c51ca8c1574804362bfdea4930c16457d34 Mon Sep 17 00:00:00 2001
+From: Michael Teyfel <mteyfel@de.adit-jv.com>
+Date: Fri, 12 Oct 2018 16:57:24 +0200
+Subject: [PATCH 3/3] ivi-controller: load id-agent module
+
+Signed-off-by: Michael Teyfel <mteyfel@de.adit-jv.com>
+---
+ 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
+