diff options
author | harsha.mm <harsha.manjulamallikarjun@in.bosch.com> | 2017-07-11 21:43:00 +0530 |
---|---|---|
committer | Michael Teyfel <mteyfel@de.adit-jv.com> | 2017-07-13 14:00:59 +0200 |
commit | f08ecab9576f2b4148b03cca282bb4f1fafcdc1c (patch) | |
tree | 51984f523d515c776ccc613d8af5ecdd05ca1b9b /ivi-input-modules | |
parent | 5d85fe3f7b94116d9fa8e5ad35f10fed2808cda8 (diff) | |
download | wayland-ivi-extension-f08ecab9576f2b4148b03cca282bb4f1fafcdc1c.tar.gz |
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 <harsha.manjulamallikarjun@in.bosch.com>
Diffstat (limited to 'ivi-input-modules')
-rw-r--r-- | ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c | 15 |
1 files 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); } } |