output: fix transform matrix for 90/270 rotations

We need to adjust the second translation depending on the transform
we applied.

Fixes: 9601a2abf0 ("output: improve transform matrix calculation"
Closes: https://github.com/swaywm/wlroots/issues/2774
This commit is contained in:
Simon Ser 2021-03-11 09:49:38 +01:00
parent 9601a2abf0
commit 44fa2c4b49
4 changed files with 25 additions and 9 deletions

View file

@ -938,11 +938,17 @@ static bool drm_connector_set_cursor(struct wlr_output *output,
float output_matrix[9];
wlr_matrix_identity(output_matrix);
if (output->transform != WL_OUTPUT_TRANSFORM_NORMAL) {
struct wlr_box tr_size = {
.width = plane->surf.width,
.height = plane->surf.height,
};
wlr_box_transform(&tr_size, &tr_size, output->transform, 0, 0);
wlr_matrix_translate(output_matrix, plane->surf.width / 2.0,
plane->surf.height / 2.0);
wlr_matrix_transform(output_matrix, output->transform);
wlr_matrix_translate(output_matrix, - plane->surf.width / 2.0,
- plane->surf.height / 2.0);
wlr_matrix_translate(output_matrix, - tr_size.width / 2.0,
- tr_size.height / 2.0);
}
float matrix[9];