summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarsha M M <harsha.manjulamallikarjun@in.bosch.com>2018-08-03 12:37:20 +0530
committerHarsha M M <harsha.manjulamallikarjun@in.bosch.com>2018-08-07 16:10:53 +0530
commitf7795d2a347dc3797a706971d759111e8e68be18 (patch)
treeb6e86d5f0ee519ce65a968831396b6421a7fc430
parent5d410575514e6ca7b234258cf2180a7434c11f15 (diff)
downloadwayland-ivi-extension-f7795d2a347dc3797a706971d759111e8e68be18.tar.gz
ivi-controller: Ensure input controller is de-initialized first in de-init sequence
Ensure that input controller is de-initialized and then ivi controller. This is necessary since ivi-input-controller is dependent on ivi controller. wl_signal_emit issues signal using first-in first-out approach, whereas in this case we need first-in last-out approach. Signed-off-by: Harsha M M <harsha.manjulamallikarjun@in.bosch.com>
-rw-r--r--weston-ivi-shell/src/ivi-controller.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/weston-ivi-shell/src/ivi-controller.c b/weston-ivi-shell/src/ivi-controller.c
index ede2f03..04ed4d9 100644
--- a/weston-ivi-shell/src/ivi-controller.c
+++ b/weston-ivi-shell/src/ivi-controller.c
@@ -2095,9 +2095,6 @@ init_ivi_shell(struct weston_compositor *ec, struct ivishell *shell)
wl_signal_add(&ec->output_destroyed_signal, &shell->output_destroyed);
wl_signal_add(&ec->output_resized_signal, &shell->output_resized);
- shell->destroy_listener.notify = ivi_shell_destroy;
- wl_signal_add(&ec->destroy_signal, &shell->destroy_listener);
-
wl_signal_init(&shell->ivisurface_created_signal);
wl_signal_init(&shell->ivisurface_removed_signal);
}
@@ -2206,6 +2203,12 @@ wet_module_init(struct weston_compositor *compositor,
free(shell);
return -1;
}
+ /* add compositor destroy signal after loading input
+ * modules, to ensure input module is the first one to
+ * de-initialize
+ */
+ shell->destroy_listener.notify = ivi_shell_destroy;
+ wl_signal_add(&compositor->destroy_signal, &shell->destroy_listener);
if (shell->bkgnd_surface_id && shell->ivi_client_name) {
loop = wl_display_get_event_loop(compositor->wl_display);