summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Cameron <brian.cameron@oracle.com>2012-06-21 20:29:15 -0500
committerBrian Cameron <brian.cameron@oracle.com>2012-06-21 20:29:15 -0500
commit4c19383e2560f18a828c06e6e77bddddf0b91a87 (patch)
treecb66923ce6ff16031ae026f144fe03b3ee83a73c
parent4a229fd4da1643e90bef54132e232bfa33b9a82d (diff)
downloadgdm-4c19383e2560f18a828c06e6e77bddddf0b91a87.tar.gz
Now GDM will reload its configuration settings if you send a HUP signal to
the gdm-binary process.
-rw-r--r--common/gdm-settings-direct.c5
-rw-r--r--common/gdm-settings.c7
-rw-r--r--common/gdm-settings.h1
-rw-r--r--daemon/main.c12
4 files changed, 22 insertions, 3 deletions
diff --git a/common/gdm-settings-direct.c b/common/gdm-settings-direct.c
index a90eed23..c4e1fe58 100644
--- a/common/gdm-settings-direct.c
+++ b/common/gdm-settings-direct.c
@@ -232,7 +232,10 @@ gdm_settings_direct_init (GdmSettings *settings,
g_return_val_if_fail (file != NULL, FALSE);
g_return_val_if_fail (root != NULL, FALSE);
- g_assert (schemas == NULL);
+ g_debug ("Settings Direct Init");
+ if (schemas != NULL)
+ g_hash_table_destroy (schemas);
+ schemas = NULL;
if (! gdm_settings_parse_schemas (file, root, &list)) {
g_warning ("Unable to parse schemas");
diff --git a/common/gdm-settings.c b/common/gdm-settings.c
index 00fe73e6..e4457cf0 100644
--- a/common/gdm-settings.c
+++ b/common/gdm-settings.c
@@ -259,3 +259,10 @@ gdm_settings_new (void)
return GDM_SETTINGS (settings_object);
}
+
+void
+gdm_settings_clear (void)
+{
+ g_object_unref (settings_object);
+ settings_object = NULL;
+}
diff --git a/common/gdm-settings.h b/common/gdm-settings.h
index 8284e84b..94c4b5f6 100644
--- a/common/gdm-settings.h
+++ b/common/gdm-settings.h
@@ -74,6 +74,7 @@ gboolean gdm_settings_set_value (GdmSettings *se
const char *key,
const char *value,
GError **error);
+void gdm_settings_clear (void);
G_END_DECLS
diff --git a/daemon/main.c b/daemon/main.c
index d7029580..b6d15352 100644
--- a/daemon/main.c
+++ b/daemon/main.c
@@ -489,9 +489,17 @@ signal_cb (int signo,
case SIGHUP:
g_debug ("Got HUP signal");
- /* FIXME:
- * Reread config stuff like system config files, VPN service files, etc
+ /* Reread config stuff like system config files, VPN service
+ * files, etc
*/
+ gdm_settings_clear ();
+ settings = gdm_settings_new ();
+ if (settings != NULL) {
+ if (! gdm_settings_direct_init (settings, GDMCONFDIR "/gdm.schemas", "/")) {
+ g_warning ("Unable to initialize settings");
+ }
+ }
+
ret = TRUE;
break;