]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Make start-local-sessions a property of seats, not display servers
authorRobert Ancell <robert.ancell@canonical.com>
Wed, 24 Jul 2013 03:54:05 +0000 (15:54 +1200)
committerRobert Ancell <robert.ancell@canonical.com>
Wed, 24 Jul 2013 03:54:05 +0000 (15:54 +1200)
src/display-server.c
src/display-server.h
src/seat-unity.c
src/seat.c
src/seat.h
src/x-server-local.c

index 318c9a0bbfe070b27dd1a06ab04cb8bef9cfa937..8afc973de63b229f76932781b0532b8db2e4cdee 100644 (file)
@@ -25,9 +25,6 @@ struct DisplayServerPrivate
     /* Unique name for this display server */
     gchar *name;
 
-    /* TRUE if sessions should be automatically started on this display server */
-    gboolean start_local_sessions;
-
     /* TRUE when being stopped */
     gboolean stopping;
 
@@ -64,20 +61,6 @@ display_server_real_get_vt (DisplayServer *server)
     return -1;
 }
 
-void
-display_server_set_start_local_sessions (DisplayServer *server, gboolean start_local_sessions)
-{
-    g_return_if_fail (server != NULL);
-    server->priv->start_local_sessions = start_local_sessions;
-}
-
-gboolean
-display_server_get_start_local_sessions (DisplayServer *server)
-{
-    g_return_val_if_fail (server != NULL, FALSE);
-    return server->priv->start_local_sessions;
-}
-
 gboolean
 display_server_start (DisplayServer *server)
 {
@@ -121,7 +104,6 @@ static void
 display_server_init (DisplayServer *server)
 {
     server->priv = G_TYPE_INSTANCE_GET_PRIVATE (server, DISPLAY_SERVER_TYPE, DisplayServerPrivate);
-    server->priv->start_local_sessions = TRUE;
 }
 
 static void
index f6e86ca9470c41c7fbe6f34141e19ca792e4f8a9..dbd8a67be0a3bfc2d810251e7ea93befd0288e1b 100644 (file)
@@ -49,10 +49,6 @@ const gchar *display_server_get_name (DisplayServer *server);
 
 gint display_server_get_vt (DisplayServer *server);
 
-void display_server_set_start_local_sessions (DisplayServer *server, gboolean start_local_sessions);
-
-gboolean display_server_get_start_local_sessions (DisplayServer *server);
-
 gboolean display_server_start (DisplayServer *server);
 
 void display_server_stop (DisplayServer *server);
index a2abf3496a40c61149327c2207cd910e76c1d35c..3e18735f2fb79bb236bcf617cb5811246482d3ca 100644 (file)
@@ -79,6 +79,12 @@ struct SeatUnityPrivate
 
 G_DEFINE_TYPE (SeatUnity, seat_unity, SEAT_TYPE);
 
+static gboolean
+seat_unity_get_start_local_sessions (Seat *seat)
+{
+    return !seat_get_string_property (seat, "xdmcp-manager");
+}
+
 static void
 seat_unity_setup (Seat *seat)
 {
@@ -620,6 +626,7 @@ seat_unity_class_init (SeatUnityClass *klass)
     SeatClass *seat_class = SEAT_CLASS (klass);
 
     object_class->finalize = seat_unity_finalize;
+    seat_class->get_start_local_sessions = seat_unity_get_start_local_sessions;
     seat_class->setup = seat_unity_setup;
     seat_class->start = seat_unity_start;
     seat_class->create_display_server = seat_unity_create_display_server;
index 815f7898017f4c47c38da375178610aa3ed63fb8..40b7f871e402bedc1d6f27ec8885455d8fd6ffdc 100644 (file)
@@ -300,6 +300,12 @@ check_stopped (Seat *seat)
     }
 }
 
+static gboolean
+get_start_local_sessions (Seat *seat)
+{
+    return SEAT_GET_CLASS (seat)->get_start_local_sessions (seat);
+}
+
 static void
 display_server_stopped_cb (DisplayServer *display_server, Seat *seat)
 {
@@ -343,7 +349,7 @@ display_server_stopped_cb (DisplayServer *display_server, Seat *seat)
     }
     g_list_free_full (list, g_object_unref);
 
-    if (!seat->priv->stopping && display_server_get_start_local_sessions (display_server))
+    if (!seat->priv->stopping && get_start_local_sessions (seat))
     {
         /* If we were the active session, switch to a greeter */
         active_session = seat_get_active_session (seat);
@@ -1002,7 +1008,7 @@ display_server_ready_cb (DisplayServer *display_server, Seat *seat)
     }
 
     /* Stop if don't need to run a session */
-    if (!display_server_get_start_local_sessions (display_server))
+    if (!get_start_local_sessions (seat))
         return;
 
     emit_upstart_signal ("login-session-start");
@@ -1237,6 +1243,12 @@ seat_get_is_stopping (Seat *seat)
     return seat->priv->stopping;
 }
 
+static gboolean
+seat_real_get_start_local_sessions (Seat *seat)
+{
+    return TRUE;
+}
+
 static void
 seat_real_setup (Seat *seat)
 {
@@ -1257,7 +1269,7 @@ seat_real_start (Seat *seat)
     display_server = create_display_server (seat);
 
     /* If this display server doesn't have a session running on it, just start it */
-    if (!display_server_get_start_local_sessions (display_server))
+    if (!get_start_local_sessions (seat))
         return display_server_start (display_server);
 
     /* Get autologin settings */
@@ -1429,6 +1441,7 @@ seat_class_init (SeatClass *klass)
 {
     GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
+    klass->get_start_local_sessions = seat_real_get_start_local_sessions;
     klass->setup = seat_real_setup;
     klass->start = seat_real_start;
     klass->set_active_session = seat_real_set_active_session;
index 81289654016b204a3fad1a0fa39ea3ba4ab763ff..1e53abcf09232dcaa0aa72a532361c7d4565f537 100644 (file)
@@ -37,6 +37,7 @@ typedef struct
 {
     GObjectClass parent_class;
 
+    gboolean (*get_start_local_sessions) (Seat *seat);
     void (*setup)(Seat *seat);
     gboolean (*start)(Seat *seat);
     DisplayServer *(*create_display_server) (Seat *seat);
index 8c45a850d1986d13d51cb9431a94b5811338c1aa..c475ec30a65e2795d02f1c07c87ecc6669d402a1 100644 (file)
@@ -227,7 +227,6 @@ x_server_local_set_xdmcp_server (XServerLocal *server, const gchar *hostname)
     g_return_if_fail (server != NULL);
     g_free (server->priv->xdmcp_server);
     server->priv->xdmcp_server = g_strdup (hostname);
-    display_server_set_start_local_sessions (DISPLAY_SERVER (server), hostname == NULL);
 }
 
 const gchar *