From f08ecab9576f2b4148b03cca282bb4f1fafcdc1c Mon Sep 17 00:00:00 2001 From: "harsha.mm" Date: Tue, 11 Jul 2017 21:43:00 +0530 Subject: ivi-input: Send out right focus to controller Stale focus parameter of surface_ctx remained from old implementation. Remove it and send the right focus to controller. Signed-off-by: harsha.mm --- .../ivi-input-controller/src/ivi-input-controller.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 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 42a81c5..ad0aa7e 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 @@ -65,7 +65,6 @@ struct seat_focus { struct surface_ctx { struct wl_list link; - ilmInputDevice focus; struct ivi_layout_surface *layout_surface; struct wl_list accepted_seat_list; struct input_context *input_context; @@ -1245,6 +1244,8 @@ bind_ivi_input(struct wl_client *client, void *data, const struct ivi_layout_interface *interface = ctx->ivi_layout_interface; struct seat_focus *st_focus; + uint32_t ivi_surf_id; + controller = calloc(1, sizeof *controller); if (controller == NULL) { weston_log("%s: Failed to allocate memory for controller\n", @@ -1271,16 +1272,18 @@ bind_ivi_input(struct wl_client *client, void *data, } /* Send focus events for all known surfaces to the client */ wl_list_for_each(surface_ctx, &ctx->surface_list, link) { - ivi_input_send_input_focus(controller->resource, - interface->get_id_of_surface(surface_ctx->layout_surface), - surface_ctx->focus, ILM_TRUE); + ivi_surf_id = interface->get_id_of_surface(surface_ctx->layout_surface); + wl_list_for_each(st_focus, &surface_ctx->accepted_seat_list, link) { + ivi_input_send_input_focus(controller->resource, + ivi_surf_id, st_focus->focus, ILM_TRUE); + } } /* Send acceptance events for all known surfaces to the client */ wl_list_for_each(surface_ctx, &ctx->surface_list, link) { + ivi_surf_id = interface->get_id_of_surface(surface_ctx->layout_surface); wl_list_for_each(st_focus, &surface_ctx->accepted_seat_list, link) { ivi_input_send_input_acceptance(controller->resource, - interface->get_id_of_surface(surface_ctx->layout_surface), - st_focus->seat_name, ILM_TRUE); + ivi_surf_id, st_focus->seat_name, ILM_TRUE); } } -- cgit v1.2.1