From: Manuel Bachmann 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 --- --- 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;