@@ -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