git: f2820b6cc217 - main - x11-toolkits/wlroots: update to 0.14.0

Jan Beich jbeich at FreeBSD.org
Wed Jun 23 18:15:17 UTC 2021


The branch main has been updated by jbeich:

URL: https://cgit.FreeBSD.org/ports/commit/?id=f2820b6cc2170feef17989c422f2cf46644a5b57

commit f2820b6cc2170feef17989c422f2cf46644a5b57
Author:     Jan Beich <jbeich at FreeBSD.org>
AuthorDate: 2021-04-12 09:43:56 +0000
Commit:     Jan Beich <jbeich at FreeBSD.org>
CommitDate: 2021-06-23 18:07:18 +0000

    x11-toolkits/wlroots: update to 0.14.0
    
    Changes:        https://github.com/swaywm/wlroots/releases/tag/0.14.0
    Reported by:    GitHub (watch releases)
---
 x11-toolkits/wlroots/Makefile          |  37 ++-
 x11-toolkits/wlroots/distinfo          |  76 +++++-
 x11-toolkits/wlroots/pkg-plist         |  10 +-
 x11-wm/cage/Makefile                   |   5 +-
 x11-wm/cage/distinfo                   |   4 +
 x11-wm/gamescope/Makefile              |   2 +
 x11-wm/hikari/Makefile                 |   3 +-
 x11-wm/hikari/files/patch-wlroots-0.14 |  42 ++++
 x11-wm/labwc/Makefile                  |   8 +-
 x11-wm/labwc/distinfo                  |   6 +
 x11-wm/phoc/Makefile                   |  16 +-
 x11-wm/phoc/distinfo                   |  18 +-
 x11-wm/phoc/files/patch-wlroots-0.14   |  18 ++
 x11-wm/river/Makefile                  |   3 +-
 x11-wm/river/files/patch-wlroots-0.14  | 419 +++++++++++++++++++++++++++++++++
 x11-wm/sway/Makefile                   |   9 +-
 x11-wm/sway/distinfo                   |  10 +
 x11-wm/wayfire-plugins-extra/Makefile  |   2 +-
 x11-wm/wayfire/Makefile                |   8 +-
 x11-wm/wayfire/distinfo                |   4 +
 20 files changed, 652 insertions(+), 48 deletions(-)

diff --git a/x11-toolkits/wlroots/Makefile b/x11-toolkits/wlroots/Makefile
index 74eaa8aada3e..dcb789f0f170 100644
--- a/x11-toolkits/wlroots/Makefile
+++ b/x11-toolkits/wlroots/Makefile
@@ -1,12 +1,10 @@
 PORTNAME=	wlroots
-DISTVERSION=	0.13.0
-PORTREVISION=	4
+DISTVERSION=	0.14.0
 CATEGORIES=	x11-toolkits
 
 PATCH_SITES=	https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
 PATCHFILES+=	7c0e2a271a4c.patch:-p1 # https://github.com/swaywm/wlroots/pull/2064
-PATCHFILES+=	e1b5323f56c3.patch:-p1 # https://github.com/swaywm/wlroots/pull/2064
-PATCHFILES+=	d0c1f0c0b637.patch:-p1 # https://github.com/swaywm/wlroots/pull/2908
+PATCHFILES+=	55a8d225cf8c.patch:-p1 # https://github.com/swaywm/wlroots/pull/2064
 
 MAINTAINER=	jbeich at FreeBSD.org
 COMMENT=	Modular Wayland compositor library
@@ -20,38 +18,34 @@ BUILD_DEPENDS=	evdev-proto>0:devel/evdev-proto \
 LIB_DEPENDS=	libudev.so:devel/libudev-devd \
 		libdrm.so:graphics/libdrm \
 		libwayland-server.so:graphics/wayland \
+		libseat.so:sysutils/seatd \
 		libinput.so:x11/libinput \
 		libxkbcommon.so:x11/libxkbcommon
-RUN_DEPENDS=	libudev-devd>=0.4.1:devel/libudev-devd \
-		mesa-dri>0:graphics/mesa-dri
+RUN_DEPENDS=	libudev-devd>=0.4.1:devel/libudev-devd
 
 USES=		compiler:c11 gl meson pkgconfig xorg
 USE_GITHUB=	yes
-USE_GL=		egl gbm glesv2
+USE_GL=		gbm
 USE_XORG=	pixman
 USE_LDCONFIG=	yes
 GH_ACCOUNT=	swaywm
-MESON_ARGS=	-Dexamples=false
+MESON_ARGS=	-Dexamples=false -Drenderers=${RENDERERS:ts,}
 
-OPTIONS_DEFINE=	LIBSEAT NVIDIA UUID X11
-OPTIONS_DEFAULT=LIBSEAT UUID X11
+OPTIONS_DEFINE=	NVIDIA OPENGL X11
+OPTIONS_DEFAULT=OPENGL X11
 OPTIONS_SUB=	yes
 
-LIBSEAT_DESC=		DRM sessions with/without root via libseat
-LIBSEAT_LIB_DEPENDS=	libseat.so:sysutils/seatd
-LIBSEAT_MESON_ENABLED=	libseat
-
 NVIDIA_DESC=		EGLStreams support for DRM backend (experimental)
 NVIDIA_PATCH_SITES=	https://github.com/danvd/${GH_PROJECT}-eglstreams/commit/:nvidia
-NVIDIA_PATCHFILES=	eba4b66f92ca.patch:-p1:nvidia # https://github.com/swaywm/wlroots/pull/2769
+NVIDIA_PATCHFILES=	b78146d76ab0.patch:-p1:nvidia # https://github.com/swaywm/wlroots/pull/2769
+NVIDIA_IMPLIES=		OPENGL
 .if make(makesum)
 .MAKEFLAGS:		WITH+=NVIDIA
 .endif
 
-# uuid_create() is random on NetBSD and OpenBSD but not DragonFly and FreeBSD
-# See also https://github.com/netbsd/src/commit/8651e9a438af
-UUID_DESC=		Exported surfaces to use random UUIDs via libuuid
-UUID_LIB_DEPENDS=	libuuid.so:misc/e2fsprogs-libuuid
+OPENGL_RUN_DEPENDS=	mesa-dri>0:graphics/mesa-dri
+OPENGL_USE=		GL=egl,glesv2
+OPENGL_VARS=		RENDERERS+=gles2
 
 X11_LIB_DEPENDS=	libxcb-errors.so:x11/xcb-util-errors \
 			libxcb-render-util.so:x11/xcb-util-renderutil \
@@ -61,4 +55,9 @@ X11_RUN_DEPENDS=	xwayland-devel>0:x11-servers/xwayland-devel
 X11_USE=		XORG=xcb
 X11_MESON_ENABLED=	x11-backend xwayland
 
+post-patch:
+# Extract (snapshot) version from the port instead of meson.build
+	@${REINPLACE_CMD} "/STR/s/meson.project_version()/'${DISTVERSIONFULL}'/" \
+		${WRKSRC}/include/wlr/meson.build
+
 .include <bsd.port.mk>
diff --git a/x11-toolkits/wlroots/distinfo b/x11-toolkits/wlroots/distinfo
index 23a9fd4e43c3..180d981e7167 100644
--- a/x11-toolkits/wlroots/distinfo
+++ b/x11-toolkits/wlroots/distinfo
@@ -1,11 +1,69 @@
-TIMESTAMP = 1617734115
-SHA256 (swaywm-wlroots-0.13.0_GH0.tar.gz) = f6bea37fd4a6f5e5f552b83d61adae8c73e64b0bcb9ae0ab464ebcd9309d3cf3
-SIZE (swaywm-wlroots-0.13.0_GH0.tar.gz) = 503575
+TIMESTAMP = 1624389620
+SHA256 (swaywm-wlroots-0.14.0_GH0.tar.gz) = 2a8435bf63681868699c4e3975df31cb111ad2d3f35740179036083f87382ac7
+SIZE (swaywm-wlroots-0.14.0_GH0.tar.gz) = 505461
 SHA256 (7c0e2a271a4c.patch) = 2b92d3dde7640061ed85ab1690031f7627bebc2366e8c4da217017188ba7195e
 SIZE (7c0e2a271a4c.patch) = 5729
-SHA256 (e1b5323f56c3.patch) = 13145323caf9e56412ee3766fb9eacca9c6e4ca7088a320e79bc1512c0afe522
-SIZE (e1b5323f56c3.patch) = 4028
-SHA256 (d0c1f0c0b637.patch) = 489aae1a14e7fecde4acfd09b3321975adae9b191fc859894e38cfad1b1ea9b7
-SIZE (d0c1f0c0b637.patch) = 1129
-SHA256 (eba4b66f92ca.patch) = a271c30c414fb2ae2cb6e0cbca77c37c1e15a3b160097f6e78298bfcec8df352
-SIZE (eba4b66f92ca.patch) = 96009
+SHA256 (55a8d225cf8c.patch) = f9df98540fdabe35c61ed828f6d64633aab72edf0ba1c7ad0849594f10383ce7
+SIZE (55a8d225cf8c.patch) = 4209
+SHA256 (b78146d76ab0.patch) = 4ecabeb60e6bc641d4f10d535d6144b6cf5cd57f7a26b22621f47d1fac3b1932
+SIZE (b78146d76ab0.patch) = 91559
+SHA256 (8c700c534556.patch) = d004493cde08be574d81e3e6024491cd1c4312ddadbdc0f5ea818327a558165a
+SIZE (8c700c534556.patch) = 49189
+SHA256 (0464af8573f9.patch) = f4870fb2a232885513ab18594ff97463483e132ebbac09f367f3017c510d3823
+SIZE (0464af8573f9.patch) = 110532
+SHA256 (e3e9250ea6d8.patch) = d5f2764df5b99c57b106a87af160ffa955a0afe1de33bd90131eced1c39f44a1
+SIZE (e3e9250ea6d8.patch) = 11220
+SHA256 (1af1d1694195.patch) = 16d705e33b0939a8b11ea3d0f9355ddcb7c0cb85f8d7f668f4c016370be80c11
+SIZE (1af1d1694195.patch) = 2056
+SHA256 (93319aa2b633.patch) = 0bbbb871aefacdf8b85b72a7bcafcfe9757e48653b345d1e1a96988f88680753
+SIZE (93319aa2b633.patch) = 35376
+SHA256 (0028938735d1.patch) = d110d2fd139497f04ba7c8c0d649d03d28224ba6b33aaab95f4d233077234db9
+SIZE (0028938735d1.patch) = 39808
+SHA256 (6885b636508c.patch) = b7c8d57224db108cc40420ba06aa7c227d2a48a8418f9430f2d0381447c68e62
+SIZE (6885b636508c.patch) = 694
+SHA256 (76534695a8d3.patch) = 084e97edd02f5ffd5d0181f9f9d0eea0f76bebe2b55b20f0dd78b182b0fe58cf
+SIZE (76534695a8d3.patch) = 9670
+SHA256 (445142e6a1f9.patch) = e6b88f71a7e2b4ba340e53dc356748bc8d280a295e2188fde834aa0e45608f63
+SIZE (445142e6a1f9.patch) = 2876
+SHA256 (f029ae1dac4b.patch) = f87e1128f3f8f34dc250bc2d4948275ee35b6def3026667758952dd74c0829e7
+SIZE (f029ae1dac4b.patch) = 835
+SHA256 (ad1fab0b3704.patch) = 1aa049ea5b83e8148d44e5c8b18b2a17188bb027220201e25d957181dc48f953
+SIZE (ad1fab0b3704.patch) = 1543
+SHA256 (4407b8e5a3a7.patch) = e882f50f0c06224e44c34f06dc9321aba84630c6e5146bdf3289f8c9fac67c96
+SIZE (4407b8e5a3a7.patch) = 7109
+SHA256 (e021c068d02f.patch) = bfe830161b0946187107f3eaba5c1eacc7118011a02375991f951124dc969f89
+SIZE (e021c068d02f.patch) = 1365
+SHA256 (2cc710bda83c.patch) = b8c6b3d354fc531bc7042312c006770c78b6ab61628a6d83d3417761372e478f
+SIZE (2cc710bda83c.patch) = 8937
+SHA256 (f0888604d6ce.patch) = 4d354bd7324d308ec5fc9ce211cdf81e6fdcee2bbc62dc4fff41a34a5f77c00a
+SIZE (f0888604d6ce.patch) = 21680
+SHA256 (4fdd5efc9260.patch) = 96d8e057c8b0d987e78d34ea5fdb6ec35ed3878eb5d1ee83319dcb29af198bd8
+SIZE (4fdd5efc9260.patch) = 5628
+SHA256 (59c119829f1c.patch) = 34408bc1edac183fbcb86f3a22d5a43e7c5f47b2dd5226b1e60b140e8387214c
+SIZE (59c119829f1c.patch) = 1005
+SHA256 (cfbd8aa6cf24.patch) = 62027ea791c9e8f0ea4ced680ab688f6c57d1dddae04cbfe70e108ad8b439a58
+SIZE (cfbd8aa6cf24.patch) = 4007
+SHA256 (3f6dbe428e8b.patch) = e6b7339027d7e653f955da9df579167e2da56311ab294187b24f709b70026952
+SIZE (3f6dbe428e8b.patch) = 11424
+SHA256 (a83943798aef.patch) = 408e5a26afec05b88768451c65c7712fe87de3b8a3193c3655e7adfeb63b323c
+SIZE (a83943798aef.patch) = 679
+SHA256 (f64a98d49d25.patch) = ec753b6fad3afd5db8e06983689f549e0966305b4ea892f82078cf879d9a0640
+SIZE (f64a98d49d25.patch) = 4998
+SHA256 (9885ccb4b0b1.patch) = 83c2f06446c0519523885627a210d77fdbdd23491e3ec0145c4aebec199c23a6
+SIZE (9885ccb4b0b1.patch) = 7855
+SHA256 (71f9f33e3bf2.patch) = 75ad6be6c4ab195e3015647fdb1365f5dab534155eed11153f13f61a30cb4792
+SIZE (71f9f33e3bf2.patch) = 12943
+SHA256 (bd8c520dbd9a.patch) = 7ff9eb420a1870177b16227ba7b380084eaaaffeac2bac39b8c0e329515af36a
+SIZE (bd8c520dbd9a.patch) = 55639
+SHA256 (2d89dc9b8651.patch) = 488722edd6da814cfb20156e8bd2a50b54743334506dfab69576990ebd8bb365
+SIZE (2d89dc9b8651.patch) = 15460
+SHA256 (8f9aeda46d8a.patch) = 8241a0003819e6355cc495a512ea8eed0bb521cbb416aa26068a72f12d9a991b
+SIZE (8f9aeda46d8a.patch) = 7070
+SHA256 (e3d16970433f.patch) = e4641123a64519921991a1db7437ff3d2fe007662ec35ba9572aa3a60b188228
+SIZE (e3d16970433f.patch) = 1180
+SHA256 (79f10d929b72.patch) = b3b5fe1ef223bae812c00b4d98f09c1bba5688fdcfa38e150551020232f32553
+SIZE (79f10d929b72.patch) = 10811
+SHA256 (1a16e8fc56a9.patch) = 2bc8e01099fdf6410f07392147e6d376cc5f89b3bb3dda6133c4e4c9ead05883
+SIZE (1a16e8fc56a9.patch) = 1422
+SHA256 (dd039c56d93a.patch) = 533707ab9512b75a9a66ca50b95340883ba51fb2daa294f9b0ff0b7c5dbef572
+SIZE (dd039c56d93a.patch) = 1258
diff --git a/x11-toolkits/wlroots/pkg-plist b/x11-toolkits/wlroots/pkg-plist
index 6e275d0f95b9..a0e52cd844d1 100644
--- a/x11-toolkits/wlroots/pkg-plist
+++ b/x11-toolkits/wlroots/pkg-plist
@@ -6,7 +6,6 @@ include/wlr/backend/libinput.h
 include/wlr/backend/multi.h
 include/wlr/backend/noop.h
 include/wlr/backend/session.h
-include/wlr/backend/session/interface.h
 include/wlr/backend/wayland.h
 %%X11%%include/wlr/backend/x11.h
 include/wlr/config.h
@@ -20,9 +19,10 @@ include/wlr/interfaces/wlr_tablet_tool.h
 include/wlr/interfaces/wlr_touch.h
 include/wlr/render/dmabuf.h
 include/wlr/render/drm_format_set.h
-include/wlr/render/egl.h
-include/wlr/render/gles2.h
+%%OPENGL%%include/wlr/render/egl.h
+%%OPENGL%%include/wlr/render/gles2.h
 include/wlr/render/interface.h
+include/wlr/render/pixman.h
 include/wlr/render/wlr_renderer.h
 include/wlr/render/wlr_texture.h
 include/wlr/types/wlr_box.h
@@ -35,7 +35,6 @@ include/wlr/types/wlr_export_dmabuf_v1.h
 include/wlr/types/wlr_foreign_toplevel_management_v1.h
 include/wlr/types/wlr_fullscreen_shell_v1.h
 include/wlr/types/wlr_gamma_control_v1.h
-include/wlr/types/wlr_gtk_primary_selection.h
 include/wlr/types/wlr_idle.h
 include/wlr/types/wlr_idle_inhibit_v1.h
 include/wlr/types/wlr_input_device.h
@@ -75,6 +74,7 @@ include/wlr/types/wlr_viewporter.h
 include/wlr/types/wlr_virtual_keyboard_v1.h
 include/wlr/types/wlr_virtual_pointer_v1.h
 include/wlr/types/wlr_xcursor_manager.h
+include/wlr/types/wlr_xdg_activation_v1.h
 include/wlr/types/wlr_xdg_decoration_v1.h
 include/wlr/types/wlr_xdg_foreign_registry.h
 include/wlr/types/wlr_xdg_foreign_v1.h
@@ -88,5 +88,5 @@ include/wlr/version.h
 include/wlr/xcursor.h
 %%X11%%include/wlr/xwayland.h
 lib/libwlroots.so
-lib/libwlroots.so.8
+lib/libwlroots.so.9
 libdata/pkgconfig/wlroots.pc
diff --git a/x11-wm/cage/Makefile b/x11-wm/cage/Makefile
index 63743768cbb5..fb334d477931 100644
--- a/x11-wm/cage/Makefile
+++ b/x11-wm/cage/Makefile
@@ -1,10 +1,13 @@
 PORTNAME=	cage
 DISTVERSIONPREFIX=	v
 DISTVERSION=	0.1.3
+PORTREVISION=	1
 CATEGORIES=	x11-wm
 
 PATCH_SITES=	https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
 PATCHFILES+=	70ecdcb02ea0.patch:-p1 # https://github.com/Hjdskes/cage/pull/148
+PATCHFILES+=	9a4523d47efe.patch:-p1 # https://github.com/Hjdskes/cage/pull/191
+PATCHFILES+=	7b081cfeee4c.patch:-p1 # https://github.com/Hjdskes/cage/pull/191
 
 MAINTAINER=	jbeich at FreeBSD.org
 COMMENT=	Wayland kiosk
@@ -14,7 +17,7 @@ LICENSE_FILE=	${WRKSRC}/LICENSE
 
 BUILD_DEPENDS=	evdev-proto>0:devel/evdev-proto \
 		wayland-protocols>=1.14:graphics/wayland-protocols \
-		wlroots>=0.13.0:x11-toolkits/wlroots
+		wlroots>=0.14.0:x11-toolkits/wlroots
 LIB_DEPENDS=	libwayland-server.so:graphics/wayland \
 		libwlroots.so:x11-toolkits/wlroots \
 		libxkbcommon.so:x11/libxkbcommon
diff --git a/x11-wm/cage/distinfo b/x11-wm/cage/distinfo
index e930668dcdce..1238d81fea65 100644
--- a/x11-wm/cage/distinfo
+++ b/x11-wm/cage/distinfo
@@ -3,3 +3,7 @@ SHA256 (Hjdskes-cage-v0.1.3_GH0.tar.gz) = c28aa8230f937c89b564967748451c1eb15d86
 SIZE (Hjdskes-cage-v0.1.3_GH0.tar.gz) = 24615
 SHA256 (70ecdcb02ea0.patch) = 2dd0e99d181986c6b2d5e04e89f692e3d77b8bd2a3a08f94cf8a27b38489eb3c
 SIZE (70ecdcb02ea0.patch) = 2137
+SHA256 (9a4523d47efe.patch) = 7f6fb4d45711f324346144702f2fb63b945e299874172875d517388c58684a2a
+SIZE (9a4523d47efe.patch) = 1519
+SHA256 (7b081cfeee4c.patch) = 3956383c75f210f55cfda2e333916f30d44999dc6e255b94cf51ba792bc5c583
+SIZE (7b081cfeee4c.patch) = 1335
diff --git a/x11-wm/gamescope/Makefile b/x11-wm/gamescope/Makefile
index fe11bef28a62..287fbd1371c7 100644
--- a/x11-wm/gamescope/Makefile
+++ b/x11-wm/gamescope/Makefile
@@ -16,6 +16,8 @@ COMMENT=	Micro-compositor from SteamOS
 LICENSE=	BSD2CLAUSE
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
+BROKEN=		fails to build after https://github.com/swaywm/wlroots/commit/9ecfa4343a6d
+
 BUILD_DEPENDS=	glslangValidator:graphics/glslang \
 		evdev-proto>0:devel/evdev-proto \
 		vulkan-headers>0:graphics/vulkan-headers \
diff --git a/x11-wm/hikari/Makefile b/x11-wm/hikari/Makefile
index b6ddecfb12df..d7c5842315b0 100644
--- a/x11-wm/hikari/Makefile
+++ b/x11-wm/hikari/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	hikari
 DISTVERSION=	2.3.0
+PORTREVISION=	1
 CATEGORIES=	x11-wm
 MASTER_SITES=	https://hikari.acmelabs.space/releases/
 
@@ -11,7 +12,7 @@ LICENSE_FILE=	${WRKSRC}/LICENSE
 
 BUILD_DEPENDS=	evdev-proto>0:devel/evdev-proto \
 		wayland-protocols>=1.14:graphics/wayland-protocols \
-		wlroots>=0.13.0<0.14.0:x11-toolkits/wlroots
+		wlroots>=0.14.0<0.15.0:x11-toolkits/wlroots
 LIB_DEPENDS=	libinput.so:x11/libinput \
 		libucl.so:textproc/libucl \
 		libwayland-server.so:graphics/wayland \
diff --git a/x11-wm/hikari/files/patch-wlroots-0.14 b/x11-wm/hikari/files/patch-wlroots-0.14
new file mode 100644
index 000000000000..61ac93e50a2b
--- /dev/null
+++ b/x11-wm/hikari/files/patch-wlroots-0.14
@@ -0,0 +1,42 @@
+src/server.c:14:10: fatal error: 'wlr/types/wlr_gtk_primary_selection.h' file not found
+#include <wlr/types/wlr_gtk_primary_selection.h>
+         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+src/view.c:812:47: error: no member named 'subsurfaces' in 'struct wlr_surface'
+  wl_list_for_each (wlr_subsurface, &surface->subsurfaces, parent_link) {
+                                     ~~~~~~~  ^
+
+--- src/server.c.orig	2021-04-09 17:37:23 UTC
++++ src/server.c
+@@ -11,7 +11,6 @@
+ #include <wlr/types/wlr_compositor.h>
+ #include <wlr/types/wlr_data_control_v1.h>
+ #include <wlr/types/wlr_data_device.h>
+-#include <wlr/types/wlr_gtk_primary_selection.h>
+ #include <wlr/types/wlr_input_device.h>
+ #include <wlr/types/wlr_keyboard.h>
+ #include <wlr/types/wlr_output_layout.h>
+@@ -610,7 +609,6 @@ setup_selection(struct hikari_server *server)
+ {
+   wlr_data_control_manager_v1_create(server->display);
+ 
+-  wlr_gtk_primary_selection_device_manager_create(server->display);
+   wlr_primary_selection_v1_device_manager_create(server->display);
+ 
+   server->seat = wlr_seat_create(server->display, "seat0");
+--- src/view.c.orig	2021-04-09 17:37:23 UTC
++++ src/view.c
+@@ -809,7 +809,13 @@ hikari_view_map(struct hikari_view *view, struct wlr_s
+   wl_signal_add(&surface->events.new_subsurface, &view->new_subsurface);
+ 
+   struct wlr_subsurface *wlr_subsurface;
+-  wl_list_for_each (wlr_subsurface, &surface->subsurfaces, parent_link) {
++  wl_list_for_each (wlr_subsurface, &surface->subsurfaces_below, parent_link) {
++    struct hikari_view_subsurface *subsurface =
++        (struct hikari_view_subsurface *)malloc(
++            sizeof(struct hikari_view_subsurface));
++    hikari_view_subsurface_init(subsurface, view, wlr_subsurface);
++  }
++  wl_list_for_each (wlr_subsurface, &surface->subsurfaces_above, parent_link) {
+     struct hikari_view_subsurface *subsurface =
+         (struct hikari_view_subsurface *)malloc(
+             sizeof(struct hikari_view_subsurface));
diff --git a/x11-wm/labwc/Makefile b/x11-wm/labwc/Makefile
index 900a4104453b..7837ef00aa69 100644
--- a/x11-wm/labwc/Makefile
+++ b/x11-wm/labwc/Makefile
@@ -1,14 +1,20 @@
 PORTNAME=	labwc
 DISTVERSION=	0.2.1
+PORTREVISION=	1
 CATEGORIES=	x11-wm
 
+PATCH_SITES=	https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
+PATCHFILES+=	f5d7bf123e83.patch:-p1 # wlroots 0.14
+PATCHFILES+=	892e93dd84c5.patch:-p1 # wlroots 0.14
+PATCHFILES+=	874cc9e63706.patch:-p1 # wlroots 0.14
+
 MAINTAINER=	jbeich at FreeBSD.org
 COMMENT=	Wayland stacking compositor
 
 LICENSE=	GPLv2
 
 BUILD_DEPENDS=	wayland-protocols>0:graphics/wayland-protocols \
-		wlroots>=0.13.0<0.14.0:x11-toolkits/wlroots
+		wlroots>=0.14.0<0.15.0:x11-toolkits/wlroots
 LIB_DEPENDS=	libwayland-server.so:graphics/wayland \
 		libwlroots.so:x11-toolkits/wlroots \
 		libinput.so:x11/libinput \
diff --git a/x11-wm/labwc/distinfo b/x11-wm/labwc/distinfo
index 86a6191af987..a8929a652e72 100644
--- a/x11-wm/labwc/distinfo
+++ b/x11-wm/labwc/distinfo
@@ -1,3 +1,9 @@
 TIMESTAMP = 1618521666
 SHA256 (johanmalm-labwc-0.2.1_GH0.tar.gz) = 22f219acbd53d3134df0ae158b0db7b762caead4ea38f54f2833fc682b3dedd6
 SIZE (johanmalm-labwc-0.2.1_GH0.tar.gz) = 68438
+SHA256 (f5d7bf123e83.patch) = df5634487f680c7f5dd6b0c9be5d4c73b7e4a5010495600d876b5d2ed3fc731c
+SIZE (f5d7bf123e83.patch) = 901
+SHA256 (892e93dd84c5.patch) = b13a945bc87a4503860619c52dba5cf2b24350c24f9671a131de9da5713ec26e
+SIZE (892e93dd84c5.patch) = 983
+SHA256 (874cc9e63706.patch) = 94a3888bbafeb22d51d2a32c1aea78d6c184c9e38e7698651bdae2ee34894607
+SIZE (874cc9e63706.patch) = 1503
diff --git a/x11-wm/phoc/Makefile b/x11-wm/phoc/Makefile
index ee7ded82187d..436d9c8275a5 100644
--- a/x11-wm/phoc/Makefile
+++ b/x11-wm/phoc/Makefile
@@ -1,11 +1,18 @@
 PORTNAME=	phoc
 DISTVERSIONPREFIX=	v
 DISTVERSION=	0.7.1
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	x11-wm
 
 PATCH_SITES=	${GL_SITE}/${GL_ACCOUNT}/${GL_PROJECT}/-/commit/
-PATCHFILES+=	b37bf15194e6.patch:-p1 # https://source.puri.sm/Librem5/phoc/-/merge_requests/241
+PATCHFILES+=	4912c5a9454b.patch:-p1 # https://source.puri.sm/Librem5/phoc/-/merge_requests/241
+PATCHFILES+=	00e5da6dd7a2.patch:-p1 # https://source.puri.sm/Librem5/phoc/-/merge_requests/241
+PATCHFILES+=	b278fd6b4f57.patch:-p1 # https://source.puri.sm/Librem5/phoc/-/merge_requests/241
+PATCHFILES+=	3f418c11d813.patch:-p1 # https://source.puri.sm/Librem5/phoc/-/merge_requests/241
+PATCHFILES+=	39da5a00f3b3.patch:-p1 # https://source.puri.sm/Librem5/phoc/-/merge_requests/241
+PATCHFILES+=	4a688ffec053.patch:-p1 # https://source.puri.sm/Librem5/phoc/-/merge_requests/241
+PATCHFILES+=	8010e3d9ca00.patch:-p1 # https://source.puri.sm/Librem5/phoc/-/merge_requests/241
+PATCHFILES+=	8ec2886673d3.patch:-p1 # https://source.puri.sm/Librem5/phoc/-/merge_requests/241
 
 MAINTAINER=	jbeich at FreeBSD.org
 COMMENT=	Phone compositor
@@ -13,7 +20,8 @@ COMMENT=	Phone compositor
 LICENSE=	GPLv3+
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-BUILD_DEPENDS=	evdev-proto>0:devel/evdev-proto
+BUILD_DEPENDS=	evdev-proto>0:devel/evdev-proto \
+		wlroots>=0.14.0:x11-toolkits/wlroots
 LIB_DEPENDS=	libwayland-server.so:graphics/wayland \
 		libwlroots.so:x11-toolkits/wlroots \
 		libinput.so:x11/libinput \
@@ -36,7 +44,7 @@ GLIB_SCHEMAS=	sm.puri.phoc.gschema.xml
 post-extract:
 # Avoid confusing Meson instead of forcing -Dembed-wlroots=disabled
 	@${RMDIR} ${WRKSRC}/subprojects/wlroots
-.if defined(PATCHFILES) && ${PATCHFILES:Mb37bf15194e6*}
+.if defined(PATCHFILES) && ${PATCHFILES:M4912c5a9454b*}
 # Pretend to be a regular file for vendor patch to apply as is
 	@${ECHO_CMD} "Subproject commit 3d227f140e3c4af42d759477fc38e82a4c3dc4ef" \
 		>${WRKSRC}/subprojects/wlroots
diff --git a/x11-wm/phoc/distinfo b/x11-wm/phoc/distinfo
index 10f45b7e12a5..6429e891d338 100644
--- a/x11-wm/phoc/distinfo
+++ b/x11-wm/phoc/distinfo
@@ -1,5 +1,19 @@
 TIMESTAMP = 1623582410
 SHA256 (Librem5-phoc-8e51b02c7fb9b103d8e80fb77145dddfb4b5b3a2_GL0.tar.gz) = ac8b4723bde47f9b00f2ec73b0ae448c51670ba2294079cc93e41fab3764d24b
 SIZE (Librem5-phoc-8e51b02c7fb9b103d8e80fb77145dddfb4b5b3a2_GL0.tar.gz) = 143914
-SHA256 (b37bf15194e6.patch) = 7f35eb8eaf3750f390146c791dff20b99d478439be023b1b0d80b6f877cb628e
-SIZE (b37bf15194e6.patch) = 19628
+SHA256 (4912c5a9454b.patch) = dc833187095b92132df7cdef804e3aa5521cad360b43fc4370bd6b72e708c84f
+SIZE (4912c5a9454b.patch) = 23928
+SHA256 (00e5da6dd7a2.patch) = 123d7e9d13c178ef98fbeea55fedd1204061185fe3ea740333dc51ba6439fdbb
+SIZE (00e5da6dd7a2.patch) = 5575
+SHA256 (b278fd6b4f57.patch) = 851dcb0fa5a9cc537bdb71dc6ca30e19228580094ebbaf88c735af69a94640fa
+SIZE (b278fd6b4f57.patch) = 4110
+SHA256 (3f418c11d813.patch) = 45ca59ff8bcc4316286c814b6264d202866b561bbc431514537d9d86b51396de
+SIZE (3f418c11d813.patch) = 3930
+SHA256 (39da5a00f3b3.patch) = a479b5a3beb9e0d6a7ada708daeea93c6bddad28b98de2e490c3110d45426ca7
+SIZE (39da5a00f3b3.patch) = 2066
+SHA256 (4a688ffec053.patch) = 5c1ba160d978e2b2a6543db22b83ae9f54308684ed2475afaa1d01e2442cff32
+SIZE (4a688ffec053.patch) = 3583
+SHA256 (8010e3d9ca00.patch) = f485ed1d76c932d262752fd9d1b6bc242fa03c39b312b72cddfb8b8ef84d4ed2
+SIZE (8010e3d9ca00.patch) = 1378
+SHA256 (8ec2886673d3.patch) = 1524f637af620b62d6eecb043703ff0ab6615b1fecb2563880f179e6dae28c53
+SIZE (8ec2886673d3.patch) = 2753
diff --git a/x11-wm/phoc/files/patch-wlroots-0.14 b/x11-wm/phoc/files/patch-wlroots-0.14
new file mode 100644
index 000000000000..28b292e868cd
--- /dev/null
+++ b/x11-wm/phoc/files/patch-wlroots-0.14
@@ -0,0 +1,18 @@
+In file included from ../tests/test-xdg-shell.c:7:
+In file included from ../tests/testlib.h:6:
+In file included from ../src/server.h:14:
+../src/desktop.h:11:10: fatal error: 'wlr/types/wlr_gtk_primary_selection.h' file not found
+#include <wlr/types/wlr_gtk_primary_selection.h>
+         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+--- src/desktop.h.orig	2021-06-13 11:06:50 UTC
++++ src/desktop.h
+@@ -8,7 +8,7 @@
+ #include <wlr/types/wlr_compositor.h>
+ #include <wlr/types/wlr_foreign_toplevel_management_v1.h>
+ #include <wlr/types/wlr_gamma_control_v1.h>
+-#include <wlr/types/wlr_gtk_primary_selection.h>
++#include <wlr/types/wlr_primary_selection.h>
+ #include <wlr/types/wlr_idle_inhibit_v1.h>
+ #include <wlr/types/wlr_idle.h>
+ #include <wlr/types/wlr_input_inhibitor.h>
diff --git a/x11-wm/river/Makefile b/x11-wm/river/Makefile
index 364ceea1effd..1eccbb5b2ec4 100644
--- a/x11-wm/river/Makefile
+++ b/x11-wm/river/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	river
 PORTVERSION=	s20210622
+PORTREVISION=	1
 CATEGORIES=	x11-wm
 
 MAINTAINER=	jbeich at FreeBSD.org
@@ -9,7 +10,7 @@ LICENSE=	GPLv3+
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
 BUILD_DEPENDS=	wayland-protocols>0:graphics/wayland-protocols \
-		wlroots>=0.13.0:x11-toolkits/wlroots \
+		wlroots>=0.14.0:x11-toolkits/wlroots \
 		zig>=0.8.0:lang/zig
 LIB_DEPENDS=	libevdev.so:devel/libevdev \
 		libwayland-server.so:graphics/wayland \
diff --git a/x11-wm/river/files/patch-wlroots-0.14 b/x11-wm/river/files/patch-wlroots-0.14
new file mode 100644
index 000000000000..ea0e88d833ca
--- /dev/null
+++ b/x11-wm/river/files/patch-wlroots-0.14
@@ -0,0 +1,419 @@
+https://github.com/ifreund/river/commit/41874b47aef3
+https://github.com/swaywm/zig-wlroots/commit/b72516275fb4
+
+--- deps/zig-wlroots/src/backend.zig.orig	2021-06-06 01:45:21 UTC
++++ deps/zig-wlroots/src/backend.zig
+@@ -13,6 +13,10 @@ pub const Backend = extern struct {
+         new_output: wl.Signal(*wlr.Output),
+     },
+ 
++    // Private state
++    renderer: ?*wlr.Renderer,
++    allocator: ?*wlr.Allocator,
++
+     // backend.h
+ 
+     extern fn wlr_backend_autocreate(server: *wl.Server) ?*Backend;
+@@ -35,6 +39,9 @@ pub const Backend = extern struct {
+ 
+     extern fn wlr_backend_get_session(backend: *Backend) ?*wlr.Session;
+     pub const getSession = wlr_backend_get_session;
++
++    extern fn wlr_backend_get_drm_fd(backend: *Backend) c_int;
++    pub const getDrmFd = wlr_backend_get_drm_fd;
+ 
+     // backend/multi.h
+ 
+--- deps/zig-wlroots/src/backend/session.zig.orig	2021-06-06 01:45:21 UTC
++++ deps/zig-wlroots/src/backend/session.zig
+@@ -5,25 +5,24 @@ const wl = wayland.server.wl;
+ 
+ pub const Device = extern struct {
+     fd: c_int,
++    device_id: c_int,
+     dev: os.dev_t,
+     /// Session.devices
+     link: wl.list.Link,
+ 
+     events: extern struct {
+         change: wl.Signal(void),
++        remove: wl.Signal(void),
+     },
+ };
+ 
+ pub const Session = extern struct {
+-    const Impl = opaque {};
+-
+     pub const event = struct {
+         pub const Add = extern struct {
+             path: [*:0]const u8,
+         };
+     };
+ 
+-    impl: *const Impl,
+     active: bool,
+ 
+     vtnr: c_uint,
+@@ -33,6 +32,9 @@ pub const Session = extern struct {
+     udev: *opaque {},
+     udev_monitor: *opaque {},
+     udev_event: *wl.EventSource,
++
++    seat_handle: *opaque {},
++    libseat_event: *wl.EventSource,
+ 
+     devices: wl.list.Head(Device, "link"),
+ 
+--- deps/zig-wlroots/src/config.zig.orig	2021-06-06 01:45:21 UTC
++++ deps/zig-wlroots/src/config.zig
+@@ -2,17 +2,8 @@ const c = @cImport({
+     @cInclude("wlr/config.h");
+ });
+ 
+-pub const has_eglmesaext_h = c.WLR_HAS_EGLMESAEXT_H != 0;
+-
+-pub const has_systemd = c.WLR_HAS_SYSTEMD != 0;
+-pub const has_elogind = c.WLR_HAS_ELOGIND != 0;
+-
+-pub const has_libseat = c.WLR_HAS_LIBSEAT != 0;
+-
+ pub const has_x11_backend = c.WLR_HAS_X11_BACKEND != 0;
+ 
+-pub const has_xwayland = c.WLR_HAS_XWAYLAND != 0;
++pub const has_gles2_renderer = c.WLR_HAS_GLES2_RENDERER != 0;
+ 
+-pub const has_xcb_errors = c.WLR_HAS_XCB_ERRORS != 0;
+-
+-pub const has_xdg_foreign = c.WLR_HAS_XDG_FOREIGN != 0;
++pub const has_xwayland = c.WLR_HAS_XWAYLAND != 0;
+--- deps/zig-wlroots/src/render/renderer.zig.orig	2021-06-06 01:45:21 UTC
++++ deps/zig-wlroots/src/render/renderer.zig
+@@ -7,7 +7,10 @@ pub const Renderer = extern struct {
+     const Impl = opaque {};
+ 
+     impl: *const Impl,
++
+     rendering: bool,
++    rendering_with_buffer: bool,
++
+     events: extern struct {
+         destroy: wl.Signal(*Renderer),
+     },
+@@ -22,6 +25,9 @@ pub const Renderer = extern struct {
+     extern fn wlr_renderer_begin(renderer: *Renderer, width: u32, height: u32) void;
+     pub const begin = wlr_renderer_begin;
+ 
++    extern fn wlr_renderer_begin_with_buffer(renderer: *Renderer, buffer: *wlr.Buffer) bool;
++    pub const beginWithBuffer = wlr_renderer_begin_with_buffer;
++
+     pub extern fn wlr_renderer_end(renderer: *Renderer) void;
+     pub const end = wlr_renderer_end;
+ 
+@@ -76,13 +82,6 @@ pub const Renderer = extern struct {
+     ) bool;
+     pub const readPixels = wlr_renderer_read_pixels;
+ 
+-    extern fn wlr_renderer_blit_dmabuf(
+-        renderer: *Renderer,
+-        dst: *wlr.DmabufAttributes,
+-        src: *wlr.DmabufAttributes,
+-    ) bool;
+-    pub const blitDmabuf = wlr_renderer_blit_dmabuf;
+-
+     extern fn wlr_renderer_get_drm_fd(renderer: *Renderer) c_int;
+     pub const getDrmFd = wlr_renderer_get_drm_fd;
+ 
+@@ -159,19 +158,4 @@ pub const Renderer = extern struct {
+         matrix: *const [9]f32,
+     ) void;
+     pub const renderQuadWithMatrix = wlr_render_quad_with_matrix;
+-
+-    extern fn wlr_render_ellipse(
+-        renderer: *Renderer,
+-        box: *const wlr.Box,
+-        color: *const [4]f32,
+-        projection: *const [9]f32,
+-    ) void;
+-    pub const renderEllipse = wlr_render_ellipse;
+-
+-    extern fn wlr_render_ellipse_with_matrix(
+-        renderer: *Renderer,
+-        color: *const [4]f32,
+-        matrix: *const [9]f32,
+-    ) void;
+-    pub const renderEllipseWithMatrix = wlr_render_ellipse_with_matrix;
+ };
+--- deps/zig-wlroots/src/render/texture.zig.orig	2021-06-06 01:45:21 UTC
++++ deps/zig-wlroots/src/render/texture.zig
+@@ -19,17 +19,11 @@ pub const Texture = extern struct {
+     extern fn wlr_texture_from_dmabuf(renderer: *wlr.Renderer, attribs: *wlr.DmabufAttributes) ?*Texture;
+     pub const fromDmabuf = wlr_texture_from_dmabuf;
+ 
+-    extern fn wlr_texture_get_size(texture: *Texture, width: *c_int, height: *c_int) void;
+-    pub const getSize = wlr_texture_get_size;
+-
+     extern fn wlr_texture_is_opaque(texture: *Texture) bool;
+     pub const isOpaque = wlr_texture_is_opaque;
+ 
+     extern fn wlr_texture_write_pixels(texture: *Texture, stride: u32, width: u32, height: u32, src_x: u32, src_y: u32, dst_x: u32, dst_y: u32, data: *const c_void) bool;
+     pub const writePixels = wlr_texture_write_pixels;
+-
+-    extern fn wlr_texture_to_dmabuf(texture: *Texture, attribs: *wlr.DmabufAttributes) bool;
+-    pub const toDmabuf = wlr_texture_to_dmabuf;
+ 
+     extern fn wlr_texture_destroy(texture: *Texture) void;
+     pub const destroy = wlr_texture_destroy;
+--- deps/zig-wlroots/src/types/buffer.zig.orig	2021-06-06 01:45:21 UTC
++++ deps/zig-wlroots/src/types/buffer.zig
+@@ -1,13 +1,25 @@
+ const wlr = @import("../wlroots.zig");
+ 
++const os = @import("std").os;
+ const wl = @import("wayland").server.wl;
+-
+ const pixman = @import("pixman");
+ 
++pub const ShmAttributes = extern struct {
++    fd: c_int,
++    format: u32,
++    width: c_int,
++    height: c_int,
++    stride: c_int,
++    offset: os.off_t,
++};
++
+ pub const Buffer = extern struct {
+     pub const Impl = extern struct {
+         destroy: fn (buffer: *Buffer) callconv(.C) void,
+         get_dmabuf: fn (buffer: *Buffer, attribs: *wlr.DmabufAttributes) callconv(.C) bool,
++        get_shm: fn (buffer: *Buffer, attribs: *wlr.ShmAttributes) callconv(.C) bool,
++        begin_data_ptr_access: fn (buffer: *Buffer, data: **c_void, format: *u32, stride: *usize) callconv(.C) bool,
++        end_data_ptr_access: fn (buffer: *Buffer) callconv(.C) void,
+     };
+ 
+     impl: *const Impl,
+@@ -18,6 +30,8 @@ pub const Buffer = extern struct {
+     dropped: bool,
+     n_locks: usize,
+ 
++    accessing_data_ptr: bool,
++
+     events: extern struct {
+         destroy: wl.Signal(void),
+         release: wl.Signal(void),
+@@ -37,6 +51,9 @@ pub const Buffer = extern struct {
+ 
+     extern fn wlr_buffer_get_dmabuf(buffer: *Buffer, attribs: *wlr.DmabufAttributes) bool;
+     pub const getDmabuf = wlr_buffer_get_dmabuf;
++
++    extern fn wlr_buffer_get_shm(buffer: *Buffer, attribs: *wlr.ShmAttributes) bool;
++    pub const getShm = wlr_buffer_get_shm;
+ };
+ 
+ pub const ClientBuffer = extern struct {
+--- deps/zig-wlroots/src/types/linux_dmabuf_v1.zig.orig	2021-06-06 01:45:21 UTC
++++ deps/zig-wlroots/src/types/linux_dmabuf_v1.zig
+@@ -4,20 +4,18 @@ const wayland = @import("wayland");
+ const wl = wayland.server.wl;
+ 
+ pub const DmabufBufferV1 = extern struct {
+-    renderer: *wlr.Renderer,
+-    buffer_resource: *wl.Resource,
+-    params_resource: *wl.Resource,
++    base: wlr.Buffer,
++
++    resource: ?*wl.Resource,
+     attributes: wlr.DmabufAttributes,
+-    has_modifier: bool,
+ 
++    release: wl.Listener(void),
++
+     extern fn wlr_dmabuf_v1_resource_is_buffer(buffer_resource: *wl.Resource) bool;
+     pub const resourceIsBuffer = wlr_dmabuf_v1_resource_is_buffer;
+ 
+     extern fn wlr_dmabuf_v1_buffer_from_buffer_resource(buffer_resource: *wl.Resource) *DmabufBufferV1;
+     pub const fromBufferResource = wlr_dmabuf_v1_buffer_from_buffer_resource;
+-
+-    extern fn wlr_dmabuf_v1_buffer_from_params_resource(params_resource: *wl.Resource) *DmabufBufferV1;
+-    pub const fromParamsResource = wlr_dmabuf_v1_buffer_from_params_resource;
+ };
+ 
+ pub const LinuxDmabufV1 = extern struct {
+@@ -35,7 +33,11 @@ pub const LinuxDmabufV1 = extern struct {
+     pub fn create(server: *wl.Server, renderer: *wlr.Renderer) !*LinuxDmabufV1 {
+         return wlr_linux_dmabuf_v1_create(server, renderer) orelse error.OutOfMemory;
+     }
++};
+ 
+-    extern fn wlr_linux_dmabuf_v1_from_resource(resource: *wl.Resource) *LinuxDmabufV1;
+-    pub const fromResource = wlr_linux_dmabuf_v1_from_resource;
++pub const LinuxDmabufParamsV1 = extern struct {
++    resource: *wl.Resource,
++    linux_dmabuf: *LinuxDmabufV1,
++    attributes: wlr.DmabufAttributes,
++    has_modifier: bool,
+ };
+--- deps/zig-wlroots/src/types/matrix.zig.orig	2021-06-06 01:45:21 UTC
++++ deps/zig-wlroots/src/types/matrix.zig
+@@ -24,8 +24,5 @@ pub const rotate = wlr_matrix_rotate;
+ extern fn wlr_matrix_transform(mat: *[9]f32, transform: wl.Output.Transform) void;
+ pub const transform = wlr_matrix_transform;
+ 
+-extern fn wlr_matrix_projection(mat: *[9]f32, width: c_int, height: c_int, transform: wl.Output.Transform) void;
+-pub const projection = wlr_matrix_projection;
+-
+ extern fn wlr_matrix_project_box(mat: *[9]f32, box: *const wlr.Box, transform: wl.Output.Transform, rotation: f32, projection: *const [9]f32) void;
+ pub const projectBox = wlr_matrix_project_box;
+--- deps/zig-wlroots/src/types/output.zig.orig	2021-06-06 01:45:21 UTC
++++ deps/zig-wlroots/src/types/output.zig
+@@ -175,7 +175,12 @@ pub const Output = extern struct {
+     cursors: wl.list.Head(OutputCursor, "link"),
+ 
+     hardware_cursor: ?*OutputCursor,
++    cursor_swapchain: ?*wlr.Swapchain,
++    cursor_front_buffer: ?*wlr.Buffer,
+     software_cursor_locks: c_int,
++
++    swapchain: ?*wlr.Swapchain,
++    back_buffer: ?*wlr.Buffer,
+ 
+     server_destroy: wl.Listener(*wl.Server),
+ 
+--- deps/zig-wlroots/src/types/surface.zig.orig	2021-06-06 01:45:21 UTC
++++ deps/zig-wlroots/src/types/surface.zig
+@@ -98,8 +98,11 @@ pub const Surface = extern struct {
+         destroy: wl.Signal(*wlr.Surface),
+     },
+ 
+-    subsurfaces: wl.list.Head(Subsurface, "parent_link"),
+-    subsurface_pending_list: wl.list.Head(Subsurface, "parent_pending_link"),
++    subsurfaces_below: wl.list.Head(Subsurface, "parent_link"),
++    subsurfaces_above: wl.list.Head(Subsurface, "parent_link"),
++
++    subsurfaces_pending_below: wl.list.Head(Subsurface, "parent_pending_link"),
++    subsurfaces_pending_above: wl.list.Head(Subsurface, "parent_pending_link"),
+ 
+     current_outputs: wl.list.Head(Surface.Output, "link"),
+ 
+--- deps/zig-wlroots/src/types/xdg_shell.zig.orig	2021-06-06 01:45:21 UTC
++++ deps/zig-wlroots/src/types/xdg_shell.zig
+@@ -97,6 +97,9 @@ pub const XdgPopup = extern struct {
+         wlr_xdg_popup_destroy(popup.base);
+     }
+ 
++    extern fn wlr_xdg_popup_get_position(popup: *XdgPopup, popup_sx: *f64, popup_sy: *f64) void;
++    pub const getPosition = wlr_xdg_popup_get_position;
++
+     extern fn wlr_xdg_popup_get_anchor_point(popup: *XdgPopup, toplevel_sx: *c_int, toplevel_sy: *c_int) void;
+     pub const getAnchorPoint = wlr_xdg_popup_get_anchor_point;
+ 
+--- deps/zig-wlroots/src/wlroots.zig.orig	2021-06-06 01:45:21 UTC
++++ deps/zig-wlroots/src/wlroots.zig
+@@ -6,12 +6,16 @@ pub const Session = @import("backend/session.zig").Ses
+ pub const DmabufAttributes = @import("render/dmabuf.zig").DmabufAttributes;
+ pub const Renderer = @import("render/renderer.zig").Renderer;
+ pub const Texture = @import("render/texture.zig").Texture;
++pub const Allocator = opaque {};
++pub const Swapchain = opaque {};
+ 
++pub const ShmAttributes = @import("types/buffer.zig").ShmAttributes;
+ pub const Buffer = @import("types/buffer.zig").Buffer;
+ pub const ClientBuffer = @import("types/buffer.zig").ClientBuffer;
+ 
+ pub const DmabufBufferV1 = @import("types/linux_dmabuf_v1.zig").DmabufBufferV1;
+ pub const LinuxDmabufV1 = @import("types/linux_dmabuf_v1.zig").LinuxDmabufV1;
++pub const LinuxDmabufParamsV1 = @import("types/linux_dmabuf_v1.zig").LinuxDmabufParamsV1;
+ 
+ pub const Compositor = @import("types/compositor.zig").Compositor;
+ pub const Subcompositor = @import("types/compositor.zig").Subcompositor;
+--- deps/zig-wlroots/src/xwayland.zig.orig	2021-06-06 01:45:21 UTC
++++ deps/zig-wlroots/src/xwayland.zig
+@@ -196,6 +196,7 @@ pub const XwaylandSurface = extern struct {
+     surface_id: u32,
+ 
+     link: wl.list.Link,
++    stack_link: wl.list.Link,
+     unpaired_link: wl.list.Link,
+ 
+     surface: ?*wlr.Surface,
+--- river/DragIcon.zig.orig	2021-06-16 17:42:09 UTC
++++ river/DragIcon.zig
+@@ -47,10 +47,7 @@ pub fn init(drag_icon: *DragIcon, seat: *Seat, wlr_dra
+     wlr_drag_icon.events.unmap.add(&drag_icon.unmap);
+     wlr_drag_icon.surface.events.new_subsurface.add(&drag_icon.new_subsurface);
+ 
+-    // There may already be subsurfaces present on this surface that we
+-    // aren't aware of and won't receive a new_subsurface event for.
+-    var it = wlr_drag_icon.surface.subsurfaces.iterator(.forward);
+-    while (it.next()) |s| Subsurface.create(s, .{ .drag_icon = drag_icon });
++    Subsurface.handleExisting(wlr_drag_icon.surface, .{ .drag_icon = drag_icon });
+ }
+ 
+ fn handleDestroy(listener: *wl.Listener(*wlr.Drag.Icon), wlr_drag_icon: *wlr.Drag.Icon) void {
+--- river/LayerSurface.zig.orig	2021-06-16 17:42:09 UTC
++++ river/LayerSurface.zig
+@@ -70,10 +70,7 @@ pub fn init(self: *Self, output: *Output, wlr_layer_su
+     wlr_layer_surface.events.new_popup.add(&self.new_popup);
+     wlr_layer_surface.surface.events.new_subsurface.add(&self.new_subsurface);
+ 
+-    // There may already be subsurfaces present on this surface that we
+-    // aren't aware of and won't receive a new_subsurface event for.
+-    var it = wlr_layer_surface.surface.subsurfaces.iterator(.forward);
+-    while (it.next()) |s| Subsurface.create(s, .{ .layer_surface = self });
++    Subsurface.handleExisting(wlr_layer_surface.surface, .{ .layer_surface = self });
+ }
+ 
+ fn handleDestroy(listener: *wl.Listener(*wlr.LayerSurfaceV1), wlr_layer_surface: *wlr.LayerSurfaceV1) void {
+--- river/Subsurface.zig.orig	2021-06-16 17:42:09 UTC
++++ river/Subsurface.zig
+@@ -71,10 +71,18 @@ pub fn create(wlr_subsurface: *wlr.Subsurface, parent:
+     wlr_subsurface.events.unmap.add(&subsurface.unmap);
+     wlr_subsurface.surface.events.new_subsurface.add(&subsurface.new_subsurface);
+ 
+-    // There may already be subsurfaces present on this surface that we
+-    // aren't aware of and won't receive a new_subsurface event for.
+-    var it = wlr_subsurface.surface.subsurfaces.iterator(.forward);
+-    while (it.next()) |s| Subsurface.create(s, parent);
++    Subsurface.handleExisting(wlr_subsurface.surface, parent);
++}
++
++/// Create Subsurface structs to track subsurfaces already present on the
++/// given surface when river becomes aware of the surface as we won't
++/// recieve a new_subsurface event for them.
++pub fn handleExisting(surface: *wlr.Surface, parent: Parent) void {
++    var below_it = surface.subsurfaces_below.iterator(.forward);
++    while (below_it.next()) |s| Subsurface.create(s, parent);
++
++    var above_it = surface.subsurfaces_above.iterator(.forward);
++    while (above_it.next()) |s| Subsurface.create(s, parent);
+ }
+ 
+ fn handleDestroy(listener: *wl.Listener(*wlr.Subsurface), wlr_subsurface: *wlr.Subsurface) void {
+--- river/XdgPopup.zig.orig	2021-06-16 17:42:09 UTC
++++ river/XdgPopup.zig
+@@ -77,10 +77,7 @@ pub fn create(wlr_xdg_popup: *wlr.XdgPopup, parent: Pa
+     wlr_xdg_popup.base.events.new_popup.add(&self.new_popup);
+     wlr_xdg_popup.base.surface.events.new_subsurface.add(&self.new_subsurface);
+ 
+-    // There may already be subsurfaces present on this surface that we
+-    // aren't aware of and won't receive a new_subsurface event for.
+-    var it = wlr_xdg_popup.base.surface.subsurfaces.iterator(.forward);
+-    while (it.next()) |s| Subsurface.create(s, parent);
++    Subsurface.handleExisting(wlr_xdg_popup.base.surface, parent);
+ }
+ 
+ fn handleDestroy(listener: *wl.Listener(*wlr.XdgSurface), wlr_xdg_surface: *wlr.XdgSurface) void {
+--- river/XdgToplevel.zig.orig	2021-06-16 17:42:09 UTC
++++ river/XdgToplevel.zig
+@@ -68,10 +68,7 @@ pub fn init(self: *Self, view: *View, xdg_surface: *wl
+     xdg_surface.events.new_popup.add(&self.new_popup);
+     xdg_surface.surface.events.new_subsurface.add(&self.new_subsurface);
+ 
+-    // There may already be subsurfaces present on this surface that we
+-    // aren't aware of and won't receive a new_subsurface event for.
+-    var it = xdg_surface.surface.subsurfaces.iterator(.forward);
+-    while (it.next()) |s| Subsurface.create(s, .{ .view = view });
++    Subsurface.handleExisting(xdg_surface.surface, .{ .view = view });
+ }
+ 
+ pub fn deinit(self: *Self) void {
diff --git a/x11-wm/sway/Makefile b/x11-wm/sway/Makefile
index ec9d91455048..2981cb96eda3 100644
--- a/x11-wm/sway/Makefile
+++ b/x11-wm/sway/Makefile
@@ -1,11 +1,16 @@
 PORTNAME=	sway
 DISTVERSION=	1.6
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	x11-wm
 
 PATCH_SITES=	https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
 PATCHFILES+=	cd9d1038a822.patch:-p1 # https://github.com/swaywm/sway/pull/5090
 PATCHFILES+=	f98ca3ab7ca1.patch:-p1 # https://github.com/swaywm/sway/pull/5090
+PATCHFILES+=	78fc9d0d2d4f.patch:-p1 # https://github.com/swaywm/sway/pull/6176
+PATCHFILES+=	7a68a28475bf.patch:-p1 # wlroots 0.14
+PATCHFILES+=	1a72049c04b8.patch:-p1 # wlroots 0.14
+PATCHFILES+=	12e223e7973f.patch:-p1 # wlroots 0.14
+PATCHFILES+=	3162766eef14.patch:-p1 # wlroots 0.14
 
 MAINTAINER=	jbeich at FreeBSD.org
 COMMENT=	i3-compatible Wayland compositor
@@ -15,7 +20,7 @@ LICENSE_FILE=	${WRKSRC}/LICENSE
 
 BUILD_DEPENDS=	evdev-proto>0:devel/evdev-proto \
 		wayland-protocols>=1.14:graphics/wayland-protocols \
-		wlroots>=0.13.0<0.14.0:x11-toolkits/wlroots
+		wlroots>=0.14.0<0.15.0:x11-toolkits/wlroots
 LIB_DEPENDS=	libjson-c.so:devel/json-c \
 		libevdev.so:devel/libevdev \
 		libudev.so:devel/libudev-devd \
diff --git a/x11-wm/sway/distinfo b/x11-wm/sway/distinfo
index 473442f89aa6..e99c61f16da6 100644
--- a/x11-wm/sway/distinfo
+++ b/x11-wm/sway/distinfo
@@ -5,3 +5,13 @@ SHA256 (cd9d1038a822.patch) = 266891cbe27a67f81740879dbe39819e3bf0f17b681bdc9308
 SIZE (cd9d1038a822.patch) = 8968
 SHA256 (f98ca3ab7ca1.patch) = b3a427b6edbf1c89bbf5fdeb5e3fc4c6708478e6d2031fcead87d29bf5c409fa
 SIZE (f98ca3ab7ca1.patch) = 2673
+SHA256 (78fc9d0d2d4f.patch) = 3a757b879a1fd556863a2befe29ef10c81398d87e5e6b54b72815786d3e23312
+SIZE (78fc9d0d2d4f.patch) = 928
*** 61 LINES SKIPPED ***


More information about the dev-commits-ports-all mailing list