summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c15
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);
}
}