summaryrefslogtreecommitdiff
path: root/sway/tree
diff options
context:
space:
mode:
authorWilliam McKinnon <[email protected]>2023-05-16 02:26:01 -0400
committerGitHub <[email protected]>2023-05-16 02:26:01 -0400
commit2c4fe20456851b6b8dc14b6bdc0cf9bee527a9ee (patch)
treec9e8a650da8a23c849516a6ac54dd59527681693 /sway/tree
parent479cc4e7456a93aed1a89bef8d83c1f8c43bd291 (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.c15
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