diff options
author | William McKinnon <[email protected]> | 2023-05-16 02:26:01 -0400 |
---|---|---|
committer | GitHub <[email protected]> | 2023-05-16 02:26:01 -0400 |
commit | 2c4fe20456851b6b8dc14b6bdc0cf9bee527a9ee (patch) | |
tree | c9e8a650da8a23c849516a6ac54dd59527681693 /sway/tree | |
parent | 479cc4e7456a93aed1a89bef8d83c1f8c43bd291 (diff) |
Blur damage tracking simplification (#155)
* suplified conditional in find_con_effect_iterator
* removed has_blur
* simplified optimized blur check
* moved damage expansion to output.c
* removed extraneous fx_renderer_scissor
* cleaned up render_output
* removed unneeded damage scale
* moved workspace optimized check function to workspace.c
* renamed ws iterator function
* added back region expansion
* removed uneeded parameter from get_main_buffer_blur
* returned extended damage
* moved get_blur_size back to original spot (reduce diff size)
* Fixed blur artifacting
* Fixed damage highlight not clearing correct framebuffer
* removed unneeded conditional
* moved initial damage expansion to output.c
* moved extended damage to the top of output_render
* moved blur damage to damage_surface_iterator
* ensure damage doesnt expand beyond output size
* removed stdint import
---------
Co-authored-by: Erik Reider <[email protected]>
Diffstat (limited to 'sway/tree')
-rw-r--r-- | sway/tree/workspace.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/sway/tree/workspace.c b/sway/tree/workspace.c index ee940466..161b1e9c 100644 --- a/sway/tree/workspace.c +++ b/sway/tree/workspace.c @@ -690,6 +690,21 @@ void workspace_detect_urgent(struct sway_workspace *workspace) { } } +static bool find_blurred_con_iterator(struct sway_container *con, void *data) { + struct sway_view *view = con->view; + if (!view) { + return false; + } + return con->blur_enabled && !view->surface->opaque; +} + +bool should_workspace_have_blur(struct sway_workspace *ws) { + if (!workspace_is_visible(ws)) { + return false; + } + return (bool)workspace_find_container(ws, find_blurred_con_iterator, NULL); +} + void workspace_for_each_container(struct sway_workspace *ws, void (*f)(struct sway_container *con, void *data), void *data) { // Tiling |