diff options
author | Tony Crisci <tony@dubstepdish.com> | 2018-02-17 15:18:21 -0500 |
---|---|---|
committer | Tony Crisci <tony@dubstepdish.com> | 2018-02-17 15:18:21 -0500 |
commit | 7c089442c3c9877eec2422780f6ce57315de2d11 (patch) | |
tree | 2d0832011ad89102c183f36eb0e4e5968ff00b58 /sway | |
parent | arrange windows after output add (diff) | |
download | sway-7c089442c3c9877eec2422780f6ce57315de2d11.tar.gz sway-7c089442c3c9877eec2422780f6ce57315de2d11.tar.zst sway-7c089442c3c9877eec2422780f6ce57315de2d11.zip |
use box projection function
Diffstat (limited to 'sway')
-rw-r--r-- | sway/desktop/output.c | 43 |
1 files changed, 1 insertions, 42 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c index ba282c2c..7b7fcbb9 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c | |||
@@ -57,46 +57,7 @@ static void render_surface(struct wlr_surface *surface, | |||
57 | }; | 57 | }; |
58 | if (wlr_output_layout_intersects(layout, wlr_output, &render_box)) { | 58 | if (wlr_output_layout_intersects(layout, wlr_output, &render_box)) { |
59 | float matrix[16]; | 59 | float matrix[16]; |
60 | 60 | wlr_matrix_project_box(&matrix, &render_box, surface->current->transform, 0, &wlr_output->transform_matrix); | |
61 | float translate_center[16]; | ||
62 | wlr_matrix_translate(&translate_center, | ||
63 | (int)ox + render_width / 2, (int)oy + render_height / 2, 0); | ||
64 | |||
65 | float rotate[16]; | ||
66 | wlr_matrix_rotate(&rotate, rotation); | ||
67 | |||
68 | float translate_origin[16]; | ||
69 | wlr_matrix_translate(&translate_origin, -render_width / 2, | ||
70 | -render_height / 2, 0); | ||
71 | |||
72 | float scale[16]; | ||
73 | wlr_matrix_scale(&scale, render_width, render_height, 1); | ||
74 | |||
75 | float transform[16]; | ||
76 | wlr_matrix_mul(&translate_center, &rotate, &transform); | ||
77 | wlr_matrix_mul(&transform, &translate_origin, &transform); | ||
78 | wlr_matrix_mul(&transform, &scale, &transform); | ||
79 | |||
80 | if (surface->current->transform != WL_OUTPUT_TRANSFORM_NORMAL) { | ||
81 | float surface_translate_center[16]; | ||
82 | wlr_matrix_translate(&surface_translate_center, 0.5, 0.5, 0); | ||
83 | |||
84 | float surface_transform[16]; | ||
85 | wlr_matrix_transform(surface_transform, | ||
86 | wlr_output_transform_invert(surface->current->transform)); | ||
87 | |||
88 | float surface_translate_origin[16]; | ||
89 | wlr_matrix_translate(&surface_translate_origin, -0.5, -0.5, 0); | ||
90 | |||
91 | wlr_matrix_mul(&transform, &surface_translate_center, | ||
92 | &transform); | ||
93 | wlr_matrix_mul(&transform, &surface_transform, &transform); | ||
94 | wlr_matrix_mul(&transform, &surface_translate_origin, | ||
95 | &transform); | ||
96 | } | ||
97 | |||
98 | wlr_matrix_mul(&wlr_output->transform_matrix, &transform, &matrix); | ||
99 | |||
100 | wlr_render_with_matrix(server.renderer, surface->texture, | 61 | wlr_render_with_matrix(server.renderer, surface->texture, |
101 | &matrix); | 62 | &matrix); |
102 | 63 | ||
@@ -220,8 +181,6 @@ static void output_frame_notify(struct wl_listener *listener, void *data) { | |||
220 | struct wlr_renderer *renderer = wlr_backend_get_renderer(wlr_output->backend); | 181 | struct wlr_renderer *renderer = wlr_backend_get_renderer(wlr_output->backend); |
221 | wlr_renderer_clear(renderer, &clear_color); | 182 | wlr_renderer_clear(renderer, &clear_color); |
222 | 183 | ||
223 | wlr_renderer_clear(renderer, &clear_color); | ||
224 | |||
225 | int buffer_age = -1; | 184 | int buffer_age = -1; |
226 | wlr_output_make_current(wlr_output, &buffer_age); | 185 | wlr_output_make_current(wlr_output, &buffer_age); |
227 | wlr_renderer_begin(server->renderer, wlr_output); | 186 | wlr_renderer_begin(server->renderer, wlr_output); |