Approved by Robert Ancell, PS Jenkins bot.
static void
display_server_class_init (DisplayServerClass *klass)
{
+ klass->get_can_share = display_server_real_get_can_share;
klass->get_vt = display_server_real_get_vt;
klass->start = display_server_real_start;
- klass->setup_session = display_server_real_setup_session;
+ klass->connect_session = display_server_real_connect_session;
+ klass->disconnect_session = display_server_real_disconnect_session;
klass->stop = display_server_real_stop;
g_type_class_add_private (klass, sizeof (DisplayServerPrivate));
void (*ready)(DisplayServer *server);
void (*stopped)(DisplayServer *server);
+ gboolean (*get_can_share)(DisplayServer *server);
gint (*get_vt)(DisplayServer *server);
gboolean (*start)(DisplayServer *server);
- void (*setup_session)(DisplayServer *server, Session *session);
+ void (*connect_session)(DisplayServer *server, Session *session);
+ void (*disconnect_session)(DisplayServer *server, Session *session);
void (*stop)(DisplayServer *server);
} DisplayServerClass;
}
/* If can re-use the display server, stop the greeter first */
- if (seat->priv->share_display_server)
+ display_server = session_get_display_server (SESSION (greeter));
+ if (can_share_display_server (seat, display_server))
{
+ g_debug ("Stopping greeter; display server will be re-used for user session");
+
/* Run on the same display server after the greeter has stopped */
- session_set_display_server (session, session_get_display_server (SESSION (greeter)));
+ session_set_display_server (session, display_server);
- g_debug ("Stopping greeter");
+ /* Stop the greeter */
session_stop (SESSION (greeter));
return TRUE;
GObjectClass *object_class = G_OBJECT_CLASS (klass);
DisplayServerClass *display_server_class = DISPLAY_SERVER_CLASS (klass);
+ display_server_class->get_can_share = x_server_get_can_share;
display_server_class->start = x_server_start;
- display_server_class->setup_session = x_server_setup_session;
+ display_server_class->connect_session = x_server_connect_session;
+ display_server_class->disconnect_session = x_server_disconnect_session;
object_class->finalize = x_server_finalize;
g_type_class_add_private (klass, sizeof (XServerPrivate));