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