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
+}

Reply via email to