]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - liblightdm-gobject/session.c
Add support for greeters that stay alive after logging a user in, rather than being...
[sojka/lightdm.git] / liblightdm-gobject / session.c
index 82fc75ab355c6c229997c4c7e21792c0a422f3f6..2a0be54496908c9b1ea5edb6184752c05a56f009 100644 (file)
@@ -11,6 +11,7 @@
 #include <string.h>
 #include <gio/gdesktopappinfo.h>
 
+#include "configuration.h"
 #include "lightdm/session.h"
 
 enum {
@@ -35,7 +36,6 @@ G_DEFINE_TYPE (LightDMSession, lightdm_session, G_TYPE_OBJECT);
 static gboolean have_sessions = FALSE;
 static GList *local_sessions = NULL;
 static GList *remote_sessions = NULL;
-static GList *mir_sessions = NULL;
 
 static gint 
 compare_session (gconstpointer a, gconstpointer b)
@@ -120,7 +120,7 @@ load_sessions_dir (GList *sessions, const gchar *sessions_dir)
     GError *error = NULL;
 
     directory = g_dir_open (sessions_dir, 0, &error);
-    if (error)
+    if (error && !g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT))
         g_warning ("Failed to open sessions directory: %s", error->message);
     g_clear_error (&error);
     if (!directory)
@@ -192,13 +192,9 @@ load_sessions (const gchar *sessions_dir)
 static void
 update_sessions (void)
 {
-    GKeyFile *config_key_file = NULL;
-    gchar *config_path = NULL;
     gchar *sessions_dir;
     gchar *remote_sessions_dir;
-    gchar *mir_sessions_dir;
-    gboolean result;
-    GError *error = NULL;
+    gchar *value;
 
     if (have_sessions)
         return;
@@ -207,33 +203,21 @@ update_sessions (void)
     remote_sessions_dir = g_strdup (REMOTE_SESSIONS_DIR);
 
     /* Use session directory from configuration */
-    /* FIXME: This should be sent in the greeter connection */
-    config_path = g_build_filename (CONFIG_DIR, "lightdm.conf", NULL);
-    config_key_file = g_key_file_new ();
-    result = g_key_file_load_from_file (config_key_file, config_path, G_KEY_FILE_NONE, &error);
-    if (error)
-        g_warning ("Failed to open configuration file: %s", error->message);
-    g_clear_error (&error);
-    if (result)
-    {
-        gchar *value;
+    config_load_from_standard_locations (config_get_instance (), NULL, NULL);
       
-        value = g_key_file_get_string (config_key_file, "LightDM", "sessions-directory", NULL);
-        if (value)
-        {
-            g_free (sessions_dir);
-            sessions_dir = value;
-        }
+    value = config_get_string (config_get_instance (), "LightDM", "sessions-directory");
+    if (value)
+    {
+        g_free (sessions_dir);
+        sessions_dir = value;
+    }
 
-        value = g_key_file_get_string (config_key_file, "LightDM", "remote-sessions-directory", NULL);
-        if (value)
-        {
-            g_free (remote_sessions_dir);
-            remote_sessions_dir = value;
-        }
+    value = config_get_string (config_get_instance (), "LightDM", "remote-sessions-directory");
+    if (value)
+    {
+        g_free (remote_sessions_dir);
+        remote_sessions_dir = value;
     }
-    g_key_file_free (config_key_file);
-    g_free (config_path);
 
     local_sessions = load_sessions (sessions_dir);
     remote_sessions = load_sessions (remote_sessions_dir);