summaryrefslogtreecommitdiffstats
path: root/meta-ivi-common/recipes-graphics/wayland/weston-ivi-shell/0002-IVI-Shell-use-primary-screen-for-resolution.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-ivi-common/recipes-graphics/wayland/weston-ivi-shell/0002-IVI-Shell-use-primary-screen-for-resolution.patch')
-rw-r--r--meta-ivi-common/recipes-graphics/wayland/weston-ivi-shell/0002-IVI-Shell-use-primary-screen-for-resolution.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/meta-ivi-common/recipes-graphics/wayland/weston-ivi-shell/0002-IVI-Shell-use-primary-screen-for-resolution.patch b/meta-ivi-common/recipes-graphics/wayland/weston-ivi-shell/0002-IVI-Shell-use-primary-screen-for-resolution.patch
new file mode 100644
index 000000000..2df9f4aed
--- /dev/null
+++ b/meta-ivi-common/recipes-graphics/wayland/weston-ivi-shell/0002-IVI-Shell-use-primary-screen-for-resolution.patch
@@ -0,0 +1,49 @@
+From: Manuel Bachmann <manuel.bachmann@iot.bzh>
+Date: Thu, Nov 5 10:17:00 2015 +0000
+Subject: ivi-shell: use primary screen for resolution values
+
+Screen resolution values (width, height) are always grabbed
+from the first screen, n.0, which can be a bad choice if it
+is not the one really used as main display.
+
+This mostly happens on hardware with a VGA adapter, such as
+laptops or Renesas R-Car E2 "Silk", and prevents correct
+layout stretching (black borders).
+
+Discover the primary screen and use its values.
+
+Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
+---
+
+--- a/ivi-shell/hmi-controller.c 2015-11-05 09:57:55.740942450 +0000
++++ b/ivi-shell/hmi-controller.c 2015-11-05 10:00:23.545912494 +0000
+@@ -676,6 +676,8 @@
+ struct link_layer *tmp_link_layer = NULL;
+ int32_t panel_height = 0;
+ struct hmi_controller *hmi_ctrl = MEM_ALLOC(sizeof(*hmi_ctrl));
++ struct weston_output *output = NULL;
++ int i = 0;
+
+ wl_array_init(&hmi_ctrl->ui_widgets);
+ hmi_ctrl->layout_mode = IVI_HMI_CONTROLLER_LAYOUT_MODE_TILING;
+@@ -684,11 +686,19 @@
+
+ ivi_controller_interface->get_screens(&screen_length, &pp_screen);
+
+- iviscrn = pp_screen[0];
++ /* find primary screen */
++ for (i = 0; i < screen_length; i++) {
++ iviscrn = pp_screen[i];
++ output = ivi_controller_interface->screen_get_output(iviscrn);
++ if (output->x == 0)
++ break;
++ }
+
+ ivi_controller_interface->get_screen_resolution(iviscrn, &screen_width,
+ &screen_height);
+
++ iviscrn = pp_screen[0];
++
+ /* init base ivi_layer*/
+ hmi_ctrl->base_layer.x = 0;
+ hmi_ctrl->base_layer.y = 0;