[gdm/wip/slave-display-merger: 17/29] display: stop calling gdm_slave_set_up_greeter_session



commit ef4d78a4d3597c1b35bbc98f25b8b0142312e5a6
Author: Ray Strode <rstrode redhat com>
Date:   Thu Jan 29 16:25:37 2015 -0500

    display: stop calling gdm_slave_set_up_greeter_session
    
    We ultimately want to gut GdmSimpleSlave. This commit
    goes a step in the right direction by copying over the
    bits needed to do the preliminary greeter session setup.

 daemon/gdm-display.c      |   76 +++++++++++++++++++++++++++++++++++++++++++-
 daemon/gdm-simple-slave.c |   16 ---------
 daemon/gdm-slave.c        |    7 ----
 daemon/gdm-slave.h        |    4 --
 4 files changed, 74 insertions(+), 29 deletions(-)
---
diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c
index 64a3100..09c233e 100644
--- a/daemon/gdm-display.c
+++ b/daemon/gdm-display.c
@@ -44,6 +44,9 @@
 #include "gdm-simple-slave.h"
 #include "gdm-dbus-util.h"
 
+#define INITIAL_SETUP_USERNAME "gnome-initial-setup"
+#define GNOME_SESSION_SESSIONS_PATH DATADIR "/gnome-session/sessions"
+
 #define GDM_DISPLAY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_DISPLAY, GdmDisplayPrivate))
 
 struct GdmDisplayPrivate
@@ -561,7 +564,13 @@ on_accountsservice_ready (GObject        *object,
                 g_error ("Failed to contact accountsservice: %s", local_error->message);
         }
 
-        g_dbus_proxy_call (self->priv->accountsservice_proxy, "ListCachedUsers", NULL, 0, -1, NULL,
+        g_dbus_proxy_call (self->priv->accountsservice_proxy,
+                           "ListCachedUsers",
+                           NULL,
+                           0,
+                           -1,
+                           NULL,
+                           (GAsyncReadyCallback)
                            on_list_cached_users_complete, self);
 }
 
@@ -574,6 +583,7 @@ look_for_existing_users_and_start_slave (GdmDisplay *self)
                           "/org/freedesktop/Accounts",
                           "org.freedesktop.Accounts",
                           NULL,
+                          (GAsyncReadyCallback)
                           on_accountsservice_ready, self);
 }
 
@@ -1367,11 +1377,73 @@ gdm_display_get_object_skeleton (GdmDisplay *self)
         return self->priv->object_skeleton;
 }
 
+static gboolean
+can_create_environment (const char *session_id)
+{
+        char *path;
+        gboolean session_exists;
+
+        path = g_strdup_printf (GNOME_SESSION_SESSIONS_PATH "/%s.session", session_id);
+        session_exists = g_file_test (path, G_FILE_TEST_EXISTS);
+
+        g_free (path);
+
+        return session_exists;
+}
+
+static gboolean
+wants_autologin (GdmDisplay *self)
+{
+        gboolean enabled = FALSE;
+        int delay = 0;
+
+        if (g_file_test (GDM_RAN_ONCE_MARKER_FILE, G_FILE_TEST_EXISTS)) {
+                return FALSE;
+        }
+
+        gdm_display_get_timed_login_details (self, &enabled, NULL, &delay);
+        return enabled && delay == 0;
+}
+
+static gboolean
+wants_initial_setup (GdmDisplay *self)
+{
+        gboolean enabled = FALSE;
+
+        /* don't run initial-setup on remote displays
+         */
+        if (!self->priv->is_local) {
+                return FALSE;
+        }
+
+        /* don't run if the system has existing users */
+        if (self->priv->have_existing_user_accounts) {
+                return FALSE;
+        }
+
+        /* don't run if initial-setup is unavailable */
+        if (!can_create_environment ("gnome-initial-setup")) {
+                return FALSE;
+        }
+
+        if (!gdm_settings_direct_get_boolean (GDM_KEY_INITIAL_SETUP_ENABLE, &enabled)) {
+                return FALSE;
+        }
+
+        return enabled;
+}
+
 void
 gdm_display_set_up_greeter_session (GdmDisplay  *self,
                                     char       **username)
 {
-        gdm_slave_set_up_greeter_session (self->priv->slave, username);
+        if (wants_initial_setup (self)) {
+                *username = g_strdup (INITIAL_SETUP_USERNAME);
+        } else if (wants_autologin (self)) {
+                *username = g_strdup ("root");
+        } else {
+                *username = g_strdup (GDM_USERNAME);
+        }
 }
 
 void
diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
index 6cedb52..ba462e9 100644
--- a/daemon/gdm-simple-slave.c
+++ b/daemon/gdm-simple-slave.c
@@ -633,21 +633,6 @@ wants_initial_setup (GdmSimpleSlave *slave)
 }
 
 static void
-gdm_simple_slave_set_up_greeter_session (GdmSlave  *slave,
-                                         char     **username)
-{
-        GdmSimpleSlave *self = GDM_SIMPLE_SLAVE (slave);
-
-        if (wants_initial_setup (self)) {
-                *username = g_strdup (INITIAL_SETUP_USERNAME);
-        } else if (wants_autologin (self)) {
-                *username = g_strdup ("root");
-        } else {
-                *username = g_strdup (GDM_USERNAME);
-        }
-}
-
-static void
 gdm_simple_slave_stop_greeter_session (GdmSlave *slave)
 {
         GdmSimpleSlave *self = GDM_SIMPLE_SLAVE (slave);
@@ -933,7 +918,6 @@ gdm_simple_slave_class_init (GdmSimpleSlaveClass *klass)
 
         slave_class->start = gdm_simple_slave_start;
         slave_class->stop = gdm_simple_slave_stop;
-        slave_class->set_up_greeter_session = gdm_simple_slave_set_up_greeter_session;
         slave_class->start_greeter_session = gdm_simple_slave_start_greeter_session;
         slave_class->stop_greeter_session = gdm_simple_slave_stop_greeter_session;
 
diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c
index 84954f8..6942aec 100644
--- a/daemon/gdm-slave.c
+++ b/daemon/gdm-slave.c
@@ -698,13 +698,6 @@ gdm_slave_get_property (GObject    *object,
 }
 
 void
-gdm_slave_set_up_greeter_session (GdmSlave  *slave,
-                                  char     **username)
-{
-        GDM_SLAVE_GET_CLASS (slave)->set_up_greeter_session (slave, username);
-}
-
-void
 gdm_slave_start_greeter_session (GdmSlave *slave)
 {
         GDM_SLAVE_GET_CLASS (slave)->start_greeter_session (slave);
diff --git a/daemon/gdm-slave.h b/daemon/gdm-slave.h
index 20b1cf3..9ed3992 100644
--- a/daemon/gdm-slave.h
+++ b/daemon/gdm-slave.h
@@ -50,8 +50,6 @@ typedef struct
         gboolean (*start) (GdmSlave *slave);
         gboolean (*stop)  (GdmSlave *slave);
 
-        void     (* set_up_greeter_session) (GdmSlave  *slave,
-                                             char     **username);
         void     (* start_greeter_session)  (GdmSlave  *slave);
         void     (* stop_greeter_session)   (GdmSlave  *slave);
 
@@ -83,8 +81,6 @@ gboolean            gdm_slave_add_user_authorization (GdmSlave   *slave,
 
 gboolean            gdm_slave_connect_to_x11_display (GdmSlave   *slave);
 
-void                gdm_slave_set_up_greeter_session (GdmSlave  *slave,
-                                                      char     **username);
 void                gdm_slave_start_greeter_session  (GdmSlave  *slave);
 void                gdm_slave_stop_greeter_session   (GdmSlave  *slave);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]