[gdm] Defer setting is-loaded until passwd and ck-history are loaded
- From: William Jon McCann <mccann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm] Defer setting is-loaded until passwd and ck-history are loaded
- Date: Fri, 11 Jun 2010 20:54:42 +0000 (UTC)
commit 472295ef2f2e64742d915e68d2c54893e9524bf4
Author: William Jon McCann <jmccann redhat com>
Date: Fri Jun 11 16:52:08 2010 -0400
Defer setting is-loaded until passwd and ck-history are loaded
This only really works since we set a maximum execution time on
the ck-history process.
gui/simple-greeter/gdm-user-manager.c | 17 ++++++++++++++++-
1 files changed, 16 insertions(+), 1 deletions(-)
---
diff --git a/gui/simple-greeter/gdm-user-manager.c b/gui/simple-greeter/gdm-user-manager.c
index ec0f3aa..d9b65fa 100644
--- a/gui/simple-greeter/gdm-user-manager.c
+++ b/gui/simple-greeter/gdm-user-manager.c
@@ -102,6 +102,7 @@ struct GdmUserManagerPrivate
GSList *include_usernames;
gboolean include_all;
+ gboolean load_passwd_pending;
GCancellable *cancellable;
guint load_id;
@@ -1407,6 +1408,11 @@ ck_history_watch (GIOChannel *source,
manager->priv->ck_history_watchdog_id = 0;
manager->priv->ck_history_pid = 0;
}
+
+ if (! manager->priv->load_passwd_pending) {
+ set_is_loaded (manager, TRUE);
+ }
+
return FALSE;
}
@@ -1776,13 +1782,20 @@ reload_passwd_job_done (PasswdData *data)
}
if (! data->manager->priv->is_loaded) {
- set_is_loaded (data->manager, TRUE);
+ /* if there is an outstanding history
+ request then wait to emit loaded */
+ if (data->manager->priv->ck_history_pid == 0) {
+ set_is_loaded (data->manager, TRUE);
+ }
if (data->manager->priv->include_all == TRUE) {
monitor_local_users (data->manager);
}
}
+ data->manager->priv->load_passwd_pending = FALSE;
+
+
passwd_data_free (data);
return FALSE;
@@ -1816,6 +1829,8 @@ schedule_reload_passwd (GdmUserManager *manager)
{
PasswdData *passwd_data;
+ manager->priv->load_passwd_pending = TRUE;
+
passwd_data = g_slice_new0 (PasswdData);
passwd_data->manager = g_object_ref (manager);
passwd_data->shells = manager->priv->shells;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]