static Eina_Bool use_cache_keymap = EINA_FALSE;
static void
-_e_comp_wl_input_update_seat_caps(void)
+_e_comp_wl_input_update_seat_caps(struct wl_client *wc)
{
Eina_List *l;
struct wl_resource *res;
caps |= WL_SEAT_CAPABILITY_TOUCH;
EINA_LIST_FOREACH(e_comp_wl->seat.resources, l, res)
+ {
+ /* if a wc is null, send seat capability to all wl_seat resources */
+ if (wc && (wl_resource_get_client(res) != wc)) continue;
wl_seat_send_capabilities(res, caps);
+ }
}
static void
e_comp->wl_comp_data,
_e_comp_wl_input_cb_unbind_seat);
- _e_comp_wl_input_update_seat_caps();
+ _e_comp_wl_input_update_seat_caps(client);
if (e_comp_wl->seat.version >= WL_SEAT_NAME_SINCE_VERSION)
wl_seat_send_name(res, e_comp_wl->seat.name);
}
}
e_comp_wl->ptr.enabled = !!enabled;
- _e_comp_wl_input_update_seat_caps();
+ _e_comp_wl_input_update_seat_caps(NULL);
}
E_API void
}
e_comp_wl->kbd.enabled = !!enabled;
- _e_comp_wl_input_update_seat_caps();
+ _e_comp_wl_input_update_seat_caps(NULL);
}
E_API Eina_Bool
}
e_comp_wl->touch.enabled = !!enabled;
- _e_comp_wl_input_update_seat_caps();
+ _e_comp_wl_input_update_seat_caps(NULL);
}
EINTERN Eina_Bool