diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2024-09-29 16:50:00 -0400 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2024-09-29 16:50:00 -0400 |
| commit | 1f1bd1c5cc8e06b7267b6537be0bfe575cf6f7cd (patch) | |
| tree | 38fb42bce82b54ead0fa19c4f973a9edf88e846c | |
| parent | b6273697a9e36f350bb8b4174d8aa1917b71a1e9 (diff) | |
Fix alpha-modifier-v1
| -rw-r--r-- | sway/desktop/output.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 1f1f8d68..a4eaa4b3 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -8,6 +8,7 @@ #include <wlr/render/swapchain.h> #include <wlr/render/wlr_renderer.h> #include <wlr/types/wlr_buffer.h> +#include <wlr/types/wlr_alpha_modifier_v1.h> #include <wlr/types/wlr_gamma_control_v1.h> #include <wlr/types/wlr_matrix.h> #include <wlr/types/wlr_output_layout.h> @@ -216,6 +217,15 @@ static void output_configure_scene(struct sway_output *output, if (node->type == WLR_SCENE_NODE_BUFFER) { struct wlr_scene_buffer *buffer = wlr_scene_buffer_from_node(node); + struct wlr_scene_surface *surface = wlr_scene_surface_try_from_buffer(buffer); + + if (surface) { + const struct wlr_alpha_modifier_surface_v1_state *alpha_modifier_state = + wlr_alpha_modifier_v1_get_surface_state(surface->surface); + if (alpha_modifier_state != NULL) { + opacity *= (float)alpha_modifier_state->multiplier; + } + } // hack: don't call the scene setter because that will damage all outputs // We don't want to damage outputs that aren't our current output that |
