diff options
6 files changed, 104 insertions, 6 deletions
diff --git a/recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch b/recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch new file mode 100644 index 000000000..f8f758949 --- /dev/null +++ b/recipes-graphics/wayland/weston/0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | From c8bfa1f8d576cdc6d515dbbac36c48c6166be0d5 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Marius Vlad <marius.vlad@collabora.com> | ||
| 3 | Date: Thu, 1 Apr 2021 00:12:00 +0300 | ||
| 4 | Subject: [PATCH] libweston/backend-drm: Re-order gbm destruction at DRM-backend tear down | ||
| 5 | |||
| 6 | Tearing down the drm-backend when there are no input devices, would call | ||
| 7 | for the gbm device destruction before compositor shutdown. The latter | ||
| 8 | would call into the renderer detroy function and assume that the | ||
| 9 | EGLDisplay, which was created using the before-mentioned gbm device, is | ||
| 10 | still available. This patch re-orders the gbm destruction after the | ||
| 11 | compositor shutdown when no one would make use of it. | ||
| 12 | |||
| 13 | Fixes: #314 | ||
| 14 | |||
| 15 | Signed-off-by: Marius Vlad <marius.vlad@collabora.com> | ||
| 16 | Suggested-by: Daniel Stone <daniel.stone@collabora.com> | ||
| 17 | |||
| 18 | Upstream-Status: Backport [https://gitlab.freedesktop.org/wayland/weston/-/commit/d171c7b3ba346c4d0bd6494f45ebf0be3c3cc5fb] | ||
| 19 | --- | ||
| 20 | libweston/backend-drm/drm.c | 8 ++++---- | ||
| 21 | 1 file changed, 4 insertions(+), 4 deletions(-) | ||
| 22 | |||
| 23 | diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c | ||
| 24 | index 2780f3b..fbcfeca 100644 | ||
| 25 | --- a/libweston/backend-drm/drm.c | ||
| 26 | +++ b/libweston/backend-drm/drm.c | ||
| 27 | @@ -3025,10 +3025,6 @@ err_drm_source: | ||
| 28 | err_udev_input: | ||
| 29 | udev_input_destroy(&b->input); | ||
| 30 | err_sprite: | ||
| 31 | -#ifdef BUILD_DRM_GBM | ||
| 32 | - if (b->gbm) | ||
| 33 | - gbm_device_destroy(b->gbm); | ||
| 34 | -#endif | ||
| 35 | destroy_sprites(b); | ||
| 36 | err_udev_dev: | ||
| 37 | udev_device_unref(drm_device); | ||
| 38 | @@ -3038,6 +3034,10 @@ err_launcher: | ||
| 39 | weston_launcher_destroy(compositor->launcher); | ||
| 40 | err_compositor: | ||
| 41 | weston_compositor_shutdown(compositor); | ||
| 42 | +#ifdef BUILD_DRM_GBM | ||
| 43 | + if (b->gbm) | ||
| 44 | + gbm_device_destroy(b->gbm); | ||
| 45 | +#endif | ||
| 46 | free(b); | ||
| 47 | return NULL; | ||
| 48 | } | ||
| 49 | -- | ||
| 50 | 2.33.0 | ||
diff --git a/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch b/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch new file mode 100644 index 000000000..06e0f7bae --- /dev/null +++ b/recipes-graphics/wayland/weston/0001-meson.build-fix-incorrect-header.patch | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | From a2ba4714a6872e547621d29d9ddcb0f374b88cf6 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Chen Qi <Qi.Chen@windriver.com> | ||
| 3 | Date: Tue, 20 Apr 2021 20:42:18 -0700 | ||
| 4 | Subject: [PATCH] meson.build: fix incorrect header | ||
| 5 | |||
| 6 | The wayland.c actually include 'xdg-shell-client-protocol.h' instead of | ||
| 7 | the server one, so fix it. Otherwise, it's possible to get build failure | ||
| 8 | due to race condition. | ||
| 9 | |||
| 10 | Upstream-Status: Pending | ||
| 11 | |||
| 12 | Signed-off-by: Chen Qi <Qi.Chen@windriver.com> | ||
| 13 | --- | ||
| 14 | libweston/backend-wayland/meson.build | 2 +- | ||
| 15 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
| 16 | |||
| 17 | diff --git a/libweston/backend-wayland/meson.build b/libweston/backend-wayland/meson.build | ||
| 18 | index 7e82513..29270b5 100644 | ||
| 19 | --- a/libweston/backend-wayland/meson.build | ||
| 20 | +++ b/libweston/backend-wayland/meson.build | ||
| 21 | @@ -10,7 +10,7 @@ srcs_wlwl = [ | ||
| 22 | fullscreen_shell_unstable_v1_protocol_c, | ||
| 23 | presentation_time_protocol_c, | ||
| 24 | presentation_time_server_protocol_h, | ||
| 25 | - xdg_shell_server_protocol_h, | ||
| 26 | + xdg_shell_client_protocol_h, | ||
| 27 | xdg_shell_protocol_c, | ||
| 28 | ] | ||
| 29 | |||
| 30 | -- | ||
| 31 | 2.30.2 | ||
| 32 | |||
diff --git a/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch b/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch index 3279a728c..f6ebfd8f6 100644 --- a/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch +++ b/recipes-graphics/wayland/weston/0001-weston-launch-Provide-a-default-version-that-doesn-t.patch | |||
| @@ -11,7 +11,7 @@ Since starting weston as root is a valid use case by itself, if | |||
| 11 | PAM is not available, provide a default version of weston-launch | 11 | PAM is not available, provide a default version of weston-launch |
| 12 | without non-root-user support. | 12 | without non-root-user support. |
| 13 | 13 | ||
| 14 | Upstream-Status: Pending | 14 | Upstream-Status: Denied [https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/725] |
| 15 | 15 | ||
| 16 | Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com> | 16 | Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com> |
| 17 | Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> | 17 | Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> |
diff --git a/recipes-graphics/wayland/weston/systemd-notify.weston-start b/recipes-graphics/wayland/weston/systemd-notify.weston-start new file mode 100644 index 000000000..a97e7b38d --- /dev/null +++ b/recipes-graphics/wayland/weston/systemd-notify.weston-start | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | |||
| 3 | # SPDX-FileCopyrightText: Huawei Inc. | ||
| 4 | # SPDX-License-Identifier: Apache-2.0 | ||
| 5 | |||
| 6 | |||
| 7 | if [[ -x "/usr/lib/weston/systemd-notify.so" ]]; then | ||
| 8 | add_weston_module "systemd-notify.so" | ||
| 9 | fi | ||
diff --git a/recipes-graphics/wayland/weston/xwayland.weston-start b/recipes-graphics/wayland/weston/xwayland.weston-start index b483c97cf..db384b1a5 100644 --- a/recipes-graphics/wayland/weston/xwayland.weston-start +++ b/recipes-graphics/wayland/weston/xwayland.weston-start | |||
| @@ -2,6 +2,4 @@ | |||
| 2 | 2 | ||
| 3 | if type Xwayland >/dev/null 2>/dev/null; then | 3 | if type Xwayland >/dev/null 2>/dev/null; then |
| 4 | mkdir -p /tmp/.X11-unix | 4 | mkdir -p /tmp/.X11-unix |
| 5 | |||
| 6 | add_weston_argument "--modules=xwayland.so" | ||
| 7 | fi | 5 | fi |
diff --git a/recipes-graphics/wayland/weston_9.0.0.imx.bb b/recipes-graphics/wayland/weston_9.0.0.imx.bb index 2d66dff47..4b4679e3d 100644 --- a/recipes-graphics/wayland/weston_9.0.0.imx.bb +++ b/recipes-graphics/wayland/weston_9.0.0.imx.bb | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | # recipe. The second section customizes the recipe for i.MX. | 3 | # recipe. The second section customizes the recipe for i.MX. |
| 4 | 4 | ||
| 5 | ########### OE-core copy ################## | 5 | ########### OE-core copy ################## |
| 6 | # Upstream hash: 0a882490fe75915c7a119f3498df6750be25f8e0 | 6 | # Upstream hash: c8aa0222ce2be647911114aaebcbb0d55d7caf87 |
| 7 | 7 | ||
| 8 | SUMMARY = "Weston, a Wayland compositor" | 8 | SUMMARY = "Weston, a Wayland compositor" |
| 9 | DESCRIPTION = "Weston is the reference implementation of a Wayland compositor" | 9 | DESCRIPTION = "Weston is the reference implementation of a Wayland compositor" |
| @@ -16,8 +16,11 @@ SRC_URI = "https://wayland.freedesktop.org/releases/${BPN}-${PV}.tar.xz \ | |||
| 16 | file://weston.png \ | 16 | file://weston.png \ |
| 17 | file://weston.desktop \ | 17 | file://weston.desktop \ |
| 18 | file://xwayland.weston-start \ | 18 | file://xwayland.weston-start \ |
| 19 | file://systemd-notify.weston-start \ | ||
| 19 | file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \ | 20 | file://0001-weston-launch-Provide-a-default-version-that-doesn-t.patch \ |
| 20 | file://0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch \ | 21 | file://0001-tests-include-fcntl.h-for-open-O_RDWR-O_CLOEXEC-and-.patch \ |
| 22 | file://0001-meson.build-fix-incorrect-header.patch \ | ||
| 23 | file://0001-libweston-backend-drm-Re-order-gbm-destruction-at-DR.patch \ | ||
| 21 | " | 24 | " |
| 22 | 25 | ||
| 23 | SRC_URI:append:libc-musl = " file://dont-use-plane-add-prop.patch " | 26 | SRC_URI:append:libc-musl = " file://dont-use-plane-add-prop.patch " |
| @@ -38,7 +41,7 @@ LDFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'lto', '-Wl,-z,undefs', '', | |||
| 38 | 41 | ||
| 39 | WESTON_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:1])}" | 42 | WESTON_MAJOR_VERSION = "${@'.'.join(d.getVar('PV').split('.')[0:1])}" |
| 40 | 43 | ||
| 41 | EXTRA_OEMESON += "-Dbackend-default=auto -Dbackend-rdp=false -Dpipewire=false" | 44 | EXTRA_OEMESON += "-Dbackend-default=auto -Dpipewire=false" |
| 42 | 45 | ||
| 43 | PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl clients', '', d)} \ | 46 | PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'kms fbdev wayland egl clients', '', d)} \ |
| 44 | ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \ | 47 | ${@bb.utils.contains('DISTRO_FEATURES', 'x11 wayland', 'xwayland', '', d)} \ |
| @@ -64,6 +67,8 @@ PACKAGECONFIG[x11] = "-Dbackend-x11=true,-Dbackend-x11=false,virtual/libx11 libx | |||
| 64 | PACKAGECONFIG[headless] = "-Dbackend-headless=true,-Dbackend-headless=false" | 67 | PACKAGECONFIG[headless] = "-Dbackend-headless=true,-Dbackend-headless=false" |
| 65 | # Weston on framebuffer | 68 | # Weston on framebuffer |
| 66 | PACKAGECONFIG[fbdev] = "-Dbackend-fbdev=true,-Dbackend-fbdev=false,udev mtdev" | 69 | PACKAGECONFIG[fbdev] = "-Dbackend-fbdev=true,-Dbackend-fbdev=false,udev mtdev" |
| 70 | # Weston on RDP | ||
| 71 | PACKAGECONFIG[rdp] = "-Dbackend-rdp=true,-Dbackend-rdp=false,freerdp" | ||
| 67 | # weston-launch | 72 | # weston-launch |
| 68 | PACKAGECONFIG[launch] = "-Dweston-launch=true,-Dweston-launch=false,drm" | 73 | PACKAGECONFIG[launch] = "-Dweston-launch=true,-Dweston-launch=false,drm" |
| 69 | # VA-API desktop recorder | 74 | # VA-API desktop recorder |
| @@ -83,7 +88,7 @@ PACKAGECONFIG[colord] = "-Dcolor-management-colord=true,-Dcolor-management-color | |||
| 83 | # Clients support | 88 | # Clients support |
| 84 | PACKAGECONFIG[clients] = "-Dsimple-clients=all -Ddemo-clients=true,-Dsimple-clients= -Ddemo-clients=false" | 89 | PACKAGECONFIG[clients] = "-Dsimple-clients=all -Ddemo-clients=true,-Dsimple-clients= -Ddemo-clients=false" |
| 85 | # Virtual remote output with GStreamer on DRM backend | 90 | # Virtual remote output with GStreamer on DRM backend |
| 86 | PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer1.0" | 91 | PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer1.0 gstreamer1.0-plugins-base" |
| 87 | # Weston with PAM support | 92 | # Weston with PAM support |
| 88 | PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam" | 93 | PACKAGECONFIG[pam] = "-Dpam=true,-Dpam=false,libpam" |
| 89 | # Weston with screen-share support | 94 | # Weston with screen-share support |
| @@ -114,6 +119,10 @@ do_install:append() { | |||
| 114 | install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland | 119 | install -Dm 644 ${WORKDIR}/xwayland.weston-start ${D}${datadir}/weston-start/xwayland |
| 115 | fi | 120 | fi |
| 116 | 121 | ||
| 122 | if [ "${@bb.utils.contains('PACKAGECONFIG', 'systemd', 'yes', 'no', d)}" = "yes" ]; then | ||
| 123 | install -Dm 644 ${WORKDIR}/systemd-notify.weston-start ${D}${datadir}/weston-start/systemd-notify | ||
| 124 | fi | ||
| 125 | |||
| 117 | if [ "${@bb.utils.contains('PACKAGECONFIG', 'launch', 'yes', 'no', d)}" = "yes" ]; then | 126 | if [ "${@bb.utils.contains('PACKAGECONFIG', 'launch', 'yes', 'no', d)}" = "yes" ]; then |
| 118 | chmod u+s ${D}${bindir}/weston-launch | 127 | chmod u+s ${D}${bindir}/weston-launch |
| 119 | fi | 128 | fi |
