summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--video/out/opengl/context_wayland.c7
-rw-r--r--video/out/vo_wlshm.c5
-rw-r--r--video/out/vulkan/context_wayland.c7
3 files changed, 19 insertions, 0 deletions
diff --git a/video/out/opengl/context_wayland.c b/video/out/opengl/context_wayland.c
index 13040b54d8..c0a8aee206 100644
--- a/video/out/opengl/context_wayland.c
+++ b/video/out/opengl/context_wayland.c
@@ -122,6 +122,13 @@ static void resize(struct ra_ctx *ctx)
const int32_t width = wl->scaling*mp_rect_w(wl->geometry);
const int32_t height = wl->scaling*mp_rect_h(wl->geometry);
+ if (!ctx->opts.want_alpha) {
+ struct wl_region *region = wl_compositor_create_region(wl->compositor);
+ wl_region_add(region, 0, 0, width, height);
+ wl_surface_set_opaque_region(wl->surface, region);
+ wl_region_destroy(region);
+ }
+
wl_surface_set_buffer_scale(wl->surface, wl->scaling);
if (p->egl_window)
diff --git a/video/out/vo_wlshm.c b/video/out/vo_wlshm.c
index 3b328faee6..43a1318c8d 100644
--- a/video/out/vo_wlshm.c
+++ b/video/out/vo_wlshm.c
@@ -201,6 +201,11 @@ static int resize(struct vo *vo)
const int32_t height = wl->scaling * mp_rect_h(wl->geometry);
struct buffer *buf;
+ struct wl_region *region = wl_compositor_create_region(wl->compositor);
+ wl_region_add(region, 0, 0, width, height);
+ wl_surface_set_opaque_region(wl->surface, region);
+ wl_region_destroy(region);
+
vo->want_redraw = true;
vo->dwidth = width;
vo->dheight = height;
diff --git a/video/out/vulkan/context_wayland.c b/video/out/vulkan/context_wayland.c
index 481c1005e1..753854381c 100644
--- a/video/out/vulkan/context_wayland.c
+++ b/video/out/vulkan/context_wayland.c
@@ -208,6 +208,13 @@ static bool resize(struct ra_ctx *ctx)
const int32_t width = wl->scaling*mp_rect_w(wl->geometry);
const int32_t height = wl->scaling*mp_rect_h(wl->geometry);
+ if (!ctx->opts.want_alpha) {
+ struct wl_region *region = wl_compositor_create_region(wl->compositor);
+ wl_region_add(region, 0, 0, width, height);
+ wl_surface_set_opaque_region(wl->surface, region);
+ wl_region_destroy(region);
+ }
+
wl_surface_set_buffer_scale(wl->surface, wl->scaling);
bool ok = ra_vk_ctx_resize(ctx, width, height);
if (!wl->vo_opts->fullscreen && !wl->vo_opts->window_maximized)