commit: 0811b74b40165befd943025472d2b2797b6e5f1b Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Mon Jun 16 19:33:02 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Mon Jun 16 19:34:24 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0811b74b
sys-apps/xdg-desktop-portal-gnome: backport Valgrind fix to 46.2-r1 Signed-off-by: Sam James <sam <AT> gentoo.org> .../xdg-desktop-portal-gnome-46.2-valgrind.patch | 65 ++++++++++++++++++++++ .../xdg-desktop-portal-gnome-46.2-r1.ebuild | 49 ++++++++++++++++ 2 files changed, 114 insertions(+) diff --git a/sys-apps/xdg-desktop-portal-gnome/files/xdg-desktop-portal-gnome-46.2-valgrind.patch b/sys-apps/xdg-desktop-portal-gnome/files/xdg-desktop-portal-gnome-46.2-valgrind.patch new file mode 100644 index 000000000000..2d48f87de6fd --- /dev/null +++ b/sys-apps/xdg-desktop-portal-gnome/files/xdg-desktop-portal-gnome-46.2-valgrind.patch @@ -0,0 +1,65 @@ +https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome/-/commit/7c440350b17a6007d2054db741340993b6e9aac7 + +From 7c440350b17a6007d2054db741340993b6e9aac7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20=C3=85dahl?= <[email protected]> +Date: Mon, 27 May 2024 10:56:00 +0200 +Subject: [PATCH] screencast: Fix valgrind warning + +Fixes the following warning when cancelling a screen cast dialog. + +==343654== Invalid read of size 8 +==343654== at 0x48486A: screen_cast_dialog_handle_free (screencast.c:103) +==343654== by 0x4848F9: screen_cast_dialog_handle_close (screencast.c:113) +==343654== by 0x48640D: screen_cast_session_close (screencast.c:916) +==343654== by 0x489BE6: session_close (session.c:87) +==343654== by 0x489C7B: handle_close (session.c:117) +==343654== by 0x410696: _g_dbus_codegen_marshal_BOOLEAN__OBJECT (xdg-desktop-portal-dbus.c:444) +==343654== by 0x436254: xdp_impl_session_method_marshal_close (xdg-desktop-portal-dbus.c:28756) +==343654== by 0x4CF9567: g_closure_invoke (gclosure.c:833) +==343654== by 0x4D0C5FB: signal_emit_unlocked_R.isra.0 (gsignal.c:3928) +==343654== by 0x4D1311A: signal_emitv_unlocked (gsignal.c:3212) +==343654== by 0x4D1311A: g_signal_emitv (gsignal.c:3112) +==343654== by 0x43772F: _xdp_impl_session_skeleton_handle_method_call (xdg-desktop-portal-dbus.c:29485) +==343654== by 0x4C24D21: g_dbus_interface_method_dispatch_helper (gdbusinterfaceskeleton.c:618) +==343654== Address 0x1c5acb10 is 16 bytes inside a block of size 40 free'd +==343654== at 0x4845B2C: free (vg_replace_malloc.c:985) +==343654== by 0x4848DE: screen_cast_dialog_handle_free (screencast.c:107) +==343654== by 0x4848F9: screen_cast_dialog_handle_close (screencast.c:113) +==343654== by 0x484C9C: on_request_handle_close_cb (screencast.c:216) +==343654== by 0x410696: _g_dbus_codegen_marshal_BOOLEAN__OBJECT (xdg-desktop-portal-dbus.c:444) +==343654== by 0x42EE5A: xdp_impl_request_method_marshal_close (xdg-desktop-portal-dbus.c:24008) +==343654== by 0x4CF9567: g_closure_invoke (gclosure.c:833) +==343654== by 0x4D0BFC8: signal_emit_unlocked_R.isra.0 (gsignal.c:3888) +==343654== by 0x4D1311A: signal_emitv_unlocked (gsignal.c:3212) +==343654== by 0x4D1311A: g_signal_emitv (gsignal.c:3112) +==343654== by 0x42FE83: _xdp_impl_request_skeleton_handle_method_call (xdg-desktop-portal-dbus.c:24590) +==343654== by 0x4C24D21: g_dbus_interface_method_dispatch_helper (gdbusinterfaceskeleton.c:618) +==343654== by 0x4C0A837: call_in_idle_cb (gdbusconnection.c:5013) + + +(cherry picked from commit 9a4dffaf775f6bdb372768f568167fa2c1187257) +--- + src/screencast.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/screencast.c b/src/screencast.c +index 33d1af3..4bc993f 100644 +--- a/src/screencast.c ++++ b/src/screencast.c +@@ -211,9 +211,12 @@ on_request_handle_close_cb (XdpImplRequest *object, + GDBusMethodInvocation *invocation, + ScreenCastDialogHandle *dialog_handle) + { +- cancel_start_session (dialog_handle->session, 2); ++ ScreenCastSession *screen_cast_session = dialog_handle->session; + +- screen_cast_dialog_handle_close (dialog_handle); ++ cancel_start_session (screen_cast_session, 2); ++ ++ g_clear_pointer (&screen_cast_session->dialog_handle, ++ screen_cast_dialog_handle_close); + + return FALSE; + } +-- +GitLab diff --git a/sys-apps/xdg-desktop-portal-gnome/xdg-desktop-portal-gnome-46.2-r1.ebuild b/sys-apps/xdg-desktop-portal-gnome/xdg-desktop-portal-gnome-46.2-r1.ebuild new file mode 100644 index 000000000000..d15b5bfd140f --- /dev/null +++ b/sys-apps/xdg-desktop-portal-gnome/xdg-desktop-portal-gnome-46.2-r1.ebuild @@ -0,0 +1,49 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit gnome.org meson systemd xdg + +DESCRIPTION="Backend implementation for xdg-desktop-portal using GNOME" +HOMEPAGE="https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +IUSE="wayland X" + +# Newer-than-strictly-required xdg-desktop-portal dep for hang/slowness fixes +# https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome/-/issues/74 +DEPEND=" + dev-libs/glib:2 + gnome-base/gnome-desktop:4= + >=gui-libs/libadwaita-1.4.0:1 + media-libs/fontconfig + sys-apps/dbus + >=sys-apps/xdg-desktop-portal-1.18.2 + >=sys-apps/xdg-desktop-portal-gtk-1.14.0 + gui-libs/gtk:4[wayland?,X?] + X? ( x11-libs/libX11 ) + wayland? ( dev-libs/wayland ) +" +RDEPEND="${DEPEND}" +BDEPEND=" + dev-util/gdbus-codegen + sys-devel/gettext + virtual/pkgconfig + + wayland? ( dev-util/wayland-scanner ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-46.2-valgrind.patch +) + +src_configure() { + local emesonargs=( + -Dsystemduserunitdir="$(systemd_get_userunitdir)" + ) + + meson_src_configure +}
