]> rtime.felk.cvut.cz Git - sojka/lightdm.git/blobdiff - src/seat.c
Fix greeter being killing a started session once if a new authentication is started
[sojka/lightdm.git] / src / seat.c
index 6b3fa6d5fa5c19784f8fc178b63c1bab0a41052f..8d53f875c6f7759c668c396a4360d9cea6bddf7f 100644 (file)
@@ -1177,7 +1177,7 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
     /* Get the session to use */
     if (greeter_get_guest_authenticated (greeter))
     {
-        session = create_guest_session (seat, session_name);
+        session = g_object_ref (create_guest_session (seat, session_name));
         if (!session)
             return FALSE;
         session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
@@ -1190,7 +1190,7 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
         gchar *sessions_dir = NULL;
         gchar **argv;
 
-        session = greeter_get_authentication_session (greeter);
+        session = greeter_take_authentication_session (greeter);
 
         /* Get session command to run */
         switch (type)
@@ -1234,7 +1234,7 @@ greeter_start_session_cb (Greeter *greeter, SessionType type, const gchar *sessi
 
     /* Switch to this session when it is ready */
     g_clear_object (&seat->priv->session_to_activate);
-    seat->priv->session_to_activate = g_object_ref (session);
+    seat->priv->session_to_activate = session;
 
     /* Return to existing session if it is open */
     username = session_get_username (session);
@@ -1887,7 +1887,7 @@ seat_real_create_greeter_session (Seat *seat)
 static Session *
 create_session_cb (Greeter *greeter, Seat *seat)
 {
-    return create_session (seat, FALSE);
+    return g_object_ref (create_session (seat, FALSE));
 }
 
 static Greeter *