summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2014-09-30 16:37:07 +1300
committerRobert Ancell <robert.ancell@canonical.com>2014-09-30 16:37:07 +1300
commitf2c21d3603236b3fe4b4e753747446dfa102e6f3 (patch)
tree475a10f27b9d3dafbe14289db67b514ba89818ed
parentb53aa33b565009185efd7261c1cfc2188eeb797f (diff)
parent7019fbe89163270920d14d4f840c9fc446bcf55a (diff)
downloadlightdm-git-f2c21d3603236b3fe4b4e753747446dfa102e6f3.tar.gz
Don't access .dmrc files until information from these files is required
-rw-r--r--common/user-list.c47
1 files 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. */