/* 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;
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)
{
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
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);
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)
{
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;
}
}
+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)
{
}
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);
}
/* 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");
return seat->priv->stopping;
}
+static gboolean
+seat_real_get_start_local_sessions (Seat *seat)
+{
+ return TRUE;
+}
+
static void
seat_real_setup (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 */
{
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;
{
GObjectClass parent_class;
+ gboolean (*get_start_local_sessions) (Seat *seat);
void (*setup)(Seat *seat);
gboolean (*start)(Seat *seat);
DisplayServer *(*create_display_server) (Seat *seat);
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 *