summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Reider <[email protected]>2023-12-28 11:10:05 +0100
committerGitHub <[email protected]>2023-12-28 11:10:05 +0100
commit1c5c60d9280eb0b13d9884366bdeaf3748b04308 (patch)
treeebb8453ce1253b10a0836e27edbf4f129d199a5b
parentca42d414536c167f951e23bfc50d5edabb6f9dc2 (diff)
Blur damage compensation fixes (#259)
* Increased blur size to match what WayFire uses * Fix damage compensation not being scaled
-rw-r--r--sway/config.c2
-rw-r--r--sway/tree/workspace.c16
2 files changed, 12 insertions, 6 deletions
diff --git a/sway/config.c b/sway/config.c
index a0168ad0..db395475 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -1098,7 +1098,7 @@ void translate_keysyms(struct input_config *input_config) {
}
int config_get_blur_size() {
- return pow(2, config->blur_params.num_passes) * config->blur_params.radius;
+ return pow(2, config->blur_params.num_passes + 1) * config->blur_params.radius;
}
bool config_should_parameters_blur() {
diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c
index 7e7146dd..b2305341 100644
--- a/sway/tree/workspace.c
+++ b/sway/tree/workspace.c
@@ -708,10 +708,15 @@ static void find_blurred_region_iterator(struct sway_container *con, void *data)
pixman_region32_t *blur_region = region_data->blur_region;
if (con->blur_enabled && !view->surface->opaque) {
+ struct wlr_box region = {
+ .x = floor(con->current.x) - ws->output->lx,
+ .y = floor(con->current.y) - ws->output->ly,
+ .width = con->current.width,
+ .height = con->current.height,
+ };
+ scale_box(&region, ws->output->wlr_output->scale);
pixman_region32_union_rect(blur_region, blur_region,
- floor(con->current.x) - ws->output->lx,
- floor(con->current.y) - ws->output->ly,
- con->current.width, con->current.height);
+ region.x, region.y, region.width, region.height);
}
}
@@ -732,9 +737,10 @@ bool workspace_get_blur_info(struct sway_workspace *ws, pixman_region32_t *blur_
wl_list_for_each(lsurface, &sway_output->layers[i], link) {
if (lsurface->has_blur && !lsurface->layer_surface->surface->opaque
&& lsurface->layer != ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND) {
- struct wlr_box *geo = &lsurface->geo;
+ struct wlr_box geo = lsurface->geo;
+ scale_box(&geo, sway_output->wlr_output->scale);
pixman_region32_union_rect(blur_region, blur_region,
- geo->x, geo->y, geo->width, geo->height);
+ geo.x, geo.y, geo.width, geo.height);
}
}
}