mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-24 13:06:14 +01:00
gproxyresolverportal: do not connect to session bus when not under flatpak
While gio module extension is loaded a new GProxyResolverPortal is created to query whether it's supported. We always return FALSE when not aunder flatpak, so we don't need to connect to the session bus in that case. Add a helper ensure_resolver_proxy() that returns TRUE when the proxy is created and use it in is_supported() instead of creating the proxy unconditionally in the instance initialization. https://bugzilla.gnome.org/show_bug.cgi?id=790894
This commit is contained in:
parent
d44afbadda
commit
7dcc09e586
@ -42,9 +42,15 @@ G_DEFINE_TYPE_WITH_CODE (GProxyResolverPortal, g_proxy_resolver_portal, G_TYPE_O
|
||||
"portal",
|
||||
90))
|
||||
|
||||
static void
|
||||
g_proxy_resolver_portal_init (GProxyResolverPortal *resolver)
|
||||
static gboolean
|
||||
ensure_resolver_proxy (GProxyResolverPortal *resolver)
|
||||
{
|
||||
if (resolver->resolver)
|
||||
return TRUE;
|
||||
|
||||
if (!glib_should_use_portal ())
|
||||
return FALSE;
|
||||
|
||||
resolver->resolver = gxdp_proxy_resolver_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
|
||||
G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
|
||||
"org.freedesktop.portal.Desktop",
|
||||
@ -53,6 +59,13 @@ g_proxy_resolver_portal_init (GProxyResolverPortal *resolver)
|
||||
NULL);
|
||||
|
||||
resolver->network_available = glib_network_available_in_sandbox ();
|
||||
|
||||
return resolver->resolver != NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
g_proxy_resolver_portal_init (GProxyResolverPortal *resolver)
|
||||
{
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -62,7 +75,7 @@ g_proxy_resolver_portal_is_supported (GProxyResolver *object)
|
||||
char *name_owner;
|
||||
gboolean has_portal;
|
||||
|
||||
if (!glib_should_use_portal () || !resolver->resolver)
|
||||
if (!ensure_resolver_proxy (resolver))
|
||||
return FALSE;
|
||||
|
||||
name_owner = g_dbus_proxy_get_name_owner (G_DBUS_PROXY (resolver->resolver));
|
||||
@ -83,6 +96,9 @@ g_proxy_resolver_portal_lookup (GProxyResolver *proxy_resolver,
|
||||
GProxyResolverPortal *resolver = G_PROXY_RESOLVER_PORTAL (proxy_resolver);
|
||||
char **proxy = NULL;
|
||||
|
||||
ensure_resolver_proxy (resolver);
|
||||
g_assert (resolver->resolver);
|
||||
|
||||
if (!gxdp_proxy_resolver_call_lookup_sync (resolver->resolver,
|
||||
uri,
|
||||
&proxy,
|
||||
@ -129,6 +145,9 @@ g_proxy_resolver_portal_lookup_async (GProxyResolver *proxy_resolver,
|
||||
GProxyResolverPortal *resolver = G_PROXY_RESOLVER_PORTAL (proxy_resolver);
|
||||
GTask *task;
|
||||
|
||||
ensure_resolver_proxy (resolver);
|
||||
g_assert (resolver->resolver);
|
||||
|
||||
task = g_task_new (proxy_resolver, cancellable, callback, user_data);
|
||||
gxdp_proxy_resolver_call_lookup (resolver->resolver,
|
||||
uri,
|
||||
|
Loading…
Reference in New Issue
Block a user