From f67ced704936562eba6e43455739611bbdd7b599 Mon Sep 17 00:00:00 2001 From: Toshi Umemura Date: Mon, 19 Dec 2016 17:54:11 +0900 Subject: ivi-shell multi screen support This patch enables ivi-shell to manage multi screen. This solves SPEC-360 ivi-shell fails to manage two screens. CES2017 cluster demo also requires multi screen support. Bug-AGL: SPEC-360 Change-Id: Ie0f71855af70de28068cb9deee1a6c415eaea88e Signed-off-by: ynakamura Signed-off-by: Jan-Simon Moeller --- ...ulti-screen-support.-ivi_layout_screen-to.patch | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 recipes-graphics/wayland/weston/0005-ivi-shell-multi-screen-support.-ivi_layout_screen-to.patch (limited to 'recipes-graphics/wayland/weston/0005-ivi-shell-multi-screen-support.-ivi_layout_screen-to.patch') diff --git a/recipes-graphics/wayland/weston/0005-ivi-shell-multi-screen-support.-ivi_layout_screen-to.patch b/recipes-graphics/wayland/weston/0005-ivi-shell-multi-screen-support.-ivi_layout_screen-to.patch new file mode 100644 index 00000000..de795432 --- /dev/null +++ b/recipes-graphics/wayland/weston/0005-ivi-shell-multi-screen-support.-ivi_layout_screen-to.patch @@ -0,0 +1,74 @@ +From e8bfcbd7e64a296d2aba63a80d8e181055587f76 Mon Sep 17 00:00:00 2001 +From: Nobuhiko Tanibata +Date: Mon, 30 Nov 2015 11:05:37 +0900 +Subject: [PATCH] ivi-shell: multi screen support. ivi_layout_screen to be + taken account into property change in commitChanges. + +Property change is now done in update_prop so to consider ivi_screen +property for caluculating transform of weston surface, ivi_layout_screen + is added as a parameter of update_prop. + +However, update_prop of weston_view of a ivi_surface can not be done +even if it is set on a screen. The propoerty change shall be done only +when a visibility of ivi_surface or ivi_layer which contains the +ivi_surface is ON. Such a condition shall be checked at commit_changes +as well to avoid calling update_prop, which actually updates +weston_views. + +Signed-off-by: Nobuhiko Tanibata +--- + ivi-shell/ivi-layout.c | 23 +++++++++++++++++++---- + 1 file changed, 19 insertions(+), 4 deletions(-) + +diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c +index 31b5def..1773af8 100644 +--- a/ivi-shell/ivi-layout.c ++++ b/ivi-shell/ivi-layout.c +@@ -737,16 +737,17 @@ calc_surface_to_global_matrix_and_mask_to_weston_surface( + } + + static void +-update_prop(struct ivi_layout_layer *ivilayer, ++update_prop(struct ivi_layout_screen *iviscrn, ++ struct ivi_layout_layer *ivilayer, + struct ivi_layout_surface *ivisurf) + { + struct weston_view *tmpview; + struct ivi_rectangle r; + bool can_calc = true; + +- if (!ivilayer->event_mask && !ivisurf->event_mask) { ++ /*In case of no prop change, this just returns*/ ++ if (!ivilayer->event_mask && !ivisurf->event_mask) + return; +- } + + update_opacity(ivilayer, ivisurf); + +@@ -802,8 +803,22 @@ commit_changes(struct ivi_layout *layout) + + wl_list_for_each(iviscrn, &layout->screen_list, link) { + wl_list_for_each(ivilayer, &iviscrn->order.layer_list, order.link) { ++ /* ++ * If ivilayer is invisible, weston_view of ivisurf doesn't ++ * need to be modified. ++ */ ++ if (ivilayer->prop.visibility == false) ++ continue; ++ + wl_list_for_each(ivisurf, &ivilayer->order.surface_list, order.link) { +- update_prop(ivilayer, ivisurf); ++ /* ++ * If ivilayer is invisible, weston_view of ivisurf doesn't ++ * need to be modified. ++ */ ++ if (ivisurf->prop.visibility == false) ++ continue; ++ ++ update_prop(iviscrn, ivilayer, ivisurf); + } + } + } +-- +2.7.4 + -- cgit 1.2.3-korg