diff options
author | Erik Reider <[email protected]> | 2023-12-28 11:10:05 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2023-12-28 11:10:05 +0100 |
commit | 1c5c60d9280eb0b13d9884366bdeaf3748b04308 (patch) | |
tree | ebb8453ce1253b10a0836e27edbf4f129d199a5b | |
parent | ca42d414536c167f951e23bfc50d5edabb6f9dc2 (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.c | 2 | ||||
-rw-r--r-- | sway/tree/workspace.c | 16 |
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(®ion, 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); } } } |