diff options
Diffstat (limited to 'daemon/gdm-slave.c')
-rw-r--r-- | daemon/gdm-slave.c | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c index a5ce62f4..f302eda3 100644 --- a/daemon/gdm-slave.c +++ b/daemon/gdm-slave.c @@ -510,11 +510,15 @@ gdm_slave_setup_xhost_auth (XHostAddress *host_entries, XServerInterpretedAddres si_entries[0].typelength = strlen ("localuser"); si_entries[1].type = "localuser"; si_entries[1].typelength = strlen ("localuser"); + si_entries[2].type = "localuser"; + si_entries[2].typelength = strlen ("localuser"); si_entries[0].value = "root"; si_entries[0].valuelength = strlen ("root"); si_entries[1].value = GDM_USERNAME; si_entries[1].valuelength = strlen (GDM_USERNAME); + si_entries[2].value = "gnome-initial-setup"; + si_entries[2].valuelength = strlen ("gnome-initial-setup"); host_entries[0].family = FamilyServerInterpreted; host_entries[0].address = (char *) &si_entries[0]; @@ -522,6 +526,9 @@ gdm_slave_setup_xhost_auth (XHostAddress *host_entries, XServerInterpretedAddres host_entries[1].family = FamilyServerInterpreted; host_entries[1].address = (char *) &si_entries[1]; host_entries[1].length = sizeof (XServerInterpretedAddress); + host_entries[2].family = FamilyServerInterpreted; + host_entries[2].address = (char *) &si_entries[2]; + host_entries[2].length = sizeof (XServerInterpretedAddress); } static void @@ -637,8 +644,8 @@ gdm_slave_connect_to_x11_display (GdmSlave *slave) g_warning ("Unable to connect to display %s", slave->priv->display_name); ret = FALSE; } else if (slave->priv->display_is_local) { - XServerInterpretedAddress si_entries[2]; - XHostAddress host_entries[2]; + XServerInterpretedAddress si_entries[3]; + XHostAddress host_entries[3]; g_debug ("GdmSlave: Connected to display %s", slave->priv->display_name); ret = TRUE; @@ -952,8 +959,8 @@ gdm_slave_add_user_authorization (GdmSlave *slave, const char *username, char **filenamep) { - XServerInterpretedAddress si_entries[2]; - XHostAddress host_entries[2]; + XServerInterpretedAddress si_entries[3]; + XHostAddress host_entries[3]; gboolean res; GError *error; char *filename; @@ -1176,6 +1183,42 @@ gdm_slave_get_timed_login_details (GdmSlave *slave, return res; } +gboolean +gdm_slave_get_initial_setup_details (GdmSlave *slave, + gboolean *enabledp) +{ + GError *error; + gboolean res; + gboolean enabled; + + g_debug ("GdmSlave: Requesting initial setup details"); + + error = NULL; + res = dbus_g_proxy_call (slave->priv->display_proxy, + "GetInitialSetupDetails", + &error, + G_TYPE_INVALID, + G_TYPE_BOOLEAN, &enabled, + G_TYPE_INVALID); + + if (! res) { + if (error != NULL) { + g_warning ("Failed to get initial setup details: %s", error->message); + g_error_free (error); + } else { + g_warning ("Failed to get initial setup details"); + } + } else { + g_debug ("GdmSlave: Got initial setup details: %d", enabled); + } + + if (enabledp != NULL) { + *enabledp = enabled; + } + + return res; +} + static gboolean _get_uid_and_gid_for_user (const char *username, uid_t *uid, |