ivi-shell: 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.

While using ivi-shell, opaque region is never updated, as we are performing
scaling operations to the view transform matrix, even when the scaling
factor is 1 and thereby changing the 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>
dev
Rajendraprasad K J 4 years ago committed by Daniel Stone
parent 3097acc702
commit 4a378afa3b
  1. 10
      ivi-shell/ivi-layout.c

@ -345,9 +345,13 @@ calc_transformation_matrix(struct ivi_rectangle *source_rect,
source_center_y = source_rect->y + source_rect->height * 0.5f; source_center_y = source_rect->y + source_rect->height * 0.5f;
weston_matrix_translate(m, -source_center_x, -source_center_y, 0.0f); weston_matrix_translate(m, -source_center_x, -source_center_y, 0.0f);
scale_x = (float) dest_rect->width / (float) source_rect->width; if ((dest_rect->width != source_rect->width) ||
scale_y = (float) dest_rect->height / (float) source_rect->height; (dest_rect->height != source_rect->height))
weston_matrix_scale(m, scale_x, scale_y, 1.0f); {
scale_x = (float) dest_rect->width / (float) source_rect->width;
scale_y = (float) dest_rect->height / (float) source_rect->height;
weston_matrix_scale(m, scale_x, scale_y, 1.0f);
}
translate_x = dest_rect->width * 0.5f + dest_rect->x; translate_x = dest_rect->width * 0.5f + dest_rect->x;
translate_y = dest_rect->height * 0.5f + dest_rect->y; translate_y = dest_rect->height * 0.5f + dest_rect->y;

Loading…
Cancel
Save