aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Kalyan Sriram <coder.kalyan@gmail.com>2020-06-05 05:13:18 -0700
committerLibravatar GitHub <noreply@github.com>2020-06-05 14:13:18 +0200
commite3e548a64861749474d87904875655904023b335 (patch)
tree4e359af42d43bce36810bcd87fdaa0ec70a0a81c
parentinput/cursor: refactor tablet tool tip events into seatops (diff)
downloadsway-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.h1
-rw-r--r--sway/desktop/render.c3
-rw-r--r--sway/tree/view.c1
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}