Skip to content

Commit a5a69d4

Browse files
authored
fix: gray background rect not being expanded by blur size (#295)
1 parent 4b954d5 commit a5a69d4

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

sway/desktop/render.c

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1592,9 +1592,6 @@ void output_render(struct fx_render_context *ctx) {
15921592
struct sway_output *output = ctx->output;
15931593
pixman_region32_t *damage = ctx->output_damage;
15941594

1595-
pixman_region32_t transformed_damage;
1596-
pixman_region32_init(&transformed_damage);
1597-
15981595
struct fx_effect_framebuffers *effect_fbos = ctx->pass->fx_effect_framebuffers;
15991596

16001597
struct sway_workspace *workspace = output->current.active_workspace;
@@ -1609,7 +1606,7 @@ void output_render(struct fx_render_context *ctx) {
16091606

16101607
if (!pixman_region32_not_empty(damage)) {
16111608
// Output isn't damaged but needs buffer swap
1612-
goto renderer_end;
1609+
return;
16131610
}
16141611

16151612
if (debug.damage == DAMAGE_HIGHLIGHT) {
@@ -1620,6 +1617,9 @@ void output_render(struct fx_render_context *ctx) {
16201617
},
16211618
});
16221619
}
1620+
1621+
pixman_region32_t transformed_damage;
1622+
pixman_region32_init(&transformed_damage);
16231623
pixman_region32_copy(&transformed_damage, damage);
16241624
transform_output_damage(&transformed_damage, wlr_output);
16251625

@@ -1715,17 +1715,9 @@ void output_render(struct fx_render_context *ctx) {
17151715
// copy the surrounding content where the blur would display artifacts
17161716
// and draw it above the artifacts
17171717

1718-
// ensure that the damage isn't expanding past the output's size
1719-
int32_t damage_width = damage->extents.x2 - damage->extents.x1;
1720-
int32_t damage_height = damage->extents.y2 - damage->extents.y1;
1721-
if (damage_width > output_width || damage_height > output_height) {
1722-
pixman_region32_intersect_rect(damage, damage,
1723-
0, 0, output_width, output_height);
1724-
} else {
1725-
// Expand the original damage to compensate for surrounding
1726-
// blurred views to avoid sharp edges between damage regions
1727-
wlr_region_expand(damage, damage, config_get_blur_size());
1728-
}
1718+
// Expand the original damage to compensate for surrounding
1719+
// blurred views to avoid sharp edges between damage regions
1720+
wlr_region_expand(damage, damage, config_get_blur_size());
17291721

17301722
pixman_region32_t extended_damage;
17311723
pixman_region32_init(&extended_damage);
@@ -1743,6 +1735,10 @@ void output_render(struct fx_render_context *ctx) {
17431735
pixman_region32_union(damage, damage, &extended_damage);
17441736
pixman_region32_fini(&extended_damage);
17451737

1738+
// Copy the new extended damage into the transformed damage
1739+
pixman_region32_copy(&transformed_damage, damage);
1740+
transform_output_damage(&transformed_damage, wlr_output);
1741+
17461742
// Capture the padding pixels before blur for later use
17471743
fx_renderer_read_to_buffer(ctx->pass, &effect_fbos->blur_padding_region,
17481744
effect_fbos->blur_saved_pixels_buffer,

0 commit comments

Comments
 (0)