summaryrefslogtreecommitdiffstats
path: root/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-controller-load-id-agent-module.patch
blob: 8985879b0b5ed093d41b5c117e86c36da5fec0c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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

Reworked for wayland-ivi-extension 2.2.0 by Scott Murray.

Signed-off-by: Michael Teyfel <mteyfel@de.adit-jv.com>
Signed-off-by: Scott Murray <scott.murray@konsulko.com>

diff --git a/weston-ivi-shell/src/ivi-controller.c b/weston-ivi-shell/src/ivi-controller.c
index 8faec2a..8fa51f4 100644
--- a/weston-ivi-shell/src/ivi-controller.c
+++ b/weston-ivi-shell/src/ivi-controller.c
@@ -2154,6 +2154,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)
 {
@@ -2221,6 +2256,10 @@ wet_module_init(struct weston_compositor *compositor,
     shell->destroy_listener.notify = ivi_shell_destroy;
     wl_signal_add(&compositor->destroy_signal, &shell->destroy_listener);
 
+    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);