meta-agl-core: gstreamer: Add 0001-waylandsink-Fix-xdg_shell-fullscreen-mode.patch. 81/26981/7
authorVasyl Vavrychuk <vasyl.vavrychuk@opensynergy.com>
Tue, 23 Nov 2021 05:34:35 +0000 (06:34 +0100)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Mon, 10 Jan 2022 11:39:42 +0000 (11:39 +0000)
It is needed to make waylandsink work with AGL compositor.

Patch included conditionally to pass:

    meta-agl-core/scripts/run-yocto-check-layer.sh

Bug-AGL: SPEC-4148
Change-Id: Iebe5595e468404483d7e599c6c4a664474271988
Signed-off-by: Vasyl Vavrychuk <vasyl.vavrychuk@opensynergy.com>
Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/26981
Tested-by: Jenkins Job builder account
ci-image-build: Jenkins Job builder account
ci-image-boot-test: Jenkins Job builder account
Reviewed-by: Marius Vlad <marius.vlad@collabora.com>
Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
meta-agl-core/recipes-multimedia/gstreamer/files/0001-waylandsink-Fix-xdg_shell-fullscreen-mode.patch [new file with mode: 0644]
meta-agl-core/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.16.3.bbappend [new file with mode: 0644]
meta-agl-core/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_aglcore.inc [new file with mode: 0644]

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 (file)
index 0000000..9a11fa1
--- /dev/null
@@ -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
+
diff --git a/meta-agl-core/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.16.3.bbappend b/meta-agl-core/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.16.3.bbappend
new file mode 100644 (file)
index 0000000..9807832
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_aglcore.inc', '', d)}
diff --git a/meta-agl-core/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_aglcore.inc b/meta-agl-core/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_aglcore.inc
new file mode 100644 (file)
index 0000000..618065f
--- /dev/null
@@ -0,0 +1,3 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+
+SRC_URI += "file://0001-waylandsink-Fix-xdg_shell-fullscreen-mode.patch"