diff options
Diffstat (limited to 'meta-agl-core/recipes-multimedia/gstreamer/files')
-rw-r--r-- | meta-agl-core/recipes-multimedia/gstreamer/files/0001-waylandsink-Fix-xdg_shell-fullscreen-mode.patch | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/meta-agl-core/recipes-multimedia/gstreamer/files/0001-waylandsink-Fix-xdg_shell-fullscreen-mode.patch b/meta-agl-core/recipes-multimedia/gstreamer/files/0001-waylandsink-Fix-xdg_shell-fullscreen-mode.patch new file mode 100644 index 000000000..9a11fa1d7 --- /dev/null +++ b/meta-agl-core/recipes-multimedia/gstreamer/files/0001-waylandsink-Fix-xdg_shell-fullscreen-mode.patch @@ -0,0 +1,60 @@ +From 58b1f41f992e457b25eda125b6f823f97128e203 Mon Sep 17 00:00:00 2001 +From: Shinya Saito <ssaito@igel.co.jp> +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 + |