summaryrefslogtreecommitdiffstats
path: root/meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0005-ivi-shell-convert-from-screen-to-global-coordinates.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0005-ivi-shell-convert-from-screen-to-global-coordinates.patch')
-rw-r--r--meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0005-ivi-shell-convert-from-screen-to-global-coordinates.patch70
1 files changed, 70 insertions, 0 deletions
diff --git a/meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0005-ivi-shell-convert-from-screen-to-global-coordinates.patch b/meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0005-ivi-shell-convert-from-screen-to-global-coordinates.patch
new file mode 100644
index 000000000..f22af13e6
--- /dev/null
+++ b/meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0005-ivi-shell-convert-from-screen-to-global-coordinates.patch
@@ -0,0 +1,70 @@
+From 26c4fc86516626e2e463171e4016ccd851125342 Mon Sep 17 00:00:00 2001
+From: Nobuhiko Tanibata <nobuhiko_tanibata@xddp.denso.co.jp>
+Date: Wed, 9 Dec 2015 15:38:41 +0900
+Subject: [PATCH 5/7] ivi-shell: convert from screen to global coordinates
+
+In single screen, the coordinates of layer local coordinates are the
+same as global coordinates. However, to support multi screens, the
+layer-local coordinates shall be transformed to multi screen coordinates,
+which is global coordinates. The abosolute coordinates of a screen in global
+stored in (x,y) of output of its weston output so it shall be used to
+transform layer-local to global coordinates.
+
+Signed-off-by: Nobuhiko Tanibata <nobuhiko_tanibata@xddp.denso.co.jp>
+Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
+---
+ ivi-shell/ivi-layout.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c
+index a7c5e22..c7506de 100644
+--- a/ivi-shell/ivi-layout.c
++++ b/ivi-shell/ivi-layout.c
+@@ -688,6 +688,7 @@ calc_inverse_matrix_transform(const struct weston_matrix *matrix,
+ */
+ static void
+ calc_surface_to_global_matrix_and_mask_to_weston_surface(
++ struct ivi_layout_screen *iviscrn,
+ struct ivi_layout_layer *ivilayer,
+ struct ivi_layout_surface *ivisurf,
+ struct weston_matrix *m,
+@@ -695,6 +696,7 @@ calc_surface_to_global_matrix_and_mask_to_weston_surface(
+ {
+ const struct ivi_layout_surface_properties *sp = &ivisurf->prop;
+ const struct ivi_layout_layer_properties *lp = &ivilayer->prop;
++ struct weston_output *output = iviscrn->output;
+ struct ivi_rectangle weston_surface_rect = { 0,
+ 0,
+ ivisurf->surface->width,
+@@ -732,7 +734,9 @@ calc_surface_to_global_matrix_and_mask_to_weston_surface(
+ * coordinates to global coordinates, which is computed by
+ * two steps,
+ * - surface-local coordinates to layer-local coordinates
+- * - layer-local coordinates to global coordinates
++ * - layer-local coordinates to a single screen-local coordinates
++ * - a single screen-local coordinates to multi screen coordinates,
++ * which is global coordinates.
+ */
+ calc_transformation_matrix(&surface_source_rect,
+ &surface_dest_rect,
+@@ -742,6 +746,8 @@ calc_surface_to_global_matrix_and_mask_to_weston_surface(
+ &layer_dest_rect,
+ lp->orientation, m);
+
++ weston_matrix_translate(m, output->x, output->y, 0.0f);
++
+ /* this intersected ivi_rectangle would be used for masking
+ * weston_surface
+ */
+@@ -798,7 +804,7 @@ update_prop(struct ivi_layout_screen *iviscrn,
+ weston_matrix_init(&ivisurf->transform.matrix);
+
+ calc_surface_to_global_matrix_and_mask_to_weston_surface(
+- ivilayer, ivisurf, &ivisurf->transform.matrix, &r);
++ iviscrn, ivilayer, ivisurf, &ivisurf->transform.matrix, &r);
+
+ if (tmpview != NULL) {
+ weston_view_set_mask(tmpview, r.x, r.y, r.width, r.height);
+--
+2.4.5
+