From 4e7a1d61c24286a8460998bf3fa38cb492c0a4f3 Mon Sep 17 00:00:00 2001 From: Robert Ancell Date: Thu, 18 Sep 2014 16:48:18 +1200 Subject: [PATCH] Don't load .dmrc files unless we need the data from them --- common/user-list.c | 47 ++++++++++++++-------------------------------- 1 file changed, 14 insertions(+), 33 deletions(-) diff --git a/common/user-list.c b/common/user-list.c index 3b8d5a15..e9a729d1 100644 --- a/common/user-list.c +++ b/common/user-list.c @@ -96,8 +96,8 @@ typedef struct /* User list this user is part of */ CommonUserList *user_list; - /* TRUE if have loaded user properties */ - gboolean loaded_values; + /* TRUE if have loaded the DMRC file */ + gboolean loaded_dmrc; /* Accounts service path */ gchar *path; @@ -585,8 +585,6 @@ load_accounts_user (CommonUser *user) g_variant_unref (result); - priv->loaded_values = TRUE; - return !system_account; } @@ -1179,12 +1177,20 @@ save_string_to_dmrc (CommonUser *user, const gchar *group, g_key_file_free (dmrc); } +/* Loads language/layout/session info for user */ static void load_dmrc (CommonUser *user) { CommonUserPrivate *priv = GET_USER_PRIVATE (user); GKeyFile *dmrc; + /* We're using Accounts service instead */ + if (priv->path) + return; + + if (priv->loaded_dmrc) + return; + priv->loaded_dmrc = TRUE; dmrc = dmrc_load (user); // FIXME: Watch for changes @@ -1207,20 +1213,6 @@ load_dmrc (CommonUser *user) g_key_file_free (dmrc); } -/* Loads language/layout/session info for user */ -static void -load_user_values (CommonUser *user) -{ - CommonUserPrivate *priv = GET_USER_PRIVATE (user); - - if (priv->loaded_values) - return; - priv->loaded_values = TRUE; - - if (!priv->path) - load_dmrc (user); -} - /** * common_user_get_name: * @user: A #CommonUser @@ -1233,7 +1225,6 @@ const gchar * common_user_get_name (CommonUser *user) { g_return_val_if_fail (COMMON_IS_USER (user), NULL); - load_user_values (user); return GET_USER_PRIVATE (user)->name; } @@ -1249,7 +1240,6 @@ const gchar * common_user_get_real_name (CommonUser *user) { g_return_val_if_fail (COMMON_IS_USER (user), NULL); - load_user_values (user); return GET_USER_PRIVATE (user)->real_name; } @@ -1268,8 +1258,6 @@ common_user_get_display_name (CommonUser *user) g_return_val_if_fail (COMMON_IS_USER (user), NULL); - load_user_values (user); - priv = GET_USER_PRIVATE (user); if (!priv->real_name || strcmp (priv->real_name, "") == 0) return priv->name; @@ -1289,7 +1277,6 @@ const gchar * common_user_get_home_directory (CommonUser *user) { g_return_val_if_fail (COMMON_IS_USER (user), NULL); - load_user_values (user); return GET_USER_PRIVATE (user)->home_directory; } @@ -1305,7 +1292,6 @@ const gchar * common_user_get_shell (CommonUser *user) { g_return_val_if_fail (COMMON_IS_USER (user), NULL); - load_user_values (user); return GET_USER_PRIVATE (user)->shell; } @@ -1321,7 +1307,6 @@ const gchar * common_user_get_image (CommonUser *user) { g_return_val_if_fail (COMMON_IS_USER (user), NULL); - load_user_values (user); return GET_USER_PRIVATE (user)->image; } @@ -1337,7 +1322,6 @@ const gchar * common_user_get_background (CommonUser *user) { g_return_val_if_fail (COMMON_IS_USER (user), NULL); - load_user_values (user); return GET_USER_PRIVATE (user)->background; } @@ -1353,7 +1337,7 @@ const gchar * common_user_get_language (CommonUser *user) { g_return_val_if_fail (COMMON_IS_USER (user), NULL); - load_user_values (user); + load_dmrc (user); const gchar *language = GET_USER_PRIVATE (user)->language; return (language && language[0] == 0) ? NULL : language; /* Treat "" as NULL */ } @@ -1388,7 +1372,7 @@ const gchar * common_user_get_layout (CommonUser *user) { g_return_val_if_fail (COMMON_IS_USER (user), NULL); - load_user_values (user); + load_dmrc (user); return GET_USER_PRIVATE (user)->layouts[0]; } @@ -1404,7 +1388,7 @@ const gchar * const * common_user_get_layouts (CommonUser *user) { g_return_val_if_fail (COMMON_IS_USER (user), NULL); - load_user_values (user); + load_dmrc (user); return (const gchar * const *) GET_USER_PRIVATE (user)->layouts; } @@ -1420,7 +1404,7 @@ const gchar * common_user_get_session (CommonUser *user) { g_return_val_if_fail (COMMON_IS_USER (user), NULL); - load_user_values (user); + load_dmrc (user); const gchar *session = GET_USER_PRIVATE (user)->session; return (session && session[0] == 0) ? NULL : session; /* Treat "" as NULL */ } @@ -1489,7 +1473,6 @@ gboolean common_user_get_has_messages (CommonUser *user) { g_return_val_if_fail (COMMON_IS_USER (user), FALSE); - load_user_values (user); return GET_USER_PRIVATE (user)->has_messages; } @@ -1505,7 +1488,6 @@ uid_t common_user_get_uid (CommonUser *user) { g_return_val_if_fail (COMMON_IS_USER (user), 0); - load_user_values (user); return GET_USER_PRIVATE (user)->uid; } @@ -1521,7 +1503,6 @@ gid_t common_user_get_gid (CommonUser *user) { g_return_val_if_fail (COMMON_IS_USER (user), 0); - load_user_values (user); /* gid is not actually stored in AccountsService, so if our user is from AccountsService, we have to look up manually in passwd. gid won't change, so just look up the first time we're asked and never again. */ -- 2.39.2