]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Merge from trunk
authorMichael Terry <michael.terry@canonical.com>
Sun, 25 Aug 2013 20:35:45 +0000 (16:35 -0400)
committerMichael Terry <michael.terry@canonical.com>
Sun, 25 Aug 2013 20:35:45 +0000 (16:35 -0400)
1  2 
src/greeter.c
src/seat-unity.c
src/seat-xlocal.c
src/seat-xremote.c
src/seat.c
src/seat.h

diff --cc src/greeter.c
Simple merge
index 8b216ced011bf9752e2d7c6d4755334c1e90e72f,7de61a4269336130ea09b1fa4c56ded25ca015c9..c4b76293d3bfc90df9fec0d0b6483fc399719721
@@@ -522,12 -534,15 +535,15 @@@ seat_unity_create_greeter_session (Sea
  }
  
  static Session *
 -seat_unity_create_session (Seat *seat)
 +seat_unity_create_session (Seat *seat, Session *user_session)
  {
      Session *session;
+     const gchar *xdg_seat;
  
 -    session = SEAT_CLASS (seat_unity_parent_class)->create_session (seat);
 +    session = SEAT_CLASS (seat_unity_parent_class)->create_session (seat, user_session);
-     session_set_env (session, "XDG_SEAT", "seat0");
+     xdg_seat = "seat0";
+     l_debug (seat, "Setting XDG_SEAT=%s", xdg_seat);
+     session_set_env (session, "XDG_SEAT", xdg_seat);
      if (!SEAT_UNITY (seat)->priv->use_vt_switching)
      {
          gchar *value = g_strdup_printf ("%d", SEAT_UNITY (seat)->priv->vt);
index 24e777f74259e17297c7c55a62b3ded401b9c8c4,7b626de8354df244c7f3474b4fe5d14b70070fc6..2cdf0496b21f3c3efff298e86bf15e8f430f3309
@@@ -174,12 -177,15 +177,15 @@@ seat_xlocal_create_greeter_session (Sea
  }
  
  static Session *
 -seat_xlocal_create_session (Seat *seat)
 +seat_xlocal_create_session (Seat *seat, Session *user_session)
  {
      Session *session;
+     const gchar *xdg_seat;
  
 -    session = SEAT_CLASS (seat_xlocal_parent_class)->create_session (seat);
 +    session = SEAT_CLASS (seat_xlocal_parent_class)->create_session (seat, user_session);
-     session_set_env (SESSION (session), "XDG_SEAT", "seat0");
+     xdg_seat = "seat0";
+     l_debug (seat, "Setting XDG_SEAT=%s", xdg_seat);
+     session_set_env (SESSION (session), "XDG_SEAT", xdg_seat);
  
      return session;
  }
index aad670263d8972c6bfaf4b759596e0e66fd7472b,05b25e0cbfb3748fdd5173ecb5436539f4a3fda6..a30bfffb6f565de6abc25dc3f628008eab6d535e
@@@ -61,12 -64,15 +64,15 @@@ seat_xremote_create_greeter_session (Se
  }
  
  static Session *
 -seat_xremote_create_session (Seat *seat)
 +seat_xremote_create_session (Seat *seat, Session *user_session)
  {
      Session *session;
+     const gchar *xdg_seat;
  
 -    session = SEAT_CLASS (seat_xremote_parent_class)->create_session (seat);
 +    session = SEAT_CLASS (seat_xremote_parent_class)->create_session (seat, user_session);
-     session_set_env (SESSION (session), "XDG_SEAT", "seat0");
+     xdg_seat = "seat0";
+     l_debug (seat, "Setting XDG_SEAT=%s", xdg_seat);
+     session_set_env (SESSION (session), "XDG_SEAT", xdg_seat);
  
      return session;
  }
diff --cc src/seat.c
index 39d77cb1dacf63b1acde8dabf91eeac53c0d02f8,a2555b88844e4b652fb750cd3c4f8a7c0d1b7bf5..4744799d0536baf9ce178d72c1e5d8c25305f04a
@@@ -519,22 -512,6 +522,22 @@@ find_user_session (Seat *seat, const gc
      return NULL;
  }
  
-     session = find_user_session (seat, greeter_get_active_username (greeter));
 +static void
 +greeter_active_username_changed_cb (Greeter *greeter, GParamSpec *pspec, Seat *seat)
 +{
 +    Session *session;
 +
++    session = find_user_session (seat, greeter_get_active_username (greeter), seat->priv->active_session);
 +    if (session)
 +    {
 +        if (seat->priv->next_session)
 +            g_object_unref (seat->priv->next_session);
 +        seat->priv->next_session = g_object_ref (session);
 +
 +        SEAT_GET_CLASS (seat)->set_next_session (seat, session);
 +    }
 +}
 +
  static void
  session_authentication_complete_cb (Session *session, Seat *seat)
  {
@@@ -710,13 -694,11 +725,13 @@@ set_session_env (Session *session
  }
  
  static Session *
 -create_session (Seat *seat, gboolean autostart)
 +create_session (Seat *seat, gboolean autostart, const gchar *username)
  {
      Session *session;
 +    Session *user_session;
  
-     user_session = find_user_session (seat, username);
 -    session = SEAT_GET_CLASS (seat)->create_session (seat);
++    user_session = find_user_session (seat, username, NULL);
 +    session = SEAT_GET_CLASS (seat)->create_session (seat, user_session);
      seat->priv->sessions = g_list_append (seat->priv->sessions, session);
      if (autostart)
          g_signal_connect (session, "authentication-complete", G_CALLBACK (session_authentication_complete_cb), seat);
@@@ -829,7 -811,7 +844,7 @@@ create_user_session (Seat *seat, const 
          const gchar *desktop_name;
          gchar **argv;
  
-         session = create_session (seat, TRUE, username);
 -        session = create_session (seat, autostart);
++        session = create_session (seat, autostart, username);
          session_set_session_type (session, session_config_get_session_type (session_config));
          session_set_env (session, "DESKTOP_SESSION", session_name);
          session_set_env (session, "GDMSESSION", session_name);
diff --cc src/seat.h
Simple merge