From: Volker Schlecht Subject: [Update] wayland/scenefx 0.5 To: ports Date: Thu, 9 Jul 2026 23:39:23 +0200 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! 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 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 #include #include 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 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