ivi-shell: Avoid unnecessary scaling of the view transformation matrix
authorRajendraprasad K J <KarammelJayakumar.Rajendraprasad@in.bosch.com>
Wed, 29 Jul 2020 14:50:59 +0000 (16:50 +0200)
committerDaniel Stone <daniels@collabora.com>
Mon, 17 Aug 2020 09:58:23 +0000 (09:58 +0000)
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>
ivi-shell/ivi-layout.c

index 7cec79d7dc4ab8057e506b93281974d80e54c5bd..b2f8323bd9bae5208b8cc23192aff3362ee70d3f 100644 (file)
@@ -345,9 +345,13 @@ calc_transformation_matrix(struct ivi_rectangle *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 / (float) source_rect->width;
-       scale_y = (float) dest_rect->height / (float) source_rect->height;
-       weston_matrix_scale(m, scale_x, scale_y, 1.0f);
+       if ((dest_rect->width != source_rect->width) ||
+           (dest_rect->height != source_rect->height))
+       {
+               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_y = dest_rect->height * 0.5f + dest_rect->y;