| From c7fa612023a163e8b2352e1170c6df3fceb19b27 Mon Sep 17 00:00:00 2001 |
| From: Ray Strode <rstrode@redhat.com> |
| Date: Thu, 19 Jul 2018 13:14:09 -0400 |
| Subject: [PATCH] lib: don't set loaded state until seat is fetched |
| |
| At the moment we set is-loaded on the user-manager |
| object as soon as we start fetching the seat, but |
| we should waiting until the seat is fetched, so |
| that can_switch() will return the correct value |
| if the caller waited until the loaded signal |
| to use it. |
| |
| This commit changes the >= to > which I believe |
| was the original intention anyway. |
| |
| https://bugs.freedesktop.org/show_bug.cgi?id=107298 |
| |
| src/libaccountsservice/act-user-manager.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/src/libaccountsservice/act-user-manager.c b/src/libaccountsservice/act-user-manager.c |
| index 325421b..e7e26b1 100644 |
| |
| |
| @@ -2355,61 +2355,61 @@ act_user_manager_list_users (ActUserManager *manager) |
| queue_load_seat_incrementally (manager); |
| } |
| |
| retval = NULL; |
| g_hash_table_foreach (manager->priv->normal_users_by_name, listify_hash_values_hfunc, &retval); |
| |
| return g_slist_sort (retval, (GCompareFunc) act_user_collate); |
| } |
| |
| static void |
| maybe_set_is_loaded (ActUserManager *manager) |
| { |
| if (manager->priv->is_loaded) { |
| g_debug ("ActUserManager: already loaded, so not setting loaded property"); |
| return; |
| } |
| |
| if (manager->priv->getting_sessions) { |
| g_debug ("ActUserManager: GetSessions call pending, so not setting loaded property"); |
| return; |
| } |
| |
| if (manager->priv->new_users_inhibiting_load != NULL) { |
| g_debug ("ActUserManager: Loading new users, so not setting loaded property"); |
| return; |
| } |
| |
| /* Don't set is_loaded yet unless the seat is already loaded enough |
| * or failed to load. |
| */ |
| - if (manager->priv->seat.state >= ACT_USER_MANAGER_SEAT_STATE_GET_ID) { |
| + if (manager->priv->seat.state > ACT_USER_MANAGER_SEAT_STATE_GET_ID) { |
| g_debug ("ActUserManager: Seat loaded, so now setting loaded property"); |
| } else if (manager->priv->seat.state == ACT_USER_MANAGER_SEAT_STATE_UNLOADED) { |
| g_debug ("ActUserManager: Seat wouldn't load, so giving up on it and setting loaded property"); |
| } else { |
| g_debug ("ActUserManager: Seat still actively loading, so not setting loaded property"); |
| return; |
| } |
| |
| set_is_loaded (manager, TRUE); |
| } |
| |
| |
| static GSList * |
| slist_deep_copy (const GSList *list) |
| { |
| GSList *retval; |
| GSList *l; |
| |
| if (list == NULL) |
| return NULL; |
| |
| retval = g_slist_copy ((GSList *) list); |
| for (l = retval; l != NULL; l = l->next) { |
| l->data = g_strdup (l->data); |
| } |
| |
| return retval; |
| } |
| |
| static void |
| -- |
| 2.17.1 |
| |