diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2022-03-14 17:44:49 +0100 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2022-03-14 17:44:49 +0100 |
| commit | 6a3a0066da9d88c5056da7c2757bdfa21794f26e (patch) | |
| tree | c1cd13eafd28be6fd5cadfb0443bc8d02133f2c9 /swaybar | |
| parent | 878d4ce0f04b54611b14b9b593bf1cc6e5b6efab (diff) | |
swaybar: set opaque region
When the background color is fully opaque, set the surface's opaque
region to the whole surface.
Diffstat (limited to 'swaybar')
| -rw-r--r-- | swaybar/render.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/swaybar/render.c b/swaybar/render.c index dcde6b9e..7e2f97b7 100644 --- a/swaybar/render.c +++ b/swaybar/render.c @@ -831,6 +831,15 @@ void render_frame(struct swaybar_output *output) { wl_surface_damage(output->surface, 0, 0, output->width, output->height); + uint32_t bg_alpha = ctx.background_color & 0xFF; + if (bg_alpha == 0xFF) { + struct wl_region *region = + wl_compositor_create_region(output->bar->compositor); + wl_region_add(region, 0, 0, INT32_MAX, INT32_MAX); + wl_surface_set_opaque_region(output->surface, region); + wl_region_destroy(region); + } + struct wl_callback *frame_callback = wl_surface_frame(output->surface); wl_callback_add_listener(frame_callback, &output_frame_listener, output); output->frame_scheduled = true; |
