aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--types/wlr_output.c13
-rw-r--r--types/wlr_surface.c2
2 files changed, 12 insertions, 3 deletions
diff --git a/types/wlr_output.c b/types/wlr_output.c
index d6efd9bf..4bc9d6aa 100644
--- a/types/wlr_output.c
+++ b/types/wlr_output.c
@@ -429,8 +429,17 @@ void wlr_output_swap_buffers(struct wlr_output *output) {
// with a NULL buffer to hide it
if (renderer && texture && texture->valid) {
float matrix[16];
- wlr_texture_get_matrix(texture, &matrix, &output->transform_matrix,
- output->cursor.x, output->cursor.y);
+ if (output->cursor.surface) {
+ float translation[16];
+ wlr_matrix_translate(&translation,
+ output->cursor.x, output->cursor.y, 0);
+ wlr_surface_get_matrix(output->cursor.surface,
+ &matrix, &output->transform_matrix, &translation);
+ } else {
+ wlr_texture_get_matrix(texture,
+ &matrix, &output->transform_matrix,
+ output->cursor.x, output->cursor.y);
+ }
wlr_render_with_matrix(renderer, texture, &matrix);
}
}
diff --git a/types/wlr_surface.c b/types/wlr_surface.c
index a21be8de..a6f91d47 100644
--- a/types/wlr_surface.c
+++ b/types/wlr_surface.c
@@ -656,7 +656,7 @@ void wlr_surface_get_matrix(struct wlr_surface *surface,
if (transform) {
wlr_matrix_mul(matrix, transform, matrix);
}
- wlr_matrix_scale(&scale, width, height, surface->current->scale);
+ wlr_matrix_scale(&scale, width, height, 1);
wlr_matrix_mul(matrix, &scale, matrix);
wlr_matrix_mul(projection, matrix, matrix);
}