]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Set -sharevts for X servers not on seat0
authorRobert Ancell <robert.ancell@canonical.com>
Wed, 27 Aug 2014 04:49:04 +0000 (16:49 +1200)
committerRobert Ancell <robert.ancell@canonical.com>
Wed, 27 Aug 2014 04:49:04 +0000 (16:49 +1200)
src/seat-xlocal.c
src/x-server-local.c
src/x-server-local.h
tests/scripts/multi-seat.conf
tests/src/X.c

index ea38dd3486a8af42dbd8e978cbd8b9e4890fd84e..e0bd08e7d97620a0d135eba40b275d4c55c88b1b 100644 (file)
@@ -196,6 +196,8 @@ create_x_server (Seat *seat)
         x_server_local_set_layout (x_server, layout);
 
     x_server_local_set_xdg_seat (x_server, seat_get_name (seat));
+    if (strcmp (seat_get_name (seat), "seat0") != 0)
+        x_server_local_set_sharevts (x_server, TRUE);
 
     config_file = seat_get_string_property (seat, "xserver-config");
     if (config_file)
index 9d5b2d156efaf8b0294d0a3b19869a9ad6902aac..d908f2adb611f4abc3995404d2a3d7952380a18c 100644 (file)
@@ -40,6 +40,9 @@ struct XServerLocalPrivate
     /* Value for -seat argument */
     gchar *xdg_seat;
 
+    /* TRUE if should share VT with other X server */
+    gboolean sharevts;
+
     /* TRUE if TCP/IP connections are allowed */
     gboolean allow_tcp;
 
@@ -215,6 +218,13 @@ x_server_local_set_xdg_seat (XServerLocal *server, const gchar *xdg_seat)
     server->priv->xdg_seat = g_strdup (xdg_seat);
 }
 
+void
+x_server_local_set_sharevts (XServerLocal *server, gboolean sharevts)
+{
+    g_return_if_fail (server != NULL);
+    server->priv->sharevts = sharevts;
+}
+
 void
 x_server_local_set_allow_tcp (XServerLocal *server, gboolean allow_tcp)
 {
@@ -463,6 +473,9 @@ x_server_local_start (DisplayServer *display_server)
     if (server->priv->xdg_seat)
         g_string_append_printf (command, " -seat %s", server->priv->xdg_seat);
 
+    if (server->priv->sharevts)
+        g_string_append (command, " -sharevts");
+
     write_authority_file (server);
     if (server->priv->authority_file)
         g_string_append_printf (command, " -auth %s", server->priv->authority_file);
index 297d4a1d4d351c10982f12fe166c7f398f38a632..1dca023580e1c6254d8a4dca53de1208695310d8 100644 (file)
@@ -51,6 +51,8 @@ void x_server_local_set_layout (XServerLocal *server, const gchar *layout);
 
 void x_server_local_set_xdg_seat (XServerLocal *server, const gchar *xdg_seat);
 
+void x_server_local_set_sharevts (XServerLocal *server, gboolean sharevts);
+
 void x_server_local_set_allow_tcp (XServerLocal *server, gboolean allow_tcp);
 
 void x_server_local_set_xdmcp_server (XServerLocal *server, const gchar *hostname);
index 1589d2b1f388e575eafdefa59796521c330d68f9..219393b5fe29ce8cdd5a189884c1433de7320233 100644 (file)
@@ -21,7 +21,7 @@
 #?*ADD-SEAT ID=seat1
 
 # seat1 starts
-#?XSERVER-1 START SEAT=seat1
+#?XSERVER-1 START SEAT=seat1 SHAREVTS=TRUE
 #?*XSERVER-1 INDICATE-READY
 #?XSERVER-1 INDICATE-READY
 #?XSERVER-1 ACCEPT-CONNECT
index 308f2b1118fa3a58438e323e24a148dfec61f8c0..606fb12d82ad82d4c6ef3912b9ae34a125dd5d53 100644 (file)
@@ -205,6 +205,7 @@ main (int argc, char **argv)
     gchar *seat = NULL;
     gchar *mir_id = NULL;
     gchar *lock_filename;
+    gboolean sharevts = FALSE;
     int lock_file;
     GString *status_text;
 
@@ -276,6 +277,10 @@ main (int argc, char **argv)
             seat = argv[i+1];
             i++;
         }
+        else if (strcmp (arg, "-sharevts") == 0)
+        {
+            sharevts = TRUE;
+        }
         else if (strcmp (arg, "-mir") == 0)
         {
             mir_id = argv[i+1];
@@ -298,6 +303,7 @@ main (int argc, char **argv)
                         "-broadcast             Broadcast for XDMCP\n"
                         "-port port-num         UDP port number to send messages to\n"
                         "-seat string           seat to run on\n"
+                        "-sharevts              share VTs with another X server\n"
                         "-mir id                Mir ID to use\n"
                         "-mirSocket name        Mir socket to use\n"
                         "vtxx                   Use virtual terminal xx instead of the next available\n",
@@ -320,6 +326,8 @@ main (int argc, char **argv)
         g_string_append_printf (status_text, " VT=%d", vt_number);
     if (seat != NULL)
         g_string_append_printf (status_text, " SEAT=%s", seat);
+    if (sharevts)
+        g_string_append (status_text, " SHAREVTS=TRUE");
     if (mir_id != NULL)
         g_string_append_printf (status_text, " MIR-ID=%s", mir_id);
     status_notify ("%s", status_text->str);