aboutsummaryrefslogtreecommitdiffstats
path: root/sway/desktop/render.c
diff options
context:
space:
mode:
authorLibravatar Simon Ser <contact@emersion.fr>2023-02-22 18:38:19 +0100
committerLibravatar Simon Zeni <simon@bl4ckb0ne.ca>2023-02-22 13:37:44 -0500
commitc2ccc0c9d4726a2d1f23f1696c7b6aa0f6cb1a63 (patch)
treebd5c40f008c3f74dbe2c22ab047dc7b0721da51c /sway/desktop/render.c
parentConstify pixman_region32_t for rendering functions (diff)
downloadsway-c2ccc0c9d4726a2d1f23f1696c7b6aa0f6cb1a63.tar.gz
sway-c2ccc0c9d4726a2d1f23f1696c7b6aa0f6cb1a63.tar.zst
sway-c2ccc0c9d4726a2d1f23f1696c7b6aa0f6cb1a63.zip
Move output commit out of output_render()
That way output_render() only does what it says on the tin.
Diffstat (limited to 'sway/desktop/render.c')
-rw-r--r--sway/desktop/render.c29
1 files changed, 1 insertions, 28 deletions
diff --git a/sway/desktop/render.c b/sway/desktop/render.c
index dedaa967..a4d633e0 100644
--- a/sway/desktop/render.c
+++ b/sway/desktop/render.c
@@ -1029,8 +1029,7 @@ static void render_seatops(struct sway_output *output,
1029 } 1029 }
1030} 1030}
1031 1031
1032void output_render(struct sway_output *output, struct timespec *when, 1032void output_render(struct sway_output *output, pixman_region32_t *damage) {
1033 pixman_region32_t *damage) {
1034 struct wlr_output *wlr_output = output->wlr_output; 1033 struct wlr_output *wlr_output = output->wlr_output;
1035 struct wlr_renderer *renderer = output->server->renderer; 1034 struct wlr_renderer *renderer = output->server->renderer;
1036 1035
@@ -1184,30 +1183,4 @@ renderer_end:
1184 wlr_renderer_scissor(renderer, NULL); 1183 wlr_renderer_scissor(renderer, NULL);
1185 wlr_output_render_software_cursors(wlr_output, damage); 1184 wlr_output_render_software_cursors(wlr_output, damage);
1186 wlr_renderer_end(renderer); 1185 wlr_renderer_end(renderer);
1187
1188 int width, height;
1189 wlr_output_transformed_resolution(wlr_output, &width, &height);
1190
1191 pixman_region32_t frame_damage;
1192 pixman_region32_init(&frame_damage);
1193
1194 enum wl_output_transform transform =
1195 wlr_output_transform_invert(wlr_output->transform);
1196 wlr_region_transform(&frame_damage, &output->damage_ring.current,
1197 transform, width, height);
1198
1199 if (debug.damage != DAMAGE_DEFAULT) {
1200 pixman_region32_union_rect(&frame_damage, &frame_damage,
1201 0, 0, wlr_output->width, wlr_output->height);
1202 }
1203
1204 wlr_output_set_damage(wlr_output, &frame_damage);
1205 pixman_region32_fini(&frame_damage);
1206
1207 if (!wlr_output_commit(wlr_output)) {
1208 return;
1209 }
1210
1211 wlr_damage_ring_rotate(&output->damage_ring);
1212 output->last_frame = *when;
1213} 1186}