]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - liblightdm-gobject/session.c
Merge with trunk
[sojka/lightdm.git] / liblightdm-gobject / session.c
index 0642c299929a9b92265f30a56bba0cf4d38d2862..82fc75ab355c6c229997c4c7e21792c0a422f3f6 100644 (file)
@@ -114,10 +114,9 @@ load_session (GKeyFile *key_file, const gchar *key)
 }
 
 static GList *
-load_sessions (const gchar *sessions_dir)
+load_sessions_dir (GList *sessions, const gchar *sessions_dir)
 {
     GDir *directory;
-    GList *sessions = NULL;
     GError *error = NULL;
 
     directory = g_dir_open (sessions_dir, 0, &error);
@@ -125,7 +124,7 @@ load_sessions (const gchar *sessions_dir)
         g_warning ("Failed to open sessions directory: %s", error->message);
     g_clear_error (&error);
     if (!directory)
-        return NULL;
+        return sessions;
 
     while (TRUE)
     {
@@ -175,12 +174,27 @@ load_sessions (const gchar *sessions_dir)
     return sessions;
 }
 
+static GList *
+load_sessions (const gchar *sessions_dir)
+{
+    GList *sessions = NULL;
+    gchar **dirs;
+    int i;
+
+    dirs = g_strsplit (sessions_dir, ":", -1);
+    for (i = 0; dirs[i]; i++)
+        sessions = load_sessions_dir (sessions, dirs[i]);
+    g_strfreev (dirs);
+  
+    return sessions;
+}
+
 static void
 update_sessions (void)
 {
     GKeyFile *config_key_file = NULL;
     gchar *config_path = NULL;
-    gchar *xsessions_dir;
+    gchar *sessions_dir;
     gchar *remote_sessions_dir;
     gchar *mir_sessions_dir;
     gboolean result;
@@ -189,7 +203,7 @@ update_sessions (void)
     if (have_sessions)
         return;
 
-    xsessions_dir = g_strdup (XSESSIONS_DIR);
+    sessions_dir = g_strdup (SESSIONS_DIR);
     remote_sessions_dir = g_strdup (REMOTE_SESSIONS_DIR);
 
     /* Use session directory from configuration */
@@ -204,11 +218,11 @@ update_sessions (void)
     {
         gchar *value;
       
-        value = g_key_file_get_string (config_key_file, "LightDM", "xsessions-directory", NULL);
+        value = g_key_file_get_string (config_key_file, "LightDM", "sessions-directory", NULL);
         if (value)
         {
-            g_free (xsessions_dir);
-            xsessions_dir = value;
+            g_free (sessions_dir);
+            sessions_dir = value;
         }
 
         value = g_key_file_get_string (config_key_file, "LightDM", "remote-sessions-directory", NULL);
@@ -221,10 +235,10 @@ update_sessions (void)
     g_key_file_free (config_key_file);
     g_free (config_path);
 
-    local_sessions = load_sessions (xsessions_dir);
+    local_sessions = load_sessions (sessions_dir);
     remote_sessions = load_sessions (remote_sessions_dir);
 
-    g_free (xsessions_dir);
+    g_free (sessions_dir);
     g_free (remote_sessions_dir);
 
     have_sessions = TRUE;