waylandsink: Use G_MAXINT32 for opaque regions
authorRobert Mader <robert.mader@collabora.com>
Mon, 13 Dec 2021 11:00:10 +0000 (12:00 +0100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 13 Jan 2022 19:39:59 +0000 (19:39 +0000)
`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>

subprojects/gst-plugins-bad/ext/wayland/wlwindow.c

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