Update the matrix always, regardless of transform.enabled. Will make it
easier to inherit a surface transform.

Signed-off-by: Pekka Paalanen <[email protected]>
---
 src/compositor.c |    5 +++++
 src/compositor.h |    6 ++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/compositor.c b/src/compositor.c
index e556766..0b37e63 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -514,6 +514,11 @@ weston_surface_update_transform_disable(struct 
weston_surface *surface)
        surface->geometry.x = roundf(surface->geometry.x);
        surface->geometry.y = roundf(surface->geometry.y);
 
+       /* Otherwise identity matrix, but with x and y translation. */
+       weston_matrix_init(&surface->transform.matrix);
+       surface->transform.matrix.d[12] = surface->geometry.x;
+       surface->transform.matrix.d[13] = surface->geometry.y;
+
        pixman_region32_init_rect(&surface->transform.boundingbox,
                                  surface->geometry.x,
                                  surface->geometry.y,
diff --git a/src/compositor.h b/src/compositor.h
index 15d6939..1d790d3 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -415,8 +415,10 @@ struct weston_surface {
                pixman_region32_t boundingbox;
                pixman_region32_t opaque;
 
-               /* matrix and inverse are used only if enabled = 1.
-                * If enabled = 0, use x, y, width, height directly.
+               /* 'inverse' is used only if enabled = 1.
+                * 'matrix' can be used regardless of 'enabled', to allow
+                * inheriting transformation.
+                * If enabled = 0, you can use x, y, width, height instead.
                 */
                int enabled;
                struct weston_matrix matrix;
-- 
1.7.8.6

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to