[gdm/gnome-2-30] 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/gnome-2-30] Defer setting is-loaded until passwd and ck-history are loaded
- Date: Tue, 15 Jun 2010 15:09:49 +0000 (UTC)
commit 4c0f3bd39e1e8f40f330fd64d5e62ed5220fe382
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 eb315cf..e7e0abc 100644
--- a/gui/simple-greeter/gdm-user-manager.c
+++ b/gui/simple-greeter/gdm-user-manager.c
@@ -96,6 +96,7 @@ struct GdmUserManagerPrivate
GSList *include_usernames;
gboolean include_all;
+ gboolean load_passwd_pending;
GCancellable *cancellable;
guint load_id;
@@ -1198,6 +1199,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;
}
@@ -1567,13 +1573,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;
@@ -1607,6 +1620,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]