]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Don't load .dmrc files unless we need the data from them
authorRobert Ancell <robert.ancell@canonical.com>
Thu, 18 Sep 2014 04:48:18 +0000 (16:48 +1200)
committerRobert Ancell <robert.ancell@canonical.com>
Thu, 18 Sep 2014 04:48:18 +0000 (16:48 +1200)
common/user-list.c

index 3b8d5a15e62b26d2edebb4cdf8b2b3206db4ed76..e9a729d17c84c5fe901e1e6b8f5d2143a8b289bb 100644 (file)
@@ -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. */