diff options
-rw-r--r-- | daemon/gdm-simple-slave.c | 5 | ||||
-rw-r--r-- | daemon/gdm-slave.c | 13 | ||||
-rw-r--r-- | daemon/gdm-slave.h | 1 |
3 files changed, 14 insertions, 5 deletions
diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c index 35951c7a..1fe58bce 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c @@ -437,15 +437,18 @@ switch_to_and_unlock_session (GdmSimpleSlave *slave, gboolean fail_if_already_switched) { char *username; + char *session_id; gboolean res; username = gdm_session_get_username (slave->priv->session); + session_id = gdm_session_get_session_id (slave->priv->session); g_debug ("GdmSimpleSlave: trying to switch to session for user %s", username); /* try to switch to an existing session */ - res = gdm_slave_switch_to_user_session (GDM_SLAVE (slave), username, fail_if_already_switched); + res = gdm_slave_switch_to_user_session (GDM_SLAVE (slave), username, session_id, fail_if_already_switched); g_free (username); + g_free (session_id); return res; } diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c index 128a8005..851f1ef9 100644 --- a/daemon/gdm-slave.c +++ b/daemon/gdm-slave.c @@ -1639,6 +1639,7 @@ session_unlock (GdmSlave *slave, gboolean gdm_slave_switch_to_user_session (GdmSlave *slave, const char *username, + const char *session_id, gboolean fail_if_already_switched) { gboolean res; @@ -1648,10 +1649,14 @@ gdm_slave_switch_to_user_session (GdmSlave *slave, ret = FALSE; - ssid_to_activate = gdm_slave_get_primary_session_id_for_user (slave, username); - if (ssid_to_activate == NULL) { - g_debug ("GdmSlave: unable to determine session to activate"); - goto out; + if (session_id != NULL) { + ssid_to_activate = g_strdup (session_id); + } else { + ssid_to_activate = gdm_slave_get_primary_session_id_for_user (slave, username); + if (ssid_to_activate == NULL) { + g_debug ("GdmSlave: unable to determine session to activate"); + goto out; + } } session_already_switched = session_is_active (slave, slave->priv->display_seat_id, ssid_to_activate); diff --git a/daemon/gdm-slave.h b/daemon/gdm-slave.h index 902de214..98084331 100644 --- a/daemon/gdm-slave.h +++ b/daemon/gdm-slave.h @@ -100,6 +100,7 @@ gboolean gdm_slave_add_user_authorization (GdmSlave *slave, gboolean gdm_slave_switch_to_user_session (GdmSlave *slave, const char *username, + const char *session_id, gboolean fail_if_already_switched); gboolean gdm_slave_connect_to_x11_display (GdmSlave *slave); |