aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--render/pixman/renderer.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/render/pixman/renderer.c b/render/pixman/renderer.c
index d7ed3eae..960f14a3 100644
--- a/render/pixman/renderer.c
+++ b/render/pixman/renderer.c
@@ -260,10 +260,11 @@ static bool pixman_render_subtexture_with_matrix(
pixman_image_set_transform(texture->image, &transform);
- // TODO clip properly with src_x and src_y
- pixman_image_composite32(PIXMAN_OP_OVER, texture->image, mask,
- buffer->image, 0, 0, 0, 0, 0, 0, renderer->width,
- renderer->height);
+ double x = fbox->x * m[0] + fbox->y * m[1] + 1.0 * m[6];
+ double y = fbox->x * m[3] + fbox->y * m[4] + 1.0 * m[7];
+
+ pixman_image_composite32(PIXMAN_OP_OVER, texture->image, mask, buffer->image,
+ x, y, 0, 0, 0, 0, renderer->width, renderer->height);
if (texture->buffer != NULL) {
wlr_buffer_end_data_ptr_access(texture->buffer);