aboutsummaryrefslogtreecommitdiffstats
path: root/meta-agl-lxc/recipes-graphics/wayland/wayland-ivi-extension
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-lxc/recipes-graphics/wayland/wayland-ivi-extension')
-rw-r--r--meta-agl-lxc/recipes-graphics/wayland/wayland-ivi-extension/0001-Fix-NULL-pointer-exception-in-case-of-no-input-devic.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/meta-agl-lxc/recipes-graphics/wayland/wayland-ivi-extension/0001-Fix-NULL-pointer-exception-in-case-of-no-input-devic.patch b/meta-agl-lxc/recipes-graphics/wayland/wayland-ivi-extension/0001-Fix-NULL-pointer-exception-in-case-of-no-input-devic.patch
new file mode 100644
index 00000000..095a25c9
--- /dev/null
+++ b/meta-agl-lxc/recipes-graphics/wayland/wayland-ivi-extension/0001-Fix-NULL-pointer-exception-in-case-of-no-input-devic.patch
@@ -0,0 +1,55 @@
+From b1e5973764cc42aee113fcf82249d7dd74de4131 Mon Sep 17 00:00:00 2001
+From: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
+Date: Thu, 7 Oct 2021 21:07:37 +0900
+Subject: [PATCH] Fix NULL pointer exception in case of no input device
+
+When weston with wayland-ivi-extension run without input device,
+that crash by NULL access at setup_input_focus function.
+In this case, st_focus->seat_ctx is NULL pointer, but it use
+without NULL check in this function.
+
+This patch add NULL check for st_focus->seat_ctx.
+
+Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>
+---
+ .../src/ivi-input-controller.c | 24 ++++++++++---------
+ 1 file changed, 13 insertions(+), 11 deletions(-)
+
+diff --git a/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c b/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c
+index a0bfc48..e5f2e1d 100644
+--- a/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c
++++ b/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c
+@@ -1071,17 +1071,19 @@ setup_input_focus(struct input_context *ctx, uint32_t surface,
+ if (NULL != surf) {
+ wl_list_for_each(st_focus, &surf->accepted_seat_list, link) {
+ ctx_seat = st_focus->seat_ctx;
+- if (device & ILM_INPUT_DEVICE_POINTER) {
+- input_ctrl_ptr_set_focus_surf(ctx_seat, surf, enabled);
+- }
+- if (device & ILM_INPUT_DEVICE_KEYBOARD) {
+- input_ctrl_kbd_set_focus_surf(ctx_seat, surf, enabled);
+- }
+- if (device & ILM_INPUT_DEVICE_TOUCH) {
+- /*Touch focus cannot be forced to a particular surface.
+- * Preserve the old behaviour by sending it to controller.
+- * TODO: Should we just remove focus setting for touch?*/
+- send_input_focus(ctx, surf, device, enabled);
++ if (ctx_seat != NULL) {
++ if (device & ILM_INPUT_DEVICE_POINTER) {
++ input_ctrl_ptr_set_focus_surf(ctx_seat, surf, enabled);
++ }
++ if (device & ILM_INPUT_DEVICE_KEYBOARD) {
++ input_ctrl_kbd_set_focus_surf(ctx_seat, surf, enabled);
++ }
++ if (device & ILM_INPUT_DEVICE_TOUCH) {
++ /*Touch focus cannot be forced to a particular surface.
++ * Preserve the old behaviour by sending it to controller.
++ * TODO: Should we just remove focus setting for touch?*/
++ send_input_focus(ctx, surf, device, enabled);
++ }
+ }
+ }
+ }
+--
+2.25.1
+