diff options
author | Kalyan Sriram <coder.kalyan@gmail.com> | 2020-06-05 05:13:18 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-05 14:13:18 +0200 |
commit | e3e548a64861749474d87904875655904023b335 (patch) | |
tree | 4e359af42d43bce36810bcd87fdaa0ec70a0a81c | |
parent | input/cursor: refactor tablet tool tip events into seatops (diff) | |
download | sway-e3e548a64861749474d87904875655904023b335.tar.gz sway-e3e548a64861749474d87904875655904023b335.tar.zst sway-e3e548a64861749474d87904875655904023b335.zip |
Save transform during transaction
Closes: https://github.com/swaywm/sway/issues/5412
-rw-r--r-- | include/sway/tree/view.h | 1 | ||||
-rw-r--r-- | sway/desktop/render.c | 3 | ||||
-rw-r--r-- | sway/tree/view.c | 1 |
3 files changed, 4 insertions, 1 deletions
diff --git a/include/sway/tree/view.h b/include/sway/tree/view.h index 53c5d34e..8898cde5 100644 --- a/include/sway/tree/view.h +++ b/include/sway/tree/view.h | |||
@@ -59,6 +59,7 @@ struct sway_saved_buffer { | |||
59 | struct wlr_client_buffer *buffer; | 59 | struct wlr_client_buffer *buffer; |
60 | int x, y; | 60 | int x, y; |
61 | int width, height; | 61 | int width, height; |
62 | enum wl_output_transform transform; | ||
62 | struct wl_list link; // sway_view::saved_buffers | 63 | struct wl_list link; // sway_view::saved_buffers |
63 | }; | 64 | }; |
64 | 65 | ||
diff --git a/sway/desktop/render.c b/sway/desktop/render.c index 491a9bc0..2996e135 100644 --- a/sway/desktop/render.c +++ b/sway/desktop/render.c | |||
@@ -312,7 +312,8 @@ static void render_saved_view(struct sway_view *view, | |||
312 | scale_box(&box, wlr_output->scale); | 312 | scale_box(&box, wlr_output->scale); |
313 | 313 | ||
314 | float matrix[9]; | 314 | float matrix[9]; |
315 | wlr_matrix_project_box(matrix, &box, WL_OUTPUT_TRANSFORM_NORMAL, 0, | 315 | enum wl_output_transform transform = wlr_output_transform_invert(saved_buf->transform); |
316 | wlr_matrix_project_box(matrix, &box, transform, 0, | ||
316 | wlr_output->transform_matrix); | 317 | wlr_output->transform_matrix); |
317 | 318 | ||
318 | render_texture(wlr_output, damage, saved_buf->buffer->texture, | 319 | render_texture(wlr_output, damage, saved_buf->buffer->texture, |
diff --git a/sway/tree/view.c b/sway/tree/view.c index a9034637..314fd381 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c | |||
@@ -1199,6 +1199,7 @@ static void view_save_buffer_iterator(struct wlr_surface *surface, | |||
1199 | saved_buffer->height = surface->current.height; | 1199 | saved_buffer->height = surface->current.height; |
1200 | saved_buffer->x = sx; | 1200 | saved_buffer->x = sx; |
1201 | saved_buffer->y = sy; | 1201 | saved_buffer->y = sy; |
1202 | saved_buffer->transform = surface->current.transform; | ||
1202 | wl_list_insert(&view->saved_buffers, &saved_buffer->link); | 1203 | wl_list_insert(&view->saved_buffers, &saved_buffer->link); |
1203 | } | 1204 | } |
1204 | } | 1205 | } |