summaryrefslogtreecommitdiff
path: root/src/lightdm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lightdm.c')
-rw-r--r--src/lightdm.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/lightdm.c b/src/lightdm.c
index 0ad438f6..5f1af7d3 100644
--- a/src/lightdm.c
+++ b/src/lightdm.c
@@ -45,7 +45,9 @@ static gboolean debug = FALSE;
static DisplayManager *display_manager = NULL;
static DisplayManagerService *display_manager_service = NULL;
static XDMCPServer *xdmcp_server = NULL;
+static guint xdmcp_client_count = 0;
static VNCServer *vnc_server = NULL;
+static guint vnc_client_count = 0;
static gint exit_code = EXIT_SUCCESS;
static gboolean update_login1_seat (Login1Seat *login1_seat);
@@ -200,12 +202,19 @@ display_manager_stopped_cb (DisplayManager *display_manager)
static Seat *
create_seat (const gchar *module_name, const gchar *name)
{
+ Seat *seat;
+
if (strcmp (module_name, "xlocal") == 0) {
g_warning ("Seat type 'xlocal' is deprecated, use 'type=local' instead");
- return seat_new ("local", name);
+ module_name = "local";
}
- else
- return seat_new (module_name, name);
+
+ seat = seat_new (module_name);
+ if (!seat)
+ return NULL;
+
+ seat_set_name (seat, name);
+ return seat;
}
static Seat *
@@ -293,8 +302,14 @@ xdmcp_session_cb (XDMCPServer *server, XDMCPSession *session)
{
SeatXDMCPSession *seat;
gboolean result;
+ gchar *name;
+
+ name = g_strdup_printf ("xdmcp%d", xdmcp_client_count);
+ xdmcp_client_count++;
seat = seat_xdmcp_session_new (session);
+ seat_set_name (SEAT (seat), name);
+ g_free (name);
set_seat_properties (SEAT (seat), NULL);
result = display_manager_add_seat (display_manager, SEAT (seat));
g_object_unref (seat);
@@ -306,8 +321,14 @@ static void
vnc_connection_cb (VNCServer *server, GSocket *connection)
{
SeatXVNC *seat;
+ gchar *name;
+
+ name = g_strdup_printf ("vnc%d", vnc_client_count);
+ vnc_client_count++;
seat = seat_xvnc_new (connection);
+ seat_set_name (SEAT (seat), name);
+ g_free (name);
set_seat_properties (SEAT (seat), NULL);
display_manager_add_seat (display_manager, SEAT (seat));
g_object_unref (seat);