docs: add yaml book
[AGL/meta-agl-demo.git] / recipes-graphics / wayland / wayland-ivi-extension / 0003-ivi-controller-load-id-agent-module.patch
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
5
6 Signed-off-by: Michael Teyfel <mteyfel@de.adit-jv.com>
7 ---
8  weston-ivi-shell/src/ivi-controller.c | 39 +++++++++++++++++++++++++++++++++++
9  1 file changed, 39 insertions(+)
10
11 diff --git a/weston-ivi-shell/src/ivi-controller.c b/weston-ivi-shell/src/ivi-controller.c
12 index 6d95c88..f6ac174 100644
13 --- a/weston-ivi-shell/src/ivi-controller.c
14 +++ b/weston-ivi-shell/src/ivi-controller.c
15 @@ -2164,6 +2164,41 @@ load_input_module(struct ivishell *shell)
16      return 0;
17  }
18  
19 +static int load_id_agent_module(struct ivishell *shell)
20 +{
21 +    struct weston_config *config = wet_get_config(shell->compositor);
22 +    struct weston_config_section *section;
23 +    char *id_agent_module = NULL;
24 +
25 +    int (*id_agent_module_init)(struct weston_compositor *compositor,
26 +            const struct ivi_layout_interface *interface);
27 +
28 +    section = weston_config_get_section(config, "ivi-shell", NULL, NULL);
29 +
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");
34 +        return 0;
35 +    }
36 +
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);
40 +        return -1;
41 +    }
42 +
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);
46 +        return -1;
47 +    }
48 +
49 +    free(id_agent_module);
50 +
51 +    return 0;
52 +}
53 +
54  static void
55  launch_client_process(void *data)
56  {
57 @@ -2229,6 +2264,10 @@ controller_module_init(struct weston_compositor *compositor,
58          return -1;
59      }
60  
61 +    if (load_id_agent_module(shell) < 0) {
62 +        weston_log("ivi-controller: id-agent module not loaded\n");
63 +    }
64 +
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);
68 -- 
69 2.7.4
70