summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2018-04-20 16:43:15 -0400
committerRay Strode <rstrode@redhat.com>2018-04-20 16:51:29 -0400
commit9a6a5684f684452e3bcea229a7a4ccdea2934863 (patch)
tree561163ab72463eccab9be9fe81cbbb0b0dd25fd2
parente18e8a3a0642b50801da04f3575fc9cca62b291c (diff)
downloadaccountsservice-9a6a5684f684452e3bcea229a7a4ccdea2934863.tar.gz
lib: don't emit user-added signal until list_users is completed
Right now calling act_user_manager_list_users can inadvertently lead to user-added signals getting emitted before the call completes. This is not something users of the API expect. https://bugs.freedesktop.org/show_bug.cgi?id=106162
-rw-r--r--src/libaccountsservice/act-user-manager.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libaccountsservice/act-user-manager.c b/src/libaccountsservice/act-user-manager.c
index 9304ea6..ade309c 100644
--- a/src/libaccountsservice/act-user-manager.c
+++ b/src/libaccountsservice/act-user-manager.c
@@ -832,7 +832,7 @@ add_user (ActUserManager *manager,
G_CALLBACK (on_user_changed),
manager, 0);
- if (manager->priv->is_loaded) {
+ if (manager->priv->is_loaded && manager->priv->list_cached_users_done) {
g_debug ("ActUserManager: loaded, so emitting user-added signal");
g_signal_emit (manager, signals[USER_ADDED], 0, user);
} else {
@@ -861,7 +861,7 @@ remove_user (ActUserManager *manager,
}
- if (manager->priv->is_loaded) {
+ if (manager->priv->is_loaded && manager->priv->list_cached_users_done) {
g_debug ("ActUserManager: loaded, so emitting user-removed signal");
g_signal_emit (manager, signals[USER_REMOVED], 0, user);
} else {