summaryrefslogtreecommitdiff
path: root/sway
diff options
context:
space:
mode:
Diffstat (limited to 'sway')
-rw-r--r--sway/desktop/render.c10
-rw-r--r--sway/input/seatop_move_tiling.c10
2 files changed, 12 insertions, 8 deletions
diff --git a/sway/desktop/render.c b/sway/desktop/render.c
index e1deb33b..429924c2 100644
--- a/sway/desktop/render.c
+++ b/sway/desktop/render.c
@@ -295,12 +295,6 @@ struct fx_framebuffer *get_main_buffer_blur(struct fx_renderer *renderer, struct
return current_buffer;
}
-struct blur_stencil_data {
- struct fx_texture *stencil_texture;
- const struct wlr_fbox *stencil_src_box;
- float *stencil_matrix;
-};
-
void render_blur(bool optimized, struct sway_output *output,
pixman_region32_t *output_damage, const struct wlr_box *dst_box,
pixman_region32_t *opaque_region, struct decoration_data *deco_data,
@@ -336,7 +330,7 @@ void render_blur(bool optimized, struct sway_output *output,
}
// Get a stencil of the window ignoring transparent regions
- if (deco_data->discard_transparent) {
+ if (deco_data->discard_transparent && stencil_data) {
fx_renderer_scissor(NULL);
fx_renderer_stencil_mask_init();
@@ -358,7 +352,7 @@ void render_blur(bool optimized, struct sway_output *output,
render_texture(wlr_output, &damage, &buffer->texture, NULL, dst_box, matrix, blur_deco_data);
// Finish stenciling
- if (deco_data->discard_transparent) {
+ if (deco_data->discard_transparent && stencil_data) {
fx_renderer_stencil_mask_fini();
}
diff --git a/sway/input/seatop_move_tiling.c b/sway/input/seatop_move_tiling.c
index 87e887ca..4e4db18c 100644
--- a/sway/input/seatop_move_tiling.c
+++ b/sway/input/seatop_move_tiling.c
@@ -45,6 +45,16 @@ static void handle_render(struct sway_seat *seat,
struct wlr_box box;
memcpy(&box, &e->drop_box, sizeof(struct wlr_box));
scale_box(&box, output->wlr_output->scale);
+
+ // Render blur
+ pixman_region32_t opaque_region;
+ pixman_region32_init(&opaque_region);
+ struct decoration_data deco_data = get_undecorated_decoration_data();
+ deco_data.blur = e->con->blur_enabled;
+ deco_data.corner_radius = e->con->corner_radius;
+ render_blur(false, output, damage, &box, &opaque_region, &deco_data, NULL);
+ pixman_region32_fini(&opaque_region);
+
render_rounded_rect(output, damage, &box, color,
e->con->corner_radius * output->wlr_output->scale, ALL);
}