commit: 4def0b8cb84b71b5f7627f7dc87e08e7cc6bd4ff Author: Nicolas PARLANT <nicolas.parlant <AT> parhuet <DOT> fr> AuthorDate: Sun May 18 19:06:07 2025 +0000 Commit: Nicolas PARLANT <ppn <AT> parhuet <DOT> fr> CommitDate: Sun May 18 19:09:54 2025 +0000 URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=4def0b8c
media-gfx/swayimg: add 4.0 Signed-off-by: Nicolas PARLANT <nicolas.parlant <AT> parhuet.fr> media-gfx/swayimg/Manifest | 1 + .../swayimg/files/swayimg-4.0-fix_memlk.patch | 52 ++++++++++++++ media-gfx/swayimg/metadata.xml | 1 + media-gfx/swayimg/swayimg-4.0.ebuild | 80 ++++++++++++++++++++++ 4 files changed, 134 insertions(+) diff --git a/media-gfx/swayimg/Manifest b/media-gfx/swayimg/Manifest index 9cc4c573e..ead86d1cd 100644 --- a/media-gfx/swayimg/Manifest +++ b/media-gfx/swayimg/Manifest @@ -1,2 +1,3 @@ DIST swayimg-3.8.tar.gz 754719 BLAKE2B c41b22912499db8bbc0de5b778280d84826b4cfc974d036a8ba7c6bc2a1b54ed87667c7ae11eb4c9ddccc56f753a0ce1256d0c4516e2a3cd72f28a40551759a3 SHA512 3075eb4f48d11708ff0610a7551c38a0b09d65210c56b267410e688f595711ee5357d27a48ce4a8c3e0fe9a4204881f30363579e5686f0979ce59d0277185303 DIST swayimg-3.9.tar.gz 756909 BLAKE2B 09dccc87a07ef154db792a441d5e8265b0d04432f70c2510eb64df8d0f971aa2b012915e2520c52336eb111ef60d333b7fdf24b8b578ea54e93de4ba27e74c2d SHA512 66d97c6695eb030d1013f28bc4fdbb210d26fe602f178fe32e20084f84d8b8e1934012d93e6239234dadbcb2715e61762eadb2350fb6725788b8e70acbea0b11 +DIST swayimg-4.0.tar.gz 768532 BLAKE2B c7121452f02af4b599679f2040233142978184cb1919d1af5d90540f0e1331542ec56c7d96e68f33aacb117083ae20ae3f2aa81833846c37c7868f9551f2d63c SHA512 e13eadab3188b25266caefabe493da95fecc41b7e78c29e836e895d3d68f71405296e330963a44e88a8adbc9ba6c881f952d30033d63fffd14ccf909ec742613 diff --git a/media-gfx/swayimg/files/swayimg-4.0-fix_memlk.patch b/media-gfx/swayimg/files/swayimg-4.0-fix_memlk.patch new file mode 100644 index 000000000..9e3e87719 --- /dev/null +++ b/media-gfx/swayimg/files/swayimg-4.0-fix_memlk.patch @@ -0,0 +1,52 @@ +From eff7ca90fb6db8ca214384f8660709fdaff405f6 Mon Sep 17 00:00:00 2001 +From: Artem Senichev <[email protected]> +Date: Sat, 17 May 2025 11:47:36 +0300 +Subject: [PATCH] Fix potential memory leak + +Signed-off-by: Artem Senichev <[email protected]> +--- + src/image.c | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +diff --git a/src/image.c b/src/image.c +index cbb28e6..fbdef8d 100644 +--- a/src/image.c ++++ b/src/image.c +@@ -36,14 +36,7 @@ bool image_clear(struct image* img, size_t mask) + bool all_free; + + if ((mask & IMGDATA_FRAMES) && image_has_frames(img)) { +- struct imgdec* decoder = &img->data->decoder; + struct array* frames = img->data->frames; +- +- if (decoder->data) { +- decoder->free(img->data); +- } +- memset(decoder, 0, sizeof(*decoder)); +- + for (size_t i = 0; i < frames->size; ++i) { + struct imgframe* frame = arr_nth(frames, i); + pixmap_free(&frame->pm); +@@ -52,12 +45,21 @@ bool image_clear(struct image* img, size_t mask) + img->data->frames = NULL; + } + ++ // automatically free decoder if there are no frames ++ if (!image_has_frames(img)) { ++ struct imgdec* decoder = &img->data->decoder; ++ if (decoder->data) { ++ decoder->free(img->data); ++ } ++ memset(decoder, 0, sizeof(*decoder)); ++ } ++ + if ((mask & IMGDATA_THUMB) && image_has_thumb(img)) { + pixmap_free(&img->data->thumbnail); + img->data->thumbnail.data = NULL; + } + +- // automatically free if there are no frames or thumbnail ++ // automatically free info if there are no frames or thumbnail + if (!image_has_frames(img) && !image_has_thumb(img)) { + mask |= IMGDATA_INFO; + } diff --git a/media-gfx/swayimg/metadata.xml b/media-gfx/swayimg/metadata.xml index 357bce823..35ac454bf 100644 --- a/media-gfx/swayimg/metadata.xml +++ b/media-gfx/swayimg/metadata.xml @@ -11,5 +11,6 @@ <flag name="exr">Enable support for EXR image format</flag> <flag name="jpegxl">Enable support for JPEG XL image format</flag> <flag name="sixel">Enable support for Sixel image format</flag> + <flag name="sway">Enable Sway WM integration</flag> </use> </pkgmetadata> diff --git a/media-gfx/swayimg/swayimg-4.0.ebuild b/media-gfx/swayimg/swayimg-4.0.ebuild new file mode 100644 index 000000000..2dc4881a5 --- /dev/null +++ b/media-gfx/swayimg/swayimg-4.0.ebuild @@ -0,0 +1,80 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit meson xdg + +DESCRIPTION="A lightweight image viewer for Wayland display servers" +HOMEPAGE="https://github.com/artemsen/swayimg" +SRC_URI="https://github.com/artemsen/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64" +IUSE="avif bash-completion exif exr gif heif jpeg jpegxl png raw sixel svg +sway test tiff webp X" +RESTRICT="!test? ( test )" + +RDEPEND=" + dev-libs/wayland + media-libs/fontconfig + media-libs/freetype + x11-libs/libxkbcommon + avif? ( media-libs/libavif:= ) + bash-completion? ( app-shells/bash-completion ) + exif? ( media-libs/libexif ) + exr? ( media-libs/openexr:= ) + gif? ( media-libs/giflib:= ) + heif? ( media-libs/libheif:= ) + jpeg? ( media-libs/libjpeg-turbo:= ) + jpegxl? ( media-libs/libjxl:= ) + png? ( media-libs/libpng:= ) + raw? ( media-libs/libraw:= ) + sixel? ( media-libs/libsixel ) + svg? ( + dev-libs/glib:2 + gnome-base/librsvg:2 + x11-libs/cairo[X=] + ) + sway? ( dev-libs/json-c:= ) + tiff? ( media-libs/tiff:= ) + webp? ( media-libs/libwebp:= )" +DEPEND="${RDEPEND} + dev-libs/wayland-protocols + svg? ( X? ( x11-base/xorg-proto ) ) +" +BDEPEND=" + dev-util/wayland-scanner + test? ( dev-cpp/gtest ) +" + +PATCHES=( + # From upstream, fix potential memory leak + "${FILESDIR}"/${P}-fix_memlk.patch +) + +src_configure() { + local emesonargs=( + $(meson_feature avif) + $(meson_feature exif) + $(meson_feature exr) + $(meson_feature gif) + $(meson_feature heif) + $(meson_feature jpeg) + $(meson_feature jpegxl jxl) + $(meson_feature png) + $(meson_feature raw) + $(meson_feature sixel) + $(meson_feature svg) + $(meson_feature sway) + $(meson_feature test tests) + $(meson_feature tiff) + $(meson_feature webp) + $(meson_feature bash-completion bash) + -Dversion=${PV} + -Ddesktop=true + -Dman=true + -Dzsh=enabled + ) + meson_src_configure +}
