diff --git a/accountsservice.spec b/accountsservice.spec index b9cc5f3..ee2f11c 100644 --- a/accountsservice.spec +++ b/accountsservice.spec @@ -1,7 +1,7 @@ Name: accountsservice Version: 0.6.9 -Release: 2%{?dist} +Release: 3%{?dist} Summary: D-Bus interfaces for querying and manipulating user account information Group: System Environment/Daemons @@ -91,6 +91,9 @@ rm $RPM_BUILD_ROOT%{_libdir}/*.a %{_datadir}/gir-1.0/AccountsService-1.0.gir %changelog +* Tue Apr 26 2011 Ray Strode 0.6.9-3 +- Stabbity, stab, stab (more bug 678236). + * Mon Apr 25 2011 Ray Strode 0.6.9-2 - More stabs at fixing empty user list problems (bug 678236) diff --git a/empty-user-list.patch b/empty-user-list.patch index 5fd6931..7b6bc08 100644 --- a/empty-user-list.patch +++ b/empty-user-list.patch @@ -270,3 +270,66 @@ index 3e463e6..07c8e34 100644 -- 1.7.4.4 +From 3227a765710310b7223b81428165e2de3c09b838 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Tue, 26 Apr 2011 10:24:04 -0400 +Subject: [PATCH] lib: set is-loaded only after we've actually loaded the + users + +Before we were setting it as soon as we got the unloaded list, +which isn't sufficient, since callers wait for is-loaded to call +list_users, and list_users only returns loaded users. + +(bug initially introduced by commit fffd5c51a54682e17ac61e374d629e9aa0dbeeb1) +--- + src/libaccountsservice/act-user-manager.c | 13 +++++++++---- + 1 files changed, 9 insertions(+), 4 deletions(-) + +diff --git a/src/libaccountsservice/act-user-manager.c b/src/libaccountsservice/act-user-manager.c +index 07c8e34..0afe199 100644 +--- a/src/libaccountsservice/act-user-manager.c ++++ b/src/libaccountsservice/act-user-manager.c +@@ -793,7 +793,7 @@ on_new_user_loaded (ActUser *user, + (int) act_user_get_uid (user)); + } + g_object_unref (user); +- return; ++ goto out; + } + + g_debug ("ActUserManager: user '%s' is now loaded", username); +@@ -801,7 +801,7 @@ on_new_user_loaded (ActUser *user, + if (username_in_exclude_list (manager, username)) { + g_debug ("ActUserManager: excluding user '%s'", username); + g_object_unref (user); +- return; ++ goto out; + } + + old_user = g_hash_table_lookup (manager->priv->users_by_name, username); +@@ -817,6 +817,7 @@ on_new_user_loaded (ActUser *user, + add_user (manager, user); + g_object_unref (user); + ++out: + if (manager->priv->new_users == NULL) { + g_debug ("ActUserManager: no pending users, trying to set loaded property"); + maybe_set_is_loaded (manager); +@@ -1187,8 +1188,12 @@ on_list_cached_users_finished (DBusGProxy *proxy, + return; + } + +- g_debug ("ActUserManager: ListCachedUsers finished, so trying to set loaded property"); +- maybe_set_is_loaded (manager); ++ /* We now have a batch of unloaded users that we know about. Once that initial ++ * batch is loaded up, we can mark the manager as loaded. ++ * ++ * (see on_new_user_loaded) ++ */ ++ g_debug ("ActUserManager: ListCachedUsers finished, will set loaded property after list is fully loaded"); + g_ptr_array_foreach (paths, (GFunc)add_new_user_for_object_path, manager); + + g_ptr_array_foreach (paths, (GFunc)g_free, NULL); +-- +1.7.4.4 +