summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajendraprasad K J <KarammelJayakumar.Rajendraprasad@in.bosch.com>2020-07-29 16:59:37 +0200
committerRajendraprasad K J <KarammelJayakumar.Rajendraprasad@in.bosch.com>2020-07-29 16:59:37 +0200
commit4b64f87dcce0132a563fb7e95ca29749d09e3d08 (patch)
tree9b1286e06d5a8b8b371cc48f7e2d2e79647bc64f
parent9bc63f152c48c5078bca8353c8d8f30293603257 (diff)
downloadwayland-ivi-extension-4b64f87dcce0132a563fb7e95ca29749d09e3d08.tar.gz
ivi-controller: Avoid unnecessary scaling of the view transformation matrix
The opaque region of a weston view is updated only if the alpha value is 1 and the transform matrix is of type WESTON_MATRIX_TRANSFORM_TRANSLATE. Here opaque region is never updated, as we are performing scaling operations to the view transform matrix, even when the scaling factor is 1, thus changing the matrix type to WESTON_MATRIX_TRANSFORM_SCALE. Perform scaling of the view transformation matrix only when the scaling factor is non-zero. Signed-off-by: Rajendraprasad K J <KarammelJayakumar.Rajendraprasad@in.bosch.com>
-rw-r--r--weston-ivi-shell/src/ivi-controller.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/weston-ivi-shell/src/ivi-controller.c b/weston-ivi-shell/src/ivi-controller.c
index 69f0cda..cabd31b 100644
--- a/weston-ivi-shell/src/ivi-controller.c
+++ b/weston-ivi-shell/src/ivi-controller.c
@@ -838,10 +838,14 @@ calc_trans_matrix(struct weston_geometry *source_rect,
source_center_y = source_rect->y + source_rect->height * 0.5f;
weston_matrix_translate(m, -source_center_x, -source_center_y, 0.0f);
- scale_x = ((float)dest_rect->width) / source_rect->width;
- scale_y = ((float)dest_rect->height) / source_rect->height;
+ if ((dest_rect->width != source_rect->width) ||
+ (dest_rect->height != source_rect->height))
+ {
+ scale_x = ((float)dest_rect->width) / source_rect->width;
+ scale_y = ((float)dest_rect->height) / source_rect->height;
- weston_matrix_scale(m, scale_x, scale_y, 1.0f);
+ weston_matrix_scale(m, scale_x, scale_y, 1.0f);
+ }
translate_x = dest_rect->width * 0.5f + dest_rect->x;
translate_y = dest_rect->height * 0.5f + dest_rect->y;