1 From 58b1f41f992e457b25eda125b6f823f97128e203 Mon Sep 17 00:00:00 2001
2 From: Shinya Saito <ssaito@igel.co.jp>
3 Date: Thu, 22 Aug 2019 16:04:37 +0900
4 Subject: [PATCH] waylandsink: Fix xdg_shell fullscreen mode
6 xdg_shell fullscreen mode doesn't work for committing
7 xdg_surface without configure acknowledgement.
9 In addition, we can't set different surface setting from
10 acknowledged config in this mode.
12 Upstream-Status: Backport [from master/1.17.1]
14 ext/wayland/wlwindow.c | 16 +++++++++++-----
15 1 file changed, 11 insertions(+), 5 deletions(-)
17 diff --git a/ext/wayland/wlwindow.c b/ext/wayland/wlwindow.c
18 index f22ebcab6..50158795b 100644
19 --- a/ext/wayland/wlwindow.c
20 +++ b/ext/wayland/wlwindow.c
21 @@ -259,7 +259,6 @@ gst_wl_window_new_toplevel (GstWlDisplay * display, const GstVideoInfo * info,
22 gboolean fullscreen, GMutex * render_lock)
27 window = gst_wl_window_new_internal (display, render_lock);
29 @@ -325,10 +324,14 @@ gst_wl_window_new_toplevel (GstWlDisplay * display, const GstVideoInfo * info,
33 - /* set the initial size to be the same as the reported video size */
35 - gst_util_uint64_scale_int_round (info->width, info->par_n, info->par_d);
36 - gst_wl_window_set_render_rectangle (window, 0, 0, width, info->height);
37 + /* render_rectangle is already set via toplevel_configure in
38 + * xdg_shell fullscreen mode */
39 + if (!(display->xdg_wm_base && fullscreen)) {
40 + /* set the initial size to be the same as the reported video size */
42 + gst_util_uint64_scale_int_round (info->width, info->par_n, info->par_d);
43 + gst_wl_window_set_render_rectangle (window, 0, 0, width, info->height);
48 @@ -548,6 +551,9 @@ gst_wl_window_set_render_rectangle (GstWlWindow * window, gint x, gint y,
50 gst_wl_window_update_borders (window);
52 + if (!window->configured)
55 if (window->video_width != 0) {
56 wl_subsurface_set_sync (window->video_subsurface);
57 gst_wl_window_resize_video_surface (window, TRUE);