diff options
Diffstat (limited to 'recipes-graphics')
-rw-r--r-- | recipes-graphics/wayland/weston/0001-ivi-shell-Send-keyboard-events-to-clients-tha-are-bi.patch | 208 | ||||
-rw-r--r-- | recipes-graphics/wayland/weston_%.bbappend | 1 |
2 files changed, 0 insertions, 209 deletions
diff --git a/recipes-graphics/wayland/weston/0001-ivi-shell-Send-keyboard-events-to-clients-tha-are-bi.patch b/recipes-graphics/wayland/weston/0001-ivi-shell-Send-keyboard-events-to-clients-tha-are-bi.patch deleted file mode 100644 index d366cbbee..000000000 --- a/recipes-graphics/wayland/weston/0001-ivi-shell-Send-keyboard-events-to-clients-tha-are-bi.patch +++ /dev/null @@ -1,208 +0,0 @@ -From affd6eb25a08a3f10f2c7010c3205e930ceb4ec0 Mon Sep 17 00:00:00 2001 -From: Nobuhiko Tanibata <ntanibata@jp.adit-jv.com> -Date: Thu, 10 Dec 2015 16:07:20 +0900 -Subject: [PATCH] ivi-shell: Temporary fix: Send keyboard events to clients who binds - wl_keyboard. - -This is a temporary solution to send keyboard events to clients for CES2016 demo. -This shall be resolved by using ilm keyboard focus later. - -Signed-off-by: Nobuhiko Tanibata <ntanibata@jp.adit-jv.com> - ---- - ivi-shell/ivi-layout-private.h | 2 ++ - ivi-shell/ivi-layout.c | 65 ++++++++++++++++++++++++++++++++++++++++++ - ivi-shell/ivi-shell.c | 45 +++++++++++++++++++++++++++++ - ivi-shell/ivi-shell.h | 4 +++ - 4 files changed, 116 insertions(+) - -diff --git a/ivi-shell/ivi-layout-private.h b/ivi-shell/ivi-layout-private.h -index ee945a6..a75d9b0 100644 ---- a/ivi-shell/ivi-layout-private.h -+++ b/ivi-shell/ivi-layout-private.h -@@ -112,6 +112,8 @@ struct ivi_layout { - - struct ivi_layout_transition_set *transitions; - struct wl_list pending_transition_list; -+ -+ struct weston_keyboard_grab keyboard_grab; - }; - - struct ivi_layout *get_instance(void); -diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c -index dbe1010..75404c8 100644 ---- a/ivi-shell/ivi-layout.c -+++ b/ivi-shell/ivi-layout.c -@@ -124,6 +124,8 @@ struct ivi_rectangle - static void - remove_notification(struct wl_list *listener_list, void *callback, void *userdata); - -+static const struct weston_keyboard_grab_interface ivi_layout_keyboard_grab_interface; -+ - static struct ivi_layout ivilayout = {0}; - - struct ivi_layout * -@@ -2854,6 +2856,9 @@ ivi_layout_init_with_compositor(struct weston_compositor *ec) - - layout->transitions = ivi_layout_transition_set_create(ec); - wl_list_init(&layout->pending_transition_list); -+ -+ layout->keyboard_grab.interface = &ivi_layout_keyboard_grab_interface; -+ layout->keyboard_grab.keyboard = NULL; - } - - -@@ -2904,6 +2909,66 @@ ivi_layout_surface_is_forced_configure_event(struct ivi_layout_surface *ivisurf) - return ivisurf->prop.is_forced_configure_event; - } - -+static void -+ivi_layout_grab_keyboard_key(struct weston_keyboard_grab *grab, -+ uint32_t time, uint32_t key, uint32_t state) -+{ -+ struct weston_keyboard *keyboard = grab->keyboard; -+ struct wl_display *display = keyboard->seat->compositor->wl_display; -+ uint32_t serial; -+ struct wl_resource *resource; -+ -+ wl_resource_for_each(resource, &keyboard->focus_resource_list) { -+ serial = wl_display_next_serial(display); -+ wl_keyboard_send_key(resource, -+ serial, -+ time, -+ key, -+ state); -+ } -+ -+ wl_resource_for_each(resource, &keyboard->resource_list) { -+ serial = wl_display_next_serial(display); -+ wl_keyboard_send_key(resource, -+ serial, -+ time, -+ key, -+ state); -+ } -+} -+ -+static void -+ivi_layout_grab_keyboard_modifier(struct weston_keyboard_grab *grab, -+ uint32_t serial, uint32_t mods_depressed, -+ uint32_t mods_latched, uint32_t mods_locked, -+ uint32_t group) -+{ -+ struct wl_resource *resource; -+ struct weston_keyboard *keyboard = grab->keyboard; -+ -+ wl_resource_for_each(resource, &keyboard->focus_resource_list) { -+ wl_keyboard_send_modifiers(resource, serial, mods_depressed, -+ mods_latched, mods_locked, group); -+ } -+ -+ wl_resource_for_each(resource, &keyboard->resource_list) { -+ wl_keyboard_send_modifiers(resource, serial, mods_depressed, -+ mods_latched, mods_locked, group); -+ } -+} -+ -+static void -+ivi_layout_grab_keyboard_cancel(struct weston_keyboard_grab *grab) -+{ -+ (void)grab; /* no op */ -+} -+ -+static const struct weston_keyboard_grab_interface ivi_layout_keyboard_grab_interface = { -+ ivi_layout_grab_keyboard_key, -+ ivi_layout_grab_keyboard_modifier, -+ ivi_layout_grab_keyboard_cancel -+}; -+ - static struct ivi_controller_interface ivi_controller_interface = { - /** - * commit all changes -diff --git a/ivi-shell/ivi-shell.c b/ivi-shell/ivi-shell.c -index 3b6c82f..43f48cc 100644 ---- a/ivi-shell/ivi-shell.c -+++ b/ivi-shell/ivi-shell.c -@@ -423,6 +423,43 @@ ivi_shell_setting_create(struct ivi_shell_setting *dest, - return result; - } - -+static void -+handle_seat_destroy(struct wl_listener *listener, void *data) -+{ -+ struct weston_seat *seat = data; -+ -+ if (seat->keyboard) { -+ weston_keyboard_end_grab(seat->keyboard); -+ } -+} -+ -+static void -+handle_seat_updated_caps(struct wl_listener *listener, void *data) -+{ -+ struct weston_seat *seat = data; -+ -+ if ((seat->keyboard_device_count > 0) && seat->keyboard) { -+ weston_keyboard_start_grab(seat->keyboard, -+ &(get_instance()->keyboard_grab)); -+ } -+} -+ -+static void -+handle_seat_created(struct wl_listener *listener, void *data) -+{ -+ struct weston_seat *seat = data; -+ struct ivi_shell *shell = -+ container_of(listener, struct ivi_shell, seat_created_listener); -+ -+ shell->seat_destroy_listener.notify = handle_seat_destroy; -+ wl_signal_add(&seat->destroy_signal, &shell->seat_destroy_listener); -+ -+ shell->seat_updated_caps_listener.notify = handle_seat_updated_caps; -+ wl_signal_add(&seat->updated_caps_signal, &shell->seat_updated_caps_listener); -+ -+ handle_seat_updated_caps(&shell->seat_updated_caps_listener, seat); -+} -+ - /* - * Initialization of ivi-shell. - */ -@@ -432,6 +469,7 @@ module_init(struct weston_compositor *compositor, - { - struct ivi_shell *shell; - struct ivi_shell_setting setting = { }; -+ struct weston_seat *seat; - int retval = -1; - - shell = zalloc(sizeof *shell); -@@ -458,6 +496,13 @@ module_init(struct weston_compositor *compositor, - - ivi_layout_init_with_compositor(compositor); - -+ shell->seat_created_listener.notify = handle_seat_created; -+ wl_signal_add(&compositor->seat_created_signal, &shell->seat_created_listener); -+ -+ wl_list_for_each(seat, &compositor->seat_list, link) { -+ handle_seat_created(&shell->seat_created_listener, seat); -+ } -+ - /* Call module_init of ivi-modules which are defined in weston.ini */ - if (load_controller_modules(compositor, setting.ivi_module, - argc, argv) < 0) -diff --git a/ivi-shell/ivi-shell.h b/ivi-shell/ivi-shell.h -index 9a05eb2..dc1d85a 100644 ---- a/ivi-shell/ivi-shell.h -+++ b/ivi-shell/ivi-shell.h -@@ -41,6 +41,10 @@ struct ivi_shell - struct wl_listener hide_input_panel_listener; - struct wl_listener update_input_panel_listener; - -+ struct wl_listener seat_created_listener; -+ struct wl_listener seat_updated_caps_listener; -+ struct wl_listener seat_destroy_listener; -+ - struct weston_layer input_panel_layer; - - bool locked; --- -1.8.3.1 diff --git a/recipes-graphics/wayland/weston_%.bbappend b/recipes-graphics/wayland/weston_%.bbappend index b0e2a3e0d..ee9422ff7 100644 --- a/recipes-graphics/wayland/weston_%.bbappend +++ b/recipes-graphics/wayland/weston_%.bbappend @@ -2,5 +2,4 @@ FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" SRC_URI_append = "\ file://0001-weston-patch-for-wl-shell-emulator.patch \ - file://0001-ivi-shell-Send-keyboard-events-to-clients-tha-are-bi.patch \ " |