diff options
author | Michael Terry <michael.terry@canonical.com> | 2014-02-18 16:44:30 -0500 |
---|---|---|
committer | Michael Terry <michael.terry@canonical.com> | 2014-02-18 16:44:30 -0500 |
commit | 065745fe5e93d975affbf31b6bd59cb613746a7a (patch) | |
tree | 907e872246a0b8b7ddc19b7612a162e1af70fb1a /src/greeter.c | |
parent | 6b90c538990ac8d8d0d3634dba9c58874f2f3491 (diff) | |
download | lightdm-git-065745fe5e93d975affbf31b6bd59cb613746a7a.tar.gz |
Make directory creation synchronous
Diffstat (limited to 'src/greeter.c')
-rw-r--r-- | src/greeter.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/greeter.c b/src/greeter.c index 554b90f4..b000ac3e 100644 --- a/src/greeter.c +++ b/src/greeter.c @@ -100,7 +100,8 @@ typedef enum SERVER_MESSAGE_CONNECTED = 0, SERVER_MESSAGE_PROMPT_AUTHENTICATION, SERVER_MESSAGE_END_AUTHENTICATION, - SERVER_MESSAGE_SESSION_RESULT + SERVER_MESSAGE_SESSION_RESULT, + SERVER_MESSAGE_SHARED_DIR_RESULT, } ServerMessage; static gboolean read_cb (GIOChannel *source, GIOCondition condition, gpointer data); @@ -629,6 +630,20 @@ handle_set_language (Greeter *greeter, const gchar *language) user_set_language (user, language); } +static void +handle_ensure_shared_dir (Greeter *greeter, const gchar *username) +{ + gboolean result; + guint8 message[MAX_MESSAGE_LENGTH]; + gsize offset = 0; + + result = shared_data_manager_ensure_user_dir (shared_data_manager_get_instance (), username); + + write_header (message, MAX_MESSAGE_LENGTH, SERVER_MESSAGE_SHARED_DIR_RESULT, int_length (), &offset); + write_int (message, MAX_MESSAGE_LENGTH, result ? 0 : 1, &offset); + write_message (greeter, message, offset); +} + static guint32 read_int (Greeter *greeter, gsize *offset) { @@ -815,7 +830,7 @@ read_cb (GIOChannel *source, GIOCondition condition, gpointer data) break; case GREETER_MESSAGE_ENSURE_SHARED_DIR: username = read_string (greeter, &offset); - shared_data_manager_ensure_user_dir (shared_data_manager_get_instance (), username); + handle_ensure_shared_dir (greeter, username); g_free (username); break; default: |