[gdm/wip/slave-display-merger: 17/29] display: stop calling gdm_slave_set_up_greeter_session
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm/wip/slave-display-merger: 17/29] display: stop calling gdm_slave_set_up_greeter_session
- Date: Tue, 3 Feb 2015 22:17:45 +0000 (UTC)
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]