From 1178a7763bb16c6f128174adca6813aea9321f08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Fri, 3 Jan 2020 21:53:38 +0100 Subject: [PATCH] wayland: window: optimize: set opaque region When background alpha is 1.0 (0xffff), i.e. completely opaque, tell the compositor this, via wl_surface_set_opaque_region(). This allows it to optimize drawing of surfaces _behind_ our window. --- wayland.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/wayland.c b/wayland.c index abe7329f..c0b305ca 100644 --- a/wayland.c +++ b/wayland.c @@ -850,6 +850,17 @@ wayl_win_init(struct terminal *term) goto out; } + if (term->colors.alpha == 0xffff) { + struct wl_region *region = wl_compositor_create_region( + term->wl->compositor); + + if (region != NULL) { + wl_region_add(region, 0, 0, INT32_MAX, INT32_MAX); + wl_surface_set_opaque_region(win->surface, region); + wl_region_destroy(region); + } + } + wl_surface_add_listener(win->surface, &surface_listener, win); win->xdg_surface = xdg_wm_base_get_xdg_surface(wayl->shell, win->surface);