waylandsink: Use G_MAXINT32 for opaque regions

`gst_wl_window_set_opaque` does not get called on window resizes,
potentially leaving opaque regions too small.
According to the spec opaque regions can be bigger than the surface
size - parts that fall outside of the surface will get ignored.
Thus we can can simply use `G_MAXINT32` and be sure that the whole
surfaces will always be covered.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1446>
This commit is contained in:
Robert Mader 2021-12-13 12:00:10 +01:00 committed by GStreamer Marge Bot
parent d5f5a1c25f
commit 1e2bc68171

View file

@ -433,16 +433,14 @@ gst_wl_window_set_opaque (GstWlWindow * window, const GstVideoInfo * info)
/* Set area opaque */ /* Set area opaque */
region = wl_compositor_create_region (window->display->compositor); region = wl_compositor_create_region (window->display->compositor);
wl_region_add (region, 0, 0, window->render_rectangle.w, wl_region_add (region, 0, 0, G_MAXINT32, G_MAXINT32);
window->render_rectangle.h);
wl_surface_set_opaque_region (window->area_surface, region); wl_surface_set_opaque_region (window->area_surface, region);
wl_region_destroy (region); wl_region_destroy (region);
if (!GST_VIDEO_INFO_HAS_ALPHA (info)) { if (!GST_VIDEO_INFO_HAS_ALPHA (info)) {
/* Set video opaque */ /* Set video opaque */
region = wl_compositor_create_region (window->display->compositor); region = wl_compositor_create_region (window->display->compositor);
wl_region_add (region, 0, 0, window->render_rectangle.w, wl_region_add (region, 0, 0, G_MAXINT32, G_MAXINT32);
window->render_rectangle.h);
wl_surface_set_opaque_region (window->video_surface, region); wl_surface_set_opaque_region (window->video_surface, region);
wl_region_destroy (region); wl_region_destroy (region);
} }