summaryrefslogtreecommitdiffstats
path: root/meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0001-ivi-shell-layer-controller-ti-Improve-functionality.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0001-ivi-shell-layer-controller-ti-Improve-functionality.patch')
-rw-r--r--meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0001-ivi-shell-layer-controller-ti-Improve-functionality.patch326
1 files changed, 0 insertions, 326 deletions
diff --git a/meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0001-ivi-shell-layer-controller-ti-Improve-functionality.patch b/meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0001-ivi-shell-layer-controller-ti-Improve-functionality.patch
deleted file mode 100644
index 7db49341e..000000000
--- a/meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0001-ivi-shell-layer-controller-ti-Improve-functionality.patch
+++ /dev/null
@@ -1,326 +0,0 @@
-From 70f5b755b00d5eab576ed897a8301367b0e367a6 Mon Sep 17 00:00:00 2001
-From: Volodymyr Riazantsev <volodymyr.riazantsev@globallogic.com>
-Date: Sat, 16 Jul 2016 02:53:25 -0400
-Subject: [PATCH] ivi-shell: layer-controller-ti: Improve functionality
-
-Functionality improved:
-
- * can launch multiple application on start
- * handle keyboard focus:
- - TAB-LEFTALT can be used for switch focus
- - focus history;
- - focus on new application.
-
-Signed-off-by: Volodymyr Riazantsev <volodymyr.riazantsev@globallogic.com>
-Signed-off-by: Karthik Ramanan <a0393906@ti.com>
----
- ivi-shell/ivi-layout-controller-ti.c | 167 +++++++++++++++++++++++++++++++----
- 1 file changed, 148 insertions(+), 19 deletions(-)
-
-diff --git a/ivi-shell/ivi-layout-controller-ti.c b/ivi-shell/ivi-layout-controller-ti.c
-index 4a2d648..9be51d1 100644
---- a/ivi-shell/ivi-layout-controller-ti.c
-+++ b/ivi-shell/ivi-layout-controller-ti.c
-@@ -30,6 +30,8 @@
- #include <fcntl.h>
- #include <unistd.h>
-
-+#include <linux/input.h>
-+
- #include "ivi-layout-export.h"
-
- #ifndef container_of
-@@ -85,6 +87,7 @@ struct hmi_controller_layer {
- int32_t width;
- int32_t height;
- int32_t num_surfaces;
-+ int32_t focus;
- pid_t pid;
- struct wl_list link;
- struct wl_list screen_link;
-@@ -96,8 +99,10 @@ struct hmi_controller_surface {
- void *controller;
- void *ivisurf;
- struct wl_list link;
-+ struct wl_list focus_link;
- struct wl_listener destroy_listener;
- int conf_num;
-+ int focus;
- };
-
- struct hmi_controller_screen {
-@@ -106,11 +111,12 @@ struct hmi_controller_screen {
- };
-
- struct hmi_server_setting {
-- uint32_t base_layer_id;
-- int32_t panel_height;
-- char *ivi_homescreen;
-- char *homescreen_app;
-- struct wl_array rules;
-+ uint32_t base_layer_id;
-+ int32_t panel_height;
-+ char *ivi_homescreen;
-+ char *homescreen_app;
-+ struct wl_array autolaunch_apps;
-+ struct wl_array rules;
- };
-
- struct hmi_controller {
-@@ -126,6 +132,7 @@ struct hmi_controller {
- struct wl_listener destroy_listener;
- struct wl_client *user_interface;
- struct wl_list layers_list;
-+ struct wl_list focus_history_list;
-
- };
-
-@@ -350,12 +357,59 @@ exit:
- }
-
- static void
-+move_kbd_focus(struct hmi_controller_surface *ivisurf, struct hmi_controller *hmi_ctrl, bool history)
-+{
-+ struct hmi_controller_layer *layer;
-+ struct hmi_controller_surface *surf;
-+ struct weston_seat *seat;
-+ struct weston_keyboard *keyboard;
-+ struct weston_surface *surface;
-+
-+ wl_list_for_each(layer, &hmi_ctrl->layers_list, link) {
-+ wl_list_for_each(surf, &layer->surfaces_list, link) {
-+ if (surf->focus) {
-+ surf->focus = 0;
-+ wl_list_insert(&hmi_ctrl->focus_history_list, &surf->focus_link);
-+ break;
-+ }
-+ }
-+ }
-+
-+ wl_list_for_each(seat, &hmi_ctrl->compositor->seat_list, link) {
-+ if(!strcmp("default", seat->seat_name))
-+ break;
-+ }
-+
-+ keyboard = weston_seat_get_keyboard(seat);
-+
-+ if (!keyboard)
-+ return;
-+
-+ if (ivisurf) {
-+ surface = ivi_controller_interface->surface_get_weston_surface(ivisurf->ivisurf);
-+ weston_keyboard_set_focus(keyboard, surface);
-+ ivisurf->focus = 1;
-+
-+ if (NULL != ivisurf->focus_link.next)
-+ wl_list_remove(&ivisurf->focus_link);
-+
-+ } else if (history && !wl_list_empty(&hmi_ctrl->focus_history_list)) {
-+ struct hmi_controller_surface *s =
-+ wl_container_of(hmi_ctrl->focus_history_list.next, s, focus_link);
-+ wl_list_remove(&s->focus_link);
-+ surface = ivi_controller_interface->surface_get_weston_surface(s->ivisurf);
-+ weston_keyboard_set_focus(keyboard, surface);
-+ s->focus = 1;
-+ }
-+}
-+
-+static void
- set_notification_create_surface(struct ivi_layout_surface *ivisurf,
- void *userdata)
- {
- struct hmi_controller *hmi_ctrl = userdata;
-- struct hmi_controller_layer *hmi_ctrl_layer = NULL;
-- struct hmi_controller_surface *hmi_ctrl_surf = NULL;
-+ struct hmi_controller_layer *hmi_ctrl_layer;
-+ struct hmi_controller_surface *hmi_ctrl_surf;
- struct ivi_layout_layer *dest_layer;
- struct weston_surface *surface;
-
-@@ -378,6 +432,7 @@ set_notification_create_surface(struct ivi_layout_surface *ivisurf,
- hmi_ctrl_surf = calloc(1, sizeof(*hmi_ctrl_surf));
- hmi_ctrl_surf->ivisurf = ivisurf;
- wl_list_init(&hmi_ctrl_surf->link);
-+ wl_list_init(&hmi_ctrl_surf->focus_link);
- wl_list_insert(&hmi_ctrl_layer->surfaces_list, &hmi_ctrl_surf->link);
-
-
-@@ -419,6 +474,9 @@ remove:
-
- wl_list_remove(&surf->link);
-
-+ if (surf->focus)
-+ move_kbd_focus(NULL, hmi_ctrl, true);
-+
- ivi_controller_interface->layer_remove_surface(dest_layer, ivisurf);
-
- if (wl_list_empty(&hmi_ctrl_layer->surfaces_list)) {
-@@ -451,9 +509,10 @@ set_notification_configure_surface(struct ivi_layout_surface *ivisurf,
- void *userdata)
- {
- struct hmi_controller *hmi_ctrl = userdata;
-- struct hmi_controller_layer *hmi_ctrl_layer = NULL;
-+ struct hmi_controller_layer *hmi_ctrl_layer;
- struct weston_surface *surface;
-- struct hmi_controller_surface *hmi_ctrl_surf = NULL;
-+ struct weston_seat *seat = NULL;
-+ struct hmi_controller_surface *hmi_ctrl_surf;
- int src_rect[4] = {0};
- int dest_rect[4] = {0};
-
-@@ -511,6 +570,16 @@ found:
- dest_rect[3] = hmi_ctrl_layer->rule->dest_rect[3] > 0 ?
- hmi_ctrl_layer->rule->dest_rect[3] : dest_rect[3] ;
- }
-+
-+ if (hmi_ctrl_layer->rule->autofocus) {
-+
-+ wl_list_for_each(seat, &hmi_ctrl->compositor->seat_list, link) {
-+ if(!strcmp("default", seat->seat_name))
-+ break;
-+ }
-+
-+ move_kbd_focus(hmi_ctrl_surf, hmi_ctrl, false);
-+ }
- }
-
- ivi_controller_interface->surface_set_source_rectangle(ivisurf
-@@ -522,6 +591,7 @@ found:
- , dest_rect[2], dest_rect[3]);
-
- ivi_controller_interface->surface_set_visibility(ivisurf, true);
-+
- ivi_controller_interface->commit_changes();
-
- hmi_ctrl_surf->conf_num++;
-@@ -543,14 +613,9 @@ hmi_server_setting_create(struct weston_compositor *ec)
- weston_config_section_get_uint(shell_section, "base-layer-id",
- &setting->base_layer_id, 1000);
-
-- if ((shell_section = weston_config_get_section(config, "ivi-autolaunch",
-- NULL, NULL))) {
-- weston_config_section_get_string(shell_section, "path",
-- &setting->homescreen_app, NULL);
-- }
--
--
- wl_array_init(&setting->rules);
-+ wl_array_init(&setting->autolaunch_apps);
-+ wl_array_init(&setting->autolaunch_apps);
-
- while (weston_config_next_section(config, &shell_section, &name)) {
- int screen_id;
-@@ -564,6 +629,12 @@ hmi_server_setting_create(struct weston_compositor *ec)
- char *buff;
- struct hmi_launch_rule *rule = NULL;
-
-+ if (!strcmp(name, "ivi-autolaunch")) {
-+ char **s = wl_array_add(&setting->autolaunch_apps, sizeof(*s));
-+ weston_config_section_get_string(shell_section, "path", s, NULL);
-+ continue;
-+ }
-+
- if (0 != strcmp(name, "ivi-layout-rule"))
- continue;
-
-@@ -573,7 +644,7 @@ hmi_server_setting_create(struct weston_compositor *ec)
-
- weston_config_section_get_int(shell_section, "order", &order, -1);
- weston_config_section_get_int(shell_section, "mode", &mode, -1);
-- weston_config_section_get_int(shell_section, "focus_on", &focus_on, -1);
-+ weston_config_section_get_int(shell_section, "focus_on", &focus_on, 0);
- weston_config_section_get_int(shell_section, "screen", &screen_id, -1);
-
- if (0 == weston_config_section_get_string(shell_section, "crop_rect",
-@@ -631,8 +702,10 @@ hmi_controller_destroy(struct wl_listener *listener, void *data)
-
- static void hmi_controller_launch_homescreen(struct hmi_controller *hmi_ctrl)
- {
-- if (hmi_ctrl->hmi_setting->homescreen_app) {
-- if(system(hmi_ctrl->hmi_setting->homescreen_app)) {
-+ char **app;
-+
-+ wl_array_for_each(app, &hmi_ctrl->hmi_setting->autolaunch_apps) {
-+ if(system(*app)) {
- ;
- }
- }
-@@ -674,6 +747,7 @@ hmi_controller_create(struct weston_compositor *ec)
- &hmi_ctrl->destroy_listener);
-
- wl_list_init(&hmi_ctrl->layers_list);
-+ wl_list_init(&hmi_ctrl->focus_history_list);
-
- free(pp_screen);
- pp_screen = NULL;
-@@ -719,6 +793,57 @@ initialize(struct hmi_controller *hmi_ctrl)
- return 1;
- }
-
-+static void
-+switch_focus_bindings(struct weston_keyboard *keyboard, uint32_t time,
-+ uint32_t key, void *data)
-+{
-+ struct hmi_controller *hmi_ctrl = data;
-+ struct hmi_controller_layer *hmi_ctrl_layer, *next_l, *cycle_l = NULL;
-+ struct hmi_controller_surface *hmi_ctrl_surf;
-+ bool pp = false;
-+
-+ wl_list_for_each(hmi_ctrl_layer, &hmi_ctrl->layers_list, link) {
-+ wl_list_for_each(hmi_ctrl_surf, &hmi_ctrl_layer->surfaces_list, link) {
-+ if (hmi_ctrl_surf->focus) {
-+ goto ff;
-+ }
-+ }
-+ }
-+
-+ hmi_ctrl_surf = NULL;
-+ pp = true;
-+
-+ff:
-+ wl_list_for_each(next_l, &hmi_ctrl->layers_list, link) {
-+
-+ if (pp) {
-+ if (next_l->rule && next_l->rule->autofocus) {
-+ cycle_l = next_l;
-+ break;
-+ }
-+ } else {
-+ if (next_l == hmi_ctrl_layer) {
-+ pp = true;
-+ continue;
-+ } else {
-+ if (next_l->rule && next_l->rule->autofocus) {
-+ cycle_l = next_l;
-+ break;
-+ }
-+ }
-+ }
-+ }
-+
-+ if (!cycle_l)
-+ return;
-+
-+ move_kbd_focus(container_of(cycle_l->surfaces_list.next
-+ , struct hmi_controller_surface
-+ , link)
-+ , hmi_ctrl, false);
-+}
-+
-+
- /*****************************************************************************
- * exported functions
- ****************************************************************************/
-@@ -753,5 +878,9 @@ controller_module_init(struct weston_compositor *ec,
-
- hmi_controller_launch_homescreen(hmi_ctrl);
-
-+ weston_compositor_add_key_binding(ec, KEY_TAB , MODIFIER_ALT,
-+ switch_focus_bindings, hmi_ctrl);
-+ weston_install_debug_key_binding(ec, 0);
-+
- return 0;
- }
---
-2.4.5
-