summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Michael Brummer <jan.brummer@tabos.org>2023-03-28 09:35:39 +0200
committerJan-Michael Brummer <jan.brummer@tabos.org>2023-03-28 09:35:39 +0200
commit2644c741bf0e7fb7e327907a363975b65f47e89c (patch)
tree286aaef80fea286da82923da09633e7e3756fbaa
parentb85a776d60562e40841f6293be27054c6c51e373 (diff)
downloadlibproxy-git-2644c741bf0e7fb7e327907a363975b65f47e89c.tar.gz
Rework GNOME config plugin initialization
Move available check to init function to exit early.
-rw-r--r--src/backend/plugins/config-gnome/config-gnome.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/backend/plugins/config-gnome/config-gnome.c b/src/backend/plugins/config-gnome/config-gnome.c
index 4c2bc57..426769c 100644
--- a/src/backend/plugins/config-gnome/config-gnome.c
+++ b/src/backend/plugins/config-gnome/config-gnome.c
@@ -33,7 +33,7 @@ struct _PxConfigGnome {
GSettings *https_proxy_settings;
GSettings *ftp_proxy_settings;
GSettings *socks_proxy_settings;
- gboolean settings_found;
+ gboolean available;
};
typedef enum {
@@ -58,18 +58,30 @@ enum {
static void
px_config_gnome_init (PxConfigGnome *self)
{
- GSettingsSchemaSource *source = g_settings_schema_source_get_default ();
+ GSettingsSchemaSource *source;
GSettingsSchema *proxy_schema;
+ const char *desktops;
+
+ self->available = FALSE;
+
+ desktops = getenv ("XDG_CURRENT_DESKTOP");
+ if (!desktops)
+ return;
+ /* Remember that XDG_CURRENT_DESKTOP is a list of strings. */
+ if (strstr (desktops, "GNOME") == NULL)
+ return;
+
+ source = g_settings_schema_source_get_default ();
if (!source)
return;
proxy_schema = g_settings_schema_source_lookup (source, "org.gnome.system.proxy", TRUE);
- self->settings_found = proxy_schema != NULL;
+ self->available = proxy_schema != NULL;
g_clear_pointer (&proxy_schema, g_settings_schema_unref);
- if (!self->settings_found)
+ if (!self->available)
return;
self->proxy_settings = g_settings_new ("org.gnome.system.proxy");
@@ -126,17 +138,8 @@ static gboolean
px_config_gnome_is_available (PxConfig *config)
{
PxConfigGnome *self = PX_CONFIG_GNOME (config);
- const char *desktops;
- if (!self->settings_found)
- return FALSE;
-
- desktops = getenv ("XDG_CURRENT_DESKTOP");
- if (!desktops)
- return FALSE;
-
- /* Remember that XDG_CURRENT_DESKTOP is a list of strings. */
- return strstr (desktops, "GNOME") != NULL;
+ return self->available;
}
static void