From: Matthias Clasen Date: Wed, 7 Sep 2022 11:53:12 +0000 (-0400) Subject: Handle absence of portals X-Git-Tag: archive/raspbian/4.8.3+ds-2+rpi1~3^2~20^2~2^2~23^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e16414b3ace5a3d3a26431fcb2fffb5032aae2dd;p=gtk4.git Handle absence of portals When the documents portal is not on the bus, we still get an (unowned) proxy, and we need to handle that situation. --- diff --git a/gdk/filetransferportal.c b/gdk/filetransferportal.c index d9934fbb43..bf1e2e2be5 100644 --- a/gdk/filetransferportal.c +++ b/gdk/filetransferportal.c @@ -512,6 +512,21 @@ finish_registration (void) "closed", G_CALLBACK (connection_closed), NULL); } +static gboolean +proxy_has_owner (GDBusProxy *proxy) +{ + char *owner; + + owner = g_dbus_proxy_get_name_owner (proxy); + if (owner) + { + g_free (owner); + return TRUE; + } + + return FALSE; +} + void file_transfer_portal_register (void) { @@ -531,6 +546,10 @@ file_transfer_portal_register (void) "org.freedesktop.portal.FileTransfer", NULL, NULL); + + if (file_transfer_proxy && !proxy_has_owner (file_transfer_proxy)) + g_clear_object (&file_transfer_proxy); + if (file_transfer_proxy) finish_registration (); }