[Update] wayland/scenefx 0.5

Volker Schlecht <[email protected]>
Newsgroups gmane.os.openbsd.ports
Message-ID <[email protected]>
Here's an update to wayland/scenefx that is now based on wlroots-0.20

I'm unsure about the new patches. While it builds and works, I'm wondering
if there is a nicer/better/more elegant way to handle this, but I'm a bit
out of my depth here.

I'm also attaching an update to wayland/mango which would otherwise break
with the scenefx update.

Tests and feedback welcome!
mango-0.15.diff (text/x-patch, 3.1 KB)
Index: Makefile
===================================================================
RCS file: /cvs/ports/wayland/mango/Makefile,v
retrieving revision 1.9
diff -u -p -r1.9 Makefile
--- Makefile	1 Jul 2026 17:47:16 -0000	1.9
+++ Makefile	9 Jul 2026 21:33:28 -0000
@@ -1,6 +1,6 @@
 COMMENT =		lightweight, high-performance Wayland compositor
 
-DIST_TUPLE=		github mangowm mango 0.14.4 .
+DIST_TUPLE=		github mangowm mango 0.15.0 .
 
 CATEGORIES =		wayland
 
@@ -11,12 +11,15 @@ MAINTAINER =		Volker Schlecht <volker@op
 # GPLv3
 PERMIT_PACKAGE =	Yes
 
-WANTLIB += c cjson input m pcre2-8 pixman-1 scenefx-0.4 wayland-client
-WANTLIB += wayland-server xcb-icccm xkbcommon
+WANTLIB += c cairo cjson glib-2.0 gobject-2.0 input m pango-1.0
+WANTLIB += pangocairo-1.0 pcre2-8 pixman-1 scenefx-0.5 wayland-server
+WANTLIB += xcb-icccm xkbcommon
 
 COMPILER =		base-clang ports-gcc
 
 MODULES =		devel/meson wayland/wlroots
+
+MODWLROOTS_VERSION =	0.20
 
 BUILD_DEPENDS =		wayland/wayland-protocols
 
Index: distinfo
===================================================================
RCS file: /cvs/ports/wayland/mango/distinfo,v
retrieving revision 1.8
diff -u -p -r1.8 distinfo
--- distinfo	1 Jul 2026 17:47:16 -0000	1.8
+++ distinfo	9 Jul 2026 21:33:28 -0000
@@ -1,2 +1,2 @@
-SHA256 (mangowm-mango-0.14.4.tar.gz) = 435zL/Ow2zCfxhbOxe2Wmely8pafgsG7w8WimBaEAfg=
-SIZE (mangowm-mango-0.14.4.tar.gz) = 506823
+SHA256 (mangowm-mango-0.15.0.tar.gz) = 80BC9ehL/EUQhhvX4YeAC7TUtPTq5M0wi3eW1ZqDPGc=
+SIZE (mangowm-mango-0.15.0.tar.gz) = 496520
Index: patches/patch-src_dispatch_bind_define_h
===================================================================
RCS file: /cvs/ports/wayland/mango/patches/patch-src_dispatch_bind_define_h,v
retrieving revision 1.6
diff -u -p -r1.6 patch-src_dispatch_bind_define_h
--- patches/patch-src_dispatch_bind_define_h	1 Jul 2026 17:47:18 -0000	1.6
+++ patches/patch-src_dispatch_bind_define_h	9 Jul 2026 21:33:28 -0000
@@ -9,7 +9,7 @@ Index: src/dispatch/bind_define.h
  int32_t bind_to_view(const Arg *arg) {
  	if (!selmon)
  		return 0;
-@@ -961,6 +965,7 @@ int32_t spawn(const Arg *arg) {
+@@ -1078,6 +1082,7 @@ int32_t spawn(const Arg *arg) {
  		dup2(STDERR_FILENO, STDOUT_FILENO);
  		setsid();
  
@@ -17,7 +17,7 @@ Index: src/dispatch/bind_define.h
  		wordexp_t p;
  		if (wordexp(arg->v, &p, 0) != 0) {
  			wlr_log(WLR_DEBUG, "mango: wordexp failed for '%s'\n",
-@@ -973,6 +978,35 @@ int32_t spawn(const Arg *arg) {
+@@ -1090,6 +1095,35 @@ int32_t spawn(const Arg *arg) {
  		wlr_log(WLR_DEBUG, "mango: execvp '%s' failed: %s\n", p.we_wordv[0],
  				strerror(errno));
  		wordfree(&p);
Index: patches/patch-src_mango_c
===================================================================
RCS file: /cvs/ports/wayland/mango/patches/patch-src_mango_c,v
retrieving revision 1.2
diff -u -p -r1.2 patch-src_mango_c
--- patches/patch-src_mango_c	29 May 2026 18:39:39 -0000	1.2
+++ patches/patch-src_mango_c	9 Jul 2026 21:33:28 -0000
@@ -1,7 +1,7 @@
 Index: src/mango.c
 --- src/mango.c.orig
 +++ src/mango.c
-@@ -88,7 +88,11 @@
+@@ -91,7 +91,11 @@
  #include <wlr/types/wlr_xdg_shell.h>
  #include <wlr/util/log.h>
  #include <wlr/util/region.h>
scenefx-0.5.diff (text/x-patch, 7.6 KB)
Index: Makefile
===================================================================
RCS file: /cvs/ports/wayland/scenefx/Makefile,v
retrieving revision 1.2
diff -u -p -r1.2 Makefile
--- Makefile	13 Jun 2026 13:41:30 -0000	1.2
+++ Makefile	9 Jul 2026 21:32:47 -0000
@@ -1,29 +1,30 @@
 COMMENT =		drop-in replacement for the wlroots scene API
 
-V =			0.4.1
-SCENEFX_LIBV =		0.4
-REVISION =		0
+V =			0.5
+SCENEFX_LIBV =		0.5
 
 DIST_TUPLE=		github wlrfx scenefx ${V} .
 
 CATEGORIES =		wayland
 
-SHARED_LIBS +=		scenefx-${SCENEFX_LIBV} 0.0 # 0.4
+SHARED_LIBS +=		scenefx-${SCENEFX_LIBV} 0.0 # 0.5
 
 # MIT
 PERMIT_PACKAGE =	Yes
 
+WANTLIB += EGL GLESv2 drm gbm m pixman-1 wayland-server
+
 COMPILER =		base-clang ports-gcc
 
 MODULES =		devel/meson wayland/wlroots
 
+MODWLROOTS_VERSION =	0.20
+
 BUILD_DEPENDS =		wayland/wayland-protocols
 
 LIB_DEPENDS =		wayland/wayland
 
 SUBST_VARS +=		SCENEFX_LIBV
-
-WANTLIB += EGL GLESv2 drm gbm m pixman-1 wayland-server
 
 .include <bsd.port.mk>
 
Index: distinfo
===================================================================
RCS file: /cvs/ports/wayland/scenefx/distinfo,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 distinfo
--- distinfo	6 Apr 2026 19:17:09 -0000	1.1.1.1
+++ distinfo	9 Jul 2026 21:32:47 -0000
@@ -1,2 +1,2 @@
-SHA256 (wlrfx-scenefx-0.4.1.tar.gz) = +iP2/1CRaNSl6wxafvO4zz054/uhgyDCglbmyRyF2f8=
-SIZE (wlrfx-scenefx-0.4.1.tar.gz) = 92158
+SHA256 (wlrfx-scenefx-0.5.tar.gz) = D6jsyg4xD4E+/QUmJMXtfZFT1qD96tXMlX00wH+ahsY=
+SIZE (wlrfx-scenefx-0.5.tar.gz) = 109708
Index: patches/patch-include_scenefx_types_fx_clipped_region_h
===================================================================
RCS file: patches/patch-include_scenefx_types_fx_clipped_region_h
diff -N patches/patch-include_scenefx_types_fx_clipped_region_h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-include_scenefx_types_fx_clipped_region_h	9 Jul 2026 21:32:47 -0000
@@ -0,0 +1,58 @@
+Index: include/scenefx/types/fx/clipped_region.h
+--- include/scenefx/types/fx/clipped_region.h.orig
++++ include/scenefx/types/fx/clipped_region.h
+@@ -15,7 +15,7 @@ struct fx_corner_radii {
+ 
+ #define CORNER_RADIUS_MAX (UINT16_MAX)
+ 
+-static __always_inline uint16_t corner_radius_clamp(int radius) {
++static inline uint16_t corner_radius_clamp(int radius) {
+ 	if (radius <= 0) {
+ 		return 0;
+ 	}
+@@ -27,7 +27,7 @@ static __always_inline uint16_t corner_radius_clamp(in
+ 	return radius;
+ }
+ 
+-static __always_inline struct fx_corner_radii corner_radii_new(int top_left, int top_right, int bottom_right, int bottom_left) {
++static inline struct fx_corner_radii corner_radii_new(int top_left, int top_right, int bottom_right, int bottom_left) {
+ 	return (struct fx_corner_radii) {
+ 		corner_radius_clamp(top_left),
+ 		corner_radius_clamp(top_right),
+@@ -36,15 +36,15 @@ static __always_inline struct fx_corner_radii corner_r
+ 	};
+ }
+ 
+-static __always_inline struct fx_corner_radii corner_radii_all(int radius) {
++static inline struct fx_corner_radii corner_radii_all(int radius) {
+ 	return corner_radii_new(radius, radius, radius, radius);
+ }
+ 
+-static __always_inline struct fx_corner_radii corner_radii_none(void) {
++static inline struct fx_corner_radii corner_radii_none(void) {
+ 	return corner_radii_all(0);
+ }
+ 
+-#define corner_radii_func(name, tl, tr, br, bl) static __always_inline struct fx_corner_radii corner_radii_##name(int radius) { return corner_radii_new(tl, tr, br, bl); }
++#define corner_radii_func(name, tl, tr, br, bl) static inline struct fx_corner_radii corner_radii_##name(int radius) { return corner_radii_new(tl, tr, br, bl); }
+ 
+ corner_radii_func(top, radius, radius, 0, 0);
+ corner_radii_func(bottom, 0, 0, radius, radius);
+@@ -63,7 +63,7 @@ bool fx_corner_radii_eq(struct fx_corner_radii lhs, st
+  *
+  * This can be compared to an `AND` operation
+  */
+-static __always_inline struct fx_corner_radii fx_corner_radii_filter(struct fx_corner_radii input, struct fx_corner_radii filter) {
++static inline struct fx_corner_radii fx_corner_radii_filter(struct fx_corner_radii input, struct fx_corner_radii filter) {
+ 	return corner_radii_new(
+ 		input.top_left && filter.top_left ? input.top_left : 0,
+ 		input.top_right && filter.top_right ? input.top_right : 0,
+@@ -77,7 +77,7 @@ static __always_inline struct fx_corner_radii fx_corne
+  *
+  * This can be compared to an `OR` operation
+  */
+-static __always_inline struct fx_corner_radii fx_corner_radii_pick(struct fx_corner_radii lhs, struct fx_corner_radii rhs) {
++static inline struct fx_corner_radii fx_corner_radii_pick(struct fx_corner_radii lhs, struct fx_corner_radii rhs) {
+ 	return corner_radii_new(
+ 		lhs.top_left ? lhs.top_left : rhs.top_left,
+ 		lhs.top_right ? lhs.top_right : rhs.top_right,
Index: patches/patch-include_types_fx_clipped_region_h
===================================================================
RCS file: patches/patch-include_types_fx_clipped_region_h
diff -N patches/patch-include_types_fx_clipped_region_h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-include_types_fx_clipped_region_h	9 Jul 2026 21:32:47 -0000
@@ -0,0 +1,12 @@
+Index: include/types/fx/clipped_region.h
+--- include/types/fx/clipped_region.h.orig
++++ include/types/fx/clipped_region.h
+@@ -20,7 +20,7 @@ struct clipped_fregion {
+     struct fx_corner_fradii corners;
+ };
+ 
+-static __always_inline bool clipped_fregion_is_valid(const struct clipped_fregion *fregion) {
++static inline bool clipped_fregion_is_valid(const struct clipped_fregion *fregion) {
+ 	return !fx_corner_fradii_is_empty(&fregion->corners) && !wlr_box_empty(&fregion->area);
+ };
+ 
Index: patches/patch-meson_build
===================================================================
RCS file: /cvs/ports/wayland/scenefx/patches/patch-meson_build,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-meson_build
--- patches/patch-meson_build	6 Apr 2026 19:17:09 -0000	1.1.1.1
+++ patches/patch-meson_build	9 Jul 2026 21:32:47 -0000
@@ -3,7 +3,7 @@ No librt on OpenBSD
 Index: meson.build
 --- meson.build.orig
 +++ meson.build
-@@ -110,7 +110,6 @@ pixman = dependency('pixman-1',
+@@ -128,7 +128,6 @@ pixman = dependency('pixman-1',
  	default_options: ['werror=false'],
  )
  math = cc.find_library('m')
@@ -11,11 +11,11 @@ Index: meson.build
  
  scenefx_files = []
  scenefx_deps = [
-@@ -120,7 +119,6 @@ scenefx_deps = [
+@@ -138,7 +137,6 @@ scenefx_deps = [
  	xkbcommon,
  	pixman,
  	math,
 -	rt,
  ]
  
- subdir('protocol')
+ # Tracy
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/wayland/scenefx/pkg/PLIST,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 PLIST
--- pkg/PLIST	6 Apr 2026 19:17:09 -0000	1.1.1.1
+++ pkg/PLIST	9 Jul 2026 21:32:47 -0000
@@ -2,14 +2,14 @@ include/scenefx-${SCENEFX_LIBV}/
 include/scenefx-${SCENEFX_LIBV}/scenefx/
 include/scenefx-${SCENEFX_LIBV}/scenefx/render/
 include/scenefx-${SCENEFX_LIBV}/scenefx/render/fx_renderer/
-include/scenefx-${SCENEFX_LIBV}/scenefx/render/fx_renderer/fx_effect_framebuffers.h
+include/scenefx-${SCENEFX_LIBV}/scenefx/render/fx_renderer/fx_offscreen_buffers.h
 include/scenefx-${SCENEFX_LIBV}/scenefx/render/fx_renderer/fx_renderer.h
 include/scenefx-${SCENEFX_LIBV}/scenefx/render/pass.h
 include/scenefx-${SCENEFX_LIBV}/scenefx/types/
 include/scenefx-${SCENEFX_LIBV}/scenefx/types/fx/
 include/scenefx-${SCENEFX_LIBV}/scenefx/types/fx/blur_data.h
 include/scenefx-${SCENEFX_LIBV}/scenefx/types/fx/clipped_region.h
-include/scenefx-${SCENEFX_LIBV}/scenefx/types/fx/corner_location.h
+include/scenefx-${SCENEFX_LIBV}/scenefx/types/linked_node.h
 include/scenefx-${SCENEFX_LIBV}/scenefx/types/wlr_scene.h
 @lib lib/libscenefx-${SCENEFX_LIBV}.so.${LIBscenefx-${SCENEFX_LIBV}_VERSION}
 lib/pkgconfig/scenefx-${SCENEFX_LIBV}.pc
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.