summaryrefslogtreecommitdiff
path: root/sway/desktop/render.c
diff options
context:
space:
mode:
authorWill McKinnon <[email protected]>2023-04-30 14:03:51 -0400
committerWill McKinnon <[email protected]>2023-04-30 14:03:51 -0400
commitd86e34929008f5a0f54e1561f3c6584248c9b192 (patch)
treea8d259ce641faab6d561902440a00974ef0fe288 /sway/desktop/render.c
parentace9a222b8557aa93ba2b6f3dac27424131574e4 (diff)
fix: blurred region is rounded below titlebars
Diffstat (limited to 'sway/desktop/render.c')
-rw-r--r--sway/desktop/render.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sway/desktop/render.c b/sway/desktop/render.c
index 944775d6..46222784 100644
--- a/sway/desktop/render.c
+++ b/sway/desktop/render.c
@@ -307,7 +307,7 @@ void render_blur(bool optimized, struct sway_output *output,
pixman_region32_t *output_damage, const struct wlr_fbox *src_box,
const struct wlr_box *dst_box, pixman_region32_t *opaque_region,
int surface_width, int surface_height, int32_t surface_scale,
- int corner_radius) {
+ int corner_radius, bool should_round_top) {
struct wlr_output *wlr_output = output->wlr_output;
struct fx_renderer *renderer = output->renderer;
@@ -364,6 +364,7 @@ void render_blur(bool optimized, struct sway_output *output,
struct decoration_data deco_data = get_undecorated_decoration_data();
deco_data.corner_radius = corner_radius;
+ deco_data.has_titlebar = should_round_top;
render_texture(wlr_output, &damage, &buffer->texture, src_box, dst_box, matrix, deco_data);
damage_finish:
@@ -427,7 +428,8 @@ static void render_surface_iterator(struct sway_output *output,
struct wlr_fbox blur_src_box = wlr_fbox_from_wlr_box(&monitor_box);
bool is_floating = container_is_floating(view->container);
render_blur(!is_floating, output, output_damage, &blur_src_box, &dst_box, &opaque_region,
- surface->current.width, surface->current.height, surface->current.scale, deco_data.corner_radius);
+ surface->current.width, surface->current.height, surface->current.scale,
+ deco_data.corner_radius, deco_data.has_titlebar);
}
pixman_region32_fini(&opaque_region);
@@ -831,7 +833,7 @@ static void render_saved_view(struct sway_view *view, struct sway_output *output
struct wlr_fbox src_box = wlr_fbox_from_wlr_box(&monitor_box);
bool is_floating = container_is_floating(view->container);
render_blur(!is_floating, output, damage, &src_box, &dst_box, &opaque_region,
- saved_buf->width, saved_buf->height, 1, deco_data.corner_radius);
+ saved_buf->width, saved_buf->height, 1, deco_data.corner_radius, deco_data.has_titlebar);
pixman_region32_fini(&opaque_region);
}