]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Merge with trunk
authorRobert Ancell <robert.ancell@canonical.com>
Wed, 24 Jul 2013 05:58:34 +0000 (17:58 +1200)
committerRobert Ancell <robert.ancell@canonical.com>
Wed, 24 Jul 2013 05:58:34 +0000 (17:58 +1200)
1  2 
src/seat.c
tests/src/Makefile.am

diff --combined src/seat.c
index 41e57c889b4b3bc050b8244c8032d0939008f3b3,36cf7f09faf3eb21e5e834ec8a921b62b4b6654f..6362fefa1d1ff2294e45fb0bb74f8e4e5242ff48
@@@ -70,7 -70,7 +70,7 @@@ typedef struc
  static GHashTable *seat_modules = NULL;
  
  // FIXME: Make a get_display_server() that re-uses display servers if supported
 -static DisplayServer *create_display_server (Seat *seat);
 +static DisplayServer *create_display_server (Seat *seat, const gchar *session_type);
  static Greeter *create_greeter_session (Seat *seat);
  static void start_session (Seat *seat, Session *session);
  
@@@ -384,7 -384,7 +384,7 @@@ switch_to_greeter_from_failed_session (
      {
          DisplayServer *display_server;
  
 -        display_server = create_display_server (seat);
 +        display_server = create_display_server (seat, session_get_session_type (session));
          if (!display_server_start (display_server))
          {
              g_debug ("Failed to start display server for greeter");
@@@ -717,7 -717,6 +717,7 @@@ create_user_session (Seat *seat, const 
          gchar **argv;
  
          session = create_session (seat, TRUE);
 +        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);
          if (language && language[0] != '\0')
      else
          g_debug ("Can't find session '%s'", seat_get_string_property (seat, "user-session"));
  
      g_object_unref (user);
  
      return session;
@@@ -759,7 -759,6 +760,7 @@@ create_guest_session (Seat *seat
      }
  
      session = create_session (seat, TRUE);
 +    session_set_session_type (session, session_config_get_session_type (session_config));
      session_set_do_authenticate (session, TRUE);
      session_set_is_guest (session, TRUE);
      argv = get_session_argv (session_config, seat_get_string_property (seat, "session-wrapper"));
@@@ -776,7 -775,6 +777,7 @@@ greeter_create_session_cb (Greeter *gre
      Session *session;
  
      session = create_session (seat, FALSE);
 +    session_set_session_type (session, session_get_session_type (SESSION (greeter)));
      session_set_display_server (session, session_get_display_server (SESSION (greeter)));
  
      return g_object_ref (session);
@@@ -916,7 -914,7 +917,7 @@@ greeter_start_session_cb (Greeter *gree
      {
          DisplayServer *display_server;
  
 -        display_server = create_display_server (seat);
 +        display_server = create_display_server (seat, session_get_session_type (session));
          if (!display_server_start (display_server))
              return FALSE;
  
@@@ -952,7 -950,6 +953,7 @@@ create_greeter_session (Seat *seat
      }
  
      greeter_session = SEAT_GET_CLASS (seat)->create_greeter_session (seat);
 +    session_set_session_type (SESSION (greeter_session), session_config_get_session_type (session_config));
      seat->priv->sessions = g_list_append (seat->priv->sessions, SESSION (greeter_session));
      g_signal_connect (greeter_session, "authentication-complete", G_CALLBACK (session_authentication_complete_cb), seat);
      g_signal_connect (greeter_session, "stopped", G_CALLBACK (session_stopped_cb), seat);
@@@ -1042,11 -1039,11 +1043,11 @@@ display_server_ready_cb (DisplayServer 
  }
  
  static DisplayServer *
 -create_display_server (Seat *seat)
 +create_display_server (Seat *seat, const gchar *session_type)
  {
      DisplayServer *display_server;
  
 -    display_server = SEAT_GET_CLASS (seat)->create_display_server (seat);
 +    display_server = SEAT_GET_CLASS (seat)->create_display_server (seat, session_type);
      seat->priv->display_servers = g_list_append (seat->priv->display_servers, display_server);
      g_signal_connect (display_server, "ready", G_CALLBACK (display_server_ready_cb), seat);
      g_signal_connect (display_server, "stopped", G_CALLBACK (display_server_stopped_cb), seat);
@@@ -1094,7 -1091,7 +1095,7 @@@ seat_switch_to_greeter (Seat *seat
          g_object_unref (seat->priv->session_to_activate);
      seat->priv->session_to_activate = g_object_ref (greeter_session);
  
 -    display_server = create_display_server (seat);
 +    display_server = create_display_server (seat, session_get_session_type (SESSION (greeter_session)));
      session_set_display_server (SESSION (greeter_session), display_server);
      if (!display_server_start (display_server))
          return FALSE;
@@@ -1132,7 -1129,7 +1133,7 @@@ seat_switch_to_user (Seat *seat, const 
      seat->priv->session_to_activate = g_object_ref (session);
      session_set_pam_service (session, USER_SERVICE);
  
 -    display_server = create_display_server (seat);
 +    display_server = create_display_server (seat, session_get_session_type (session));
      session_set_display_server (session, display_server);
      if (!display_server_start (display_server))
          return FALSE;
@@@ -1175,14 -1172,13 +1176,14 @@@ seat_switch_to_guest (Seat *seat, cons
          return TRUE;
      }
  
 -    display_server = create_display_server (seat);
 -    if (!display_server_start (display_server))
 -        return FALSE;
 -
      session = create_guest_session (seat);
      if (!session)
          return FALSE;
 +
 +    display_server = create_display_server (seat, session_get_session_type (session));
 +    if (!display_server_start (display_server))
 +        return FALSE;
 +
      if (seat->priv->session_to_activate)
          g_object_unref (seat->priv->session_to_activate);
      seat->priv->session_to_activate = g_object_ref (session);
@@@ -1214,14 -1210,11 +1215,14 @@@ seat_lock (Seat *seat, const gchar *use
          return TRUE;
      }
  
 -    display_server = create_display_server (seat);
 +    greeter_session = create_greeter_session (seat);
 +    if (!greeter_session)
 +        return FALSE;
 +
 +    display_server = create_display_server (seat, session_get_session_type (SESSION (greeter_session)));
      if (!display_server_start (display_server))
          return FALSE;
  
 -    greeter_session = create_greeter_session (seat);
      if (seat->priv->session_to_activate)
          g_object_unref (seat->priv->session_to_activate);
      seat->priv->session_to_activate = g_object_ref (greeter_session);
@@@ -1271,17 -1264,16 +1272,17 @@@ seat_real_start (Seat *seat
      int autologin_timeout;
      gboolean autologin_guest;
      gboolean autologin_in_background;
 -    Session *session = NULL;
 +    Session *session = NULL, *background_session = NULL;
      DisplayServer *display_server;
  
      g_debug ("Starting seat");
  
 -    display_server = create_display_server (seat);
 -
      /* If this display server doesn't have a session running on it, just start it */
      if (!get_start_local_sessions (seat))
 +    {
 +        display_server = create_display_server (seat, "x"); // FIXME: Not necessarily an X seat, but not sure what to put here
          return display_server_start (display_server);
 +    }
  
      /* Get autologin settings */
      autologin_username = seat_get_string_property (seat, "autologin-user");
          /* Load in background if required */
          if (autologin_in_background && session)
          {
 -            DisplayServer *background_display_server;
 -
 -            background_display_server = create_display_server (seat);
 -            session_set_display_server (session, background_display_server);
 -            if (!display_server_start (background_display_server))
 -                return FALSE;
 -
 -            /* Start a greeter as well */
 +            background_session = session;
              session = NULL;
          }
      }
          return FALSE;
      }
  
 +    display_server = create_display_server (seat, session_get_session_type (session));
 +    if (!display_server)
 +        return FALSE;
 +
      /* Start display server to show session on */
      session_set_display_server (session, display_server);
      if (!display_server_start (display_server))
          return FALSE;
  
 +    /* Start background session */
 +    if (background_session)
 +    {
 +        DisplayServer *background_display_server;
 +
 +        background_display_server = create_display_server (seat, session_get_session_type (background_session));
 +        session_set_display_server (background_session, background_display_server);
 +        if (!display_server_start (background_display_server))
 +            g_warning ("Failed to start display server for background session");
 +    }
 +
      return TRUE;
  }
  
 +static Greeter *
 +seat_real_create_greeter_session (Seat *seat)
 +{
 +    return greeter_new ();
 +}
 +
 +static Session *
 +seat_real_create_session (Seat *seat)
 +{
 +    return session_new ();
 +}
 +
  static void
  seat_real_set_active_session (Seat *seat, Session *session)
  {
@@@ -1475,8 -1447,6 +1476,8 @@@ seat_class_init (SeatClass *klass
      klass->get_start_local_sessions = seat_real_get_start_local_sessions;
      klass->setup = seat_real_setup;
      klass->start = seat_real_start;
 +    klass->create_greeter_session = seat_real_create_greeter_session;
 +    klass->create_session = seat_real_create_session;
      klass->set_active_session = seat_real_set_active_session;
      klass->get_active_session = seat_real_get_active_session;
      klass->run_script = seat_real_run_script;
diff --combined tests/src/Makefile.am
index 7d17cba349e5b7a8a061bb476feb0a806de5524b,9c1b4911c67166341f1581aef8759789a32b48f3..733e6b6f9735a7228c73f782adb752b63314e14a
@@@ -3,7 -3,6 +3,7 @@@ noinst_PROGRAMS = dbus-env 
                    plymouth \
                    test-gobject-greeter \
                    test-greeter-wrapper \
 +                  test-mir-greeter \
                    test-runner \
                    test-script-hook \
                    test-session \
@@@ -16,7 -15,7 +16,7 @@@ dist_noinst_SCRIPTS = lightdm-session 
                        test-python-greeter
  noinst_LTLIBRARIES = libsystem.la
  
- libsystem_la_SOURCES = libsystem.c
+ libsystem_la_SOURCES = libsystem.c status.c status.h
  libsystem_la_CFLAGS = \
        $(GLIB_CFLAGS) \
        $(GIO_UNIX_CFLAGS) \
@@@ -108,19 -107,7 +108,19 @@@ test_gobject_greeter_LDADD = 
        -llightdm-gobject-1 \
        $(GLIB_LIBS) \
        $(GIO_UNIX_LIBS) \
 -      $(XCB_LIBS)    
 +      $(XCB_LIBS)
 +
 +test_mir_greeter_SOURCES = test-mir-greeter.c status.c status.h
 +test_mir_greeter_CFLAGS = \
 +      -I$(top_srcdir)/liblightdm-gobject \
 +      $(WARN_CFLAGS) \
 +      $(GLIB_CFLAGS) \
 +      $(GIO_UNIX_CFLAGS)
 +test_mir_greeter_LDADD = \
 +      -L$(top_builddir)/liblightdm-gobject \
 +      -llightdm-gobject-1 \
 +      $(GLIB_LIBS) \
 +      $(GIO_UNIX_LIBS)
  
  guest_account_SOURCES = guest-account.c status.c status.h
  guest_account_CFLAGS = \