r25133 - in /desktop/unstable/gdm3/debian: TODO changelog control control.in gdm3.install patches/11_xephyr_nested.patch patches/19_configure_xserver.patch patches/20_endsession_respawn.patch patches/22_noconsole.patch patches/series

joss at users.alioth.debian.org joss at users.alioth.debian.org
Thu Sep 16 22:43:48 UTC 2010


Author: joss
Date: Thu Sep 16 22:43:47 2010
New Revision: 25133

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=25133
Log:
* 11_xephyr_nested.patch: re-enabled.
  + Updated to apply cleanly.
  + Modified to not affect the logic of 19_configure_xserver.patch.
  + Handle the upgrade situation, where the IsNested method does not 
    exist on the daemon yet.
  + Don’t pass a vtX argument to nested servers.
  + Start the nested server with an authorization that is accessible 
    to the user that launches it. Add another authorization for 
    Debian-gdm later. The implication is that the parent user has 
    access to the nested display. Which is, well, completely 
    unimportant since it already owns the server process.
  + Set GDM_PARENT_{DISPLAY,XAUTHORITY} so that the keymap is set in 
    the nested display as well.
* Install the gdmflexiserver-xnest.desktop file.
* Recommend x11-xkb-utils for xkbcomp.
* 19_configure_xserver.patch:
  + Updated to apply cleanly.
  + Add the ability to configure the nested X server command.
* 20_endsession_respawn.patch: don’t respawn nested X servers.
* 22_noconsole.patch: refreshed.

Modified:
    desktop/unstable/gdm3/debian/TODO
    desktop/unstable/gdm3/debian/changelog
    desktop/unstable/gdm3/debian/control
    desktop/unstable/gdm3/debian/control.in
    desktop/unstable/gdm3/debian/gdm3.install
    desktop/unstable/gdm3/debian/patches/11_xephyr_nested.patch
    desktop/unstable/gdm3/debian/patches/19_configure_xserver.patch
    desktop/unstable/gdm3/debian/patches/20_endsession_respawn.patch
    desktop/unstable/gdm3/debian/patches/22_noconsole.patch
    desktop/unstable/gdm3/debian/patches/series

Modified: desktop/unstable/gdm3/debian/TODO
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/TODO?rev=25133&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/TODO [utf-8] (original)
+++ desktop/unstable/gdm3/debian/TODO [utf-8] Thu Sep 16 22:43:47 2010
@@ -1,7 +1,5 @@
-The current Xephyr patch is not usable and is disabled:
- * It is *completely* insecure - anyone can connect to the Xephyr 
-   server.
- * The greeter always selects the US keyboard by default.
+The current Xephyr patch still has some drawbacks.
+ * The greeter always selects the US keyboard by default, despite having 
+   code that sets the variables and scripts that should do the right 
+   thing.
  * It proposes to reboot/shutdown instead of having an exit button.
- * Closing the Xnest window doesn’t clean it up in the GDM internal 
-   status.

Modified: desktop/unstable/gdm3/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/changelog?rev=25133&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/changelog [utf-8] (original)
+++ desktop/unstable/gdm3/debian/changelog [utf-8] Thu Sep 16 22:43:47 2010
@@ -6,6 +6,26 @@
     Add to that a stripping of ::ffff: from IPv4 mapped addresses, since 
     this is not understood in $DISPLAY.
     Closes: #579033.
+  * 11_xephyr_nested.patch: re-enabled.
+    + Updated to apply cleanly.
+    + Modified to not affect the logic of 19_configure_xserver.patch.
+    + Handle the upgrade situation, where the IsNested method does not 
+      exist on the daemon yet.
+    + Don’t pass a vtX argument to nested servers.
+    + Start the nested server with an authorization that is accessible 
+      to the user that launches it. Add another authorization for 
+      Debian-gdm later. The implication is that the parent user has 
+      access to the nested display. Which is, well, completely 
+      unimportant since it already owns the server process.
+    + Set GDM_PARENT_{DISPLAY,XAUTHORITY} so that the keymap is set in 
+      the nested display as well.
+  * Install the gdmflexiserver-xnest.desktop file.
+  * Recommend x11-xkb-utils for xkbcomp.
+  * 19_configure_xserver.patch:
+    + Updated to apply cleanly.
+    + Add the ability to configure the nested X server command.
+  * 20_endsession_respawn.patch: don’t respawn nested X servers.
+  * 22_noconsole.patch: refreshed.
   * 14_pam_dialog.patch: show messages from PAM in a dialog so that the 
     user can actually see them.
 

Modified: desktop/unstable/gdm3/debian/control
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/control?rev=25133&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/control [utf-8] (original)
+++ desktop/unstable/gdm3/debian/control [utf-8] Thu Sep 16 22:43:47 2010
@@ -61,6 +61,7 @@
          gconf2 (>= 2.26.2-3)
 Recommends: zenity,
             xserver-xephyr | xnest,
+            x11-xkb-utils,
             xserver-xorg,
             at-spi,
             gnome-power-manager (>= 2.28),

Modified: desktop/unstable/gdm3/debian/control.in
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/control.in?rev=25133&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/control.in [utf-8] (original)
+++ desktop/unstable/gdm3/debian/control.in [utf-8] Thu Sep 16 22:43:47 2010
@@ -56,6 +56,7 @@
          gconf2 (>= 2.26.2-3)
 Recommends: zenity,
             xserver-xephyr | xnest,
+            x11-xkb-utils,
             xserver-xorg,
             at-spi,
             gnome-power-manager (>= 2.28),

Modified: desktop/unstable/gdm3/debian/gdm3.install
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/gdm3.install?rev=25133&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/gdm3.install [utf-8] (original)
+++ desktop/unstable/gdm3/debian/gdm3.install [utf-8] Thu Sep 16 22:43:47 2010
@@ -2,7 +2,7 @@
 debian/moreblue-orbit-gdm.svg           usr/share/images/desktop-base
 debian/gdmXnestWrapper                  usr/share/gdm/
 debian/greeter.gconf-defaults		etc/gdm3
-debian/gdmflexiserver.desktop		usr/share/gdm/applications
+debian/gdmflexiserver*.desktop		usr/share/gdm/applications
 debian/gdmflexiserver.svg		usr/share/icons/hicolor/scalable/apps
 debian/gdm-xnest.svg                    usr/share/icons/hicolor/scalable/apps
 debian/gdmsetup.svg                     usr/share/icons/hicolor/scalable/apps

Modified: desktop/unstable/gdm3/debian/patches/11_xephyr_nested.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/11_xephyr_nested.patch?rev=25133&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/patches/11_xephyr_nested.patch [utf-8] (original)
+++ desktop/unstable/gdm3/debian/patches/11_xephyr_nested.patch [utf-8] Thu Sep 16 22:43:47 2010
@@ -1,17 +1,18 @@
 Debian: add CreateNestedDisplay(parent_display_id) dbus method.
-Index: gdm-2.30.0/daemon/gdm-display.c
+Index: gdm-2.30.5/daemon/gdm-display.c
 ===================================================================
---- gdm-2.30.0.orig/daemon/gdm-display.c	2010-04-21 19:32:53.785691730 +0200
-+++ gdm-2.30.0/daemon/gdm-display.c	2010-04-21 19:32:59.133691945 +0200
-@@ -52,6 +52,7 @@ struct GdmDisplayPrivate
+--- gdm-2.30.5.orig/daemon/gdm-display.c	2010-09-16 23:24:30.995561430 +0200
++++ gdm-2.30.5/daemon/gdm-display.c	2010-09-16 23:24:33.031566835 +0200
+@@ -52,6 +52,8 @@ struct GdmDisplayPrivate
  {
          char                 *id;
          char                 *seat_id;
 +        GdmDisplay           *parent_display;
++        char                 *parent_display_username;
  
          char                 *remote_hostname;
          int                   x11_display_number;
-@@ -66,6 +67,7 @@ struct GdmDisplayPrivate
+@@ -66,6 +68,7 @@ struct GdmDisplayPrivate
          GdmDisplayAccessFile *access_file;
  
          gboolean              is_local;
@@ -19,11 +20,12 @@
          guint                 finish_idle_id;
  
          GdmSlaveProxy        *slave_proxy;
-@@ -78,12 +80,14 @@ enum {
+@@ -78,12 +81,15 @@ enum {
          PROP_ID,
          PROP_STATUS,
          PROP_SEAT_ID,
 +        PROP_PARENT_DISPLAY,
++        PROP_PARENT_DISPLAY_USERNAME,
          PROP_REMOTE_HOSTNAME,
          PROP_X11_DISPLAY_NUMBER,
          PROP_X11_DISPLAY_NAME,
@@ -34,7 +36,26 @@
          PROP_SLAVE_COMMAND,
  };
  
-@@ -275,6 +279,33 @@ gdm_display_add_user_authorization (GdmD
+@@ -159,12 +165,17 @@ gdm_display_real_create_authority (GdmDi
+         GdmDisplayAccessFile *access_file;
+         GError               *error;
+         gboolean              res;
++        char                 *username;
+ 
+         g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
+         g_return_val_if_fail (display->priv->access_file == NULL, FALSE);
+ 
+         error = NULL;
+-        access_file = _create_access_file_for_user (display, GDM_USERNAME, &error);
++        if (display->priv->is_nested && display->priv->parent_display_username)
++                username = display->priv->parent_display_username;
++        else
++                username = GDM_USERNAME;
++        access_file = _create_access_file_for_user (display, username, &error);
+ 
+         if (access_file == NULL) {
+                 g_critical ("could not create display access file: %s", error->message);
+@@ -275,6 +286,33 @@ gdm_display_add_user_authorization (GdmD
          return ret;
  }
  
@@ -68,7 +89,7 @@
  static gboolean
  gdm_display_real_set_slave_bus_name (GdmDisplay *display,
                                       const char *name,
-@@ -742,6 +773,24 @@ gdm_display_get_id (GdmDisplay         *
+@@ -742,6 +780,24 @@ gdm_display_get_id (GdmDisplay         *
  }
  
  gboolean
@@ -93,7 +114,7 @@
  gdm_display_get_x11_display_name (GdmDisplay   *display,
                                    char        **x11_display,
                                    GError      **error)
-@@ -769,6 +818,20 @@ gdm_display_is_local (GdmDisplay *displa
+@@ -769,6 +825,20 @@ gdm_display_is_local (GdmDisplay *displa
          return TRUE;
  }
  
@@ -114,7 +135,7 @@
  static void
  _gdm_display_set_id (GdmDisplay     *display,
                       const char     *id)
-@@ -786,6 +849,18 @@ _gdm_display_set_seat_id (GdmDisplay
+@@ -786,6 +856,26 @@ _gdm_display_set_seat_id (GdmDisplay
  }
  
  static void
@@ -127,13 +148,21 @@
 +        display->priv->parent_display = parent_display;
 +        if (parent_display != NULL)
 +                g_object_add_weak_pointer (display, &display->priv->parent_display);
++}
++
++static void
++_gdm_display_set_parent_display_username (GdmDisplay     *display,
++                                          const char     *username)
++{
++        g_free (display->priv->parent_display_username);
++        display->priv->parent_display_username = g_strdup (username);
 +}
 +
 +static void
  _gdm_display_set_remote_hostname (GdmDisplay     *display,
                                    const char     *hostname)
  {
-@@ -824,6 +899,13 @@ _gdm_display_set_is_local (GdmDisplay
+@@ -824,6 +914,13 @@ _gdm_display_set_is_local (GdmDisplay
  }
  
  static void
@@ -147,17 +176,20 @@
  _gdm_display_set_slave_command (GdmDisplay     *display,
                                  const char     *command)
  {
-@@ -845,6 +927,9 @@ gdm_display_set_property (GObject
+@@ -845,6 +942,12 @@ gdm_display_set_property (GObject
          case PROP_ID:
                  _gdm_display_set_id (self, g_value_get_string (value));
                  break;
 +        case PROP_PARENT_DISPLAY:
 +                _gdm_display_set_parent_display (self, g_value_get_object (value));
 +                break;
++        case PROP_PARENT_DISPLAY_USERNAME:
++                _gdm_display_set_parent_display_username (self, g_value_get_string (value));
++                break;
          case PROP_STATUS:
                  _gdm_display_set_status (self, g_value_get_int (value));
                  break;
-@@ -866,6 +951,9 @@ gdm_display_set_property (GObject
+@@ -866,6 +969,9 @@ gdm_display_set_property (GObject
          case PROP_IS_LOCAL:
                  _gdm_display_set_is_local (self, g_value_get_boolean (value));
                  break;
@@ -167,17 +199,20 @@
          case PROP_SLAVE_COMMAND:
                  _gdm_display_set_slave_command (self, g_value_get_string (value));
                  break;
-@@ -889,6 +977,9 @@ gdm_display_get_property (GObject
+@@ -889,6 +995,12 @@ gdm_display_get_property (GObject
          case PROP_ID:
                  g_value_set_string (value, self->priv->id);
                  break;
 +        case PROP_PARENT_DISPLAY:
 +                g_value_set_object (value, self->priv->parent_display);
 +                break;
++        case PROP_PARENT_DISPLAY_USERNAME:
++                g_value_set_string (value, self->priv->parent_display_username);
++                break;
          case PROP_STATUS:
                  g_value_set_int (value, self->priv->status);
                  break;
-@@ -914,6 +1005,9 @@ gdm_display_get_property (GObject
+@@ -914,6 +1026,9 @@ gdm_display_get_property (GObject
          case PROP_IS_LOCAL:
                  g_value_set_boolean (value, self->priv->is_local);
                  break;
@@ -187,7 +222,7 @@
          case PROP_SLAVE_COMMAND:
                  g_value_set_string (value, self->priv->slave_command);
                  break;
-@@ -979,6 +1073,11 @@ gdm_display_dispose (GObject *object)
+@@ -979,6 +1094,11 @@ gdm_display_dispose (GObject *object)
  
          g_debug ("GdmDisplay: Disposing display");
  
@@ -199,7 +234,7 @@
          if (display->priv->finish_idle_id > 0) {
                  g_source_remove (display->priv->finish_idle_id);
                  display->priv->finish_idle_id = 0;
-@@ -1032,6 +1131,15 @@ gdm_display_class_init (GdmDisplayClass
+@@ -1032,6 +1152,23 @@ gdm_display_class_init (GdmDisplayClass
                                                                "id",
                                                                NULL,
                                                                G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
@@ -212,10 +247,18 @@
 +                                                              GDM_TYPE_DISPLAY,
 +                                                              G_PARAM_READWRITE));
 +
++        g_object_class_install_property (object_class,
++                                         PROP_PARENT_DISPLAY_USERNAME,
++                                         g_param_spec_string ("parent-display-username",
++                                                              "parent display username",
++                                                              "parent display username",
++                                                              NULL,
++                                                              G_PARAM_READWRITE));
++
          g_object_class_install_property (object_class,
                                           PROP_REMOTE_HOSTNAME,
                                           g_param_spec_string ("remote-hostname",
-@@ -1086,6 +1194,14 @@ gdm_display_class_init (GdmDisplayClass
+@@ -1086,6 +1223,14 @@ gdm_display_class_init (GdmDisplayClass
                                                                 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
  
          g_object_class_install_property (object_class,
@@ -230,21 +273,22 @@
                                           PROP_SLAVE_COMMAND,
                                           g_param_spec_string ("slave-command",
                                                                "slave command",
-@@ -1137,6 +1253,10 @@ gdm_display_finalize (GObject *object)
+@@ -1137,6 +1282,11 @@ gdm_display_finalize (GObject *object)
          g_free (display->priv->x11_cookie);
          g_free (display->priv->slave_command);
  
 +        if (display->priv->parent_display != NULL) {
 +                g_object_remove_weak_pointer (display->priv->parent_display, &display->priv->parent_display);
 +        }
++        g_free (display->priv->parent_display_username);
 +
          if (display->priv->access_file != NULL) {
                  g_object_unref (display->priv->access_file);
          }
-Index: gdm-2.30.0/daemon/gdm-display.h
+Index: gdm-2.30.5/daemon/gdm-display.h
 ===================================================================
---- gdm-2.30.0.orig/daemon/gdm-display.h	2010-04-21 19:32:53.773689506 +0200
-+++ gdm-2.30.0/daemon/gdm-display.h	2010-04-21 19:32:59.133691945 +0200
+--- gdm-2.30.5.orig/daemon/gdm-display.h	2010-09-16 23:24:30.983561161 +0200
++++ gdm-2.30.5/daemon/gdm-display.h	2010-09-16 23:24:33.031566835 +0200
 @@ -102,6 +102,9 @@ gboolean            gdm_display_unmanage
  gboolean            gdm_display_get_id                         (GdmDisplay *display,
                                                                  char      **id,
@@ -276,10 +320,10 @@
  gboolean            gdm_display_set_slave_bus_name             (GdmDisplay *display,
                                                                  const char *name,
                                                                  GError    **error);
-Index: gdm-2.30.0/daemon/gdm-local-display-factory.c
+Index: gdm-2.30.5/daemon/gdm-local-display-factory.c
 ===================================================================
---- gdm-2.30.0.orig/daemon/gdm-local-display-factory.c	2010-04-21 19:32:53.761689237 +0200
-+++ gdm-2.30.0/daemon/gdm-local-display-factory.c	2010-04-21 19:32:59.133691945 +0200
+--- gdm-2.30.5.orig/daemon/gdm-local-display-factory.c	2010-09-16 23:24:30.971561870 +0200
++++ gdm-2.30.5/daemon/gdm-local-display-factory.c	2010-09-16 23:24:33.031566835 +0200
 @@ -22,6 +22,8 @@
  
  #include <stdlib.h>
@@ -289,7 +333,7 @@
  
  #include <glib.h>
  #include <glib/gi18n.h>
-@@ -274,6 +276,131 @@ gdm_local_display_factory_create_product
+@@ -274,6 +276,132 @@ gdm_local_display_factory_create_product
  
          return ret;
  }
@@ -384,6 +428,7 @@
 +        g_object_set (display,
 +                      "seat-id", CK_SEAT1_PATH,
 +                      "parent-display", parent_display,
++                      "parent-display-username", parent_username,
 +                      "is-nested", TRUE,
 +                      NULL);
 +
@@ -421,10 +466,10 @@
  
  static void
  on_static_display_status_changed (GdmDisplay             *display,
-Index: gdm-2.30.0/daemon/gdm-local-display-factory.h
+Index: gdm-2.30.5/daemon/gdm-local-display-factory.h
 ===================================================================
---- gdm-2.30.0.orig/daemon/gdm-local-display-factory.h	2010-04-21 19:32:53.749689457 +0200
-+++ gdm-2.30.0/daemon/gdm-local-display-factory.h	2010-04-21 19:32:59.133691945 +0200
+--- gdm-2.30.5.orig/daemon/gdm-local-display-factory.h	2010-09-16 23:24:30.959563557 +0200
++++ gdm-2.30.5/daemon/gdm-local-display-factory.h	2010-09-16 23:24:33.031566835 +0200
 @@ -65,6 +65,10 @@ gboolean                   gdm_local_dis
                                                                                 char                  **id,
                                                                                 GError                **error);
@@ -436,10 +481,10 @@
  gboolean                   gdm_local_display_factory_create_product_display   (GdmLocalDisplayFactory *factory,
                                                                                 const char             *parent_display_id,
                                                                                 const char             *relay_address,
-Index: gdm-2.30.0/daemon/gdm-local-display-factory.xml
+Index: gdm-2.30.5/daemon/gdm-local-display-factory.xml
 ===================================================================
---- gdm-2.30.0.orig/daemon/gdm-local-display-factory.xml	2010-04-21 19:32:53.737689677 +0200
-+++ gdm-2.30.0/daemon/gdm-local-display-factory.xml	2010-04-21 19:32:59.137689590 +0200
+--- gdm-2.30.5.orig/daemon/gdm-local-display-factory.xml	2010-09-16 23:24:30.947561821 +0200
++++ gdm-2.30.5/daemon/gdm-local-display-factory.xml	2010-09-16 23:24:33.031566835 +0200
 @@ -9,5 +9,10 @@
      <method name="CreateTransientDisplay">
        <arg name="id" direction="out" type="o"/>
@@ -451,21 +496,21 @@
 +    </method>
    </interface>
  </node>
-Index: gdm-2.30.0/daemon/gdm-simple-slave.c
+Index: gdm-2.30.5/daemon/gdm-simple-slave.c
 ===================================================================
---- gdm-2.30.0.orig/daemon/gdm-simple-slave.c	2010-04-21 19:32:53.725694786 +0200
-+++ gdm-2.30.0/daemon/gdm-simple-slave.c	2010-04-21 19:32:59.137689590 +0200
-@@ -1043,6 +1043,9 @@ static gboolean
+--- gdm-2.30.5.orig/daemon/gdm-simple-slave.c	2010-09-16 23:24:30.935560574 +0200
++++ gdm-2.30.5/daemon/gdm-simple-slave.c	2010-09-16 23:24:33.031566835 +0200
+@@ -1051,6 +1051,9 @@ static gboolean
  idle_connect_to_display (GdmSimpleSlave *slave)
  {
          gboolean res;
-+        gboolean display_is_nested;
++        gboolean display_is_nested = FALSE;
 +
 +        g_object_get (slave, "display-is-nested", &display_is_nested, NULL);
  
          slave->priv->connection_attempts++;
  
-@@ -1053,7 +1056,8 @@ idle_connect_to_display (GdmSimpleSlave
+@@ -1061,7 +1064,8 @@ idle_connect_to_display (GdmSimpleSlave
  
                  /* FIXME: handle wait-for-go */
  
@@ -475,7 +520,7 @@
  
                  delay = 0;
                  enabled = FALSE;
-@@ -1109,12 +1113,20 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
+@@ -1119,12 +1123,20 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
  {
          char    *display_name;
          char    *auth_file;
@@ -496,7 +541,7 @@
                        NULL);
  
          /* if this is local display start a server if one doesn't
-@@ -1133,6 +1145,16 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
+@@ -1143,6 +1155,16 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
                                        NULL);
                  }
  
@@ -513,11 +558,11 @@
                  g_signal_connect (slave->priv->server,
                                    "exited",
                                    G_CALLBACK (on_server_exited),
-Index: gdm-2.30.0/daemon/gdm-slave.c
+Index: gdm-2.30.5/daemon/gdm-slave.c
 ===================================================================
---- gdm-2.30.0.orig/daemon/gdm-slave.c	2010-04-21 19:32:53.701695226 +0200
-+++ gdm-2.30.0/daemon/gdm-slave.c	2010-04-21 19:32:59.137689590 +0200
-@@ -78,31 +78,41 @@ struct GdmSlavePrivate
+--- gdm-2.30.5.orig/daemon/gdm-slave.c	2010-09-16 23:24:30.903567677 +0200
++++ gdm-2.30.5/daemon/gdm-slave.c	2010-09-16 23:28:58.811560929 +0200
+@@ -81,32 +81,42 @@ struct GdmSlavePrivate
  
          /* cached display values */
          char            *display_id;
@@ -532,6 +577,7 @@
          char            *display_x11_authority_file;
 -        char            *parent_display_name;
 -        char            *parent_display_x11_authority_file;
+         char            *windowpath;
  
          GArray          *display_x11_cookie;
  
@@ -562,18 +608,48 @@
  };
  
  enum {
-@@ -378,6 +388,10 @@ gdm_slave_connect_to_x11_display (GdmSla
+@@ -215,13 +225,12 @@ get_script_environment (GdmSlave   *slav
+                 }
+         }
+ 
+-#if 0
+-        if (display_is_parented) {
+-                g_hash_table_insert (hash, g_strdup ("GDM_PARENT_DISPLAY"), g_strdup (parent_display_name));
+-
+-                /*g_hash_table_insert (hash, "GDM_PARENT_XAUTHORITY"), slave->priv->parent_temp_auth_file));*/
++        if (slave->priv->display_is_nested) {
++                g_hash_table_insert (hash, g_strdup ("GDM_PARENT_DISPLAY"),
++                                     g_strdup (slave->priv->parent_display_name));
++                g_hash_table_insert (hash, g_strdup("GDM_PARENT_XAUTHORITY"),
++                                     g_strdup(slave->priv->parent_display_user_auth_file));
+         }
+-#endif
+ 
+         /* some env for use with the Pre and Post scripts */
+         temp = g_strconcat (slave->priv->display_name, ".Xservers", NULL);
+@@ -481,9 +490,21 @@ gdm_slave_connect_to_x11_display (GdmSla
  
          g_debug ("GdmSlave: Server is ready - opening display %s", slave->priv->display_name);
+ 
++        /* Nested displays are started with authorization for the parent
++         * user only. Add the GDM user. */
++        if (slave->priv->display_is_nested)
++                {
++                        g_free (slave->priv->display_x11_authority_file);
++                        gdm_slave_add_user_authorization (slave, GDM_USERNAME, &slave->priv->display_x11_authority_file);
++                }
++
+         g_setenv ("DISPLAY", slave->priv->display_name, TRUE);
+         g_setenv ("XAUTHORITY", slave->priv->display_x11_authority_file, TRUE);
  
 +        /* don't let root connect to nested displays */
 +        if (slave->priv->display_is_nested)
 +                return TRUE;
 +
-         g_setenv ("DISPLAY", slave->priv->display_name, TRUE);
-         g_setenv ("XAUTHORITY", slave->priv->display_x11_authority_file, TRUE);
- 
-@@ -446,6 +460,15 @@ display_proxy_destroyed_cb (DBusGProxy *
+         sigemptyset (&mask);
+         sigaddset (&mask, SIGCHLD);
+         sigprocmask (SIG_BLOCK, &mask, &omask);
+@@ -540,6 +561,15 @@ display_proxy_destroyed_cb (DBusGProxy *
          slave->priv->display_proxy = NULL;
  }
  
@@ -589,7 +665,7 @@
  static gboolean
  gdm_slave_set_slave_bus_name (GdmSlave *slave)
  {
-@@ -480,11 +503,13 @@ gdm_slave_real_start (GdmSlave *slave)
+@@ -574,11 +604,13 @@ gdm_slave_real_start (GdmSlave *slave)
  {
          gboolean res;
          char    *id;
@@ -603,7 +679,7 @@
  
          g_debug ("GdmSlave: Creating proxy for %s", slave->priv->display_id);
          error = NULL;
-@@ -539,6 +564,134 @@ gdm_slave_real_start (GdmSlave *slave)
+@@ -633,6 +665,135 @@ gdm_slave_real_start (GdmSlave *slave)
          /* cache some values up front */
          error = NULL;
          res = dbus_g_proxy_call (slave->priv->display_proxy,
@@ -620,7 +696,8 @@
 +                        g_warning ("Failed to get value");
 +                }
 +
-+                return FALSE;
++                /* Ignore errors, they can be caused by upgrades */
++                slave->priv->display_is_nested = FALSE;
 +        }
 +
 +        if (slave->priv->display_is_nested) {
@@ -738,7 +815,16 @@
                                   "IsLocal",
                                   &error,
                                   G_TYPE_INVALID,
-@@ -1284,6 +1437,14 @@ _gdm_slave_set_display_id (GdmSlave   *s
+@@ -857,6 +1018,8 @@ gdm_slave_add_user_authorization (GdmSla
+         }
+         g_free (filename);
+ 
++        if (slave->priv->display_is_nested)
++                return res;
+         /* Remove access for the programs run by slave and greeter now that the
+          * user session is starting.
+          */
+@@ -1405,6 +1568,14 @@ _gdm_slave_set_display_id (GdmSlave   *s
  }
  
  static void
@@ -753,7 +839,7 @@
  _gdm_slave_set_display_name (GdmSlave   *slave,
                               const char *name)
  {
-@@ -1330,6 +1491,37 @@ _gdm_slave_set_display_is_local (GdmSlav
+@@ -1451,6 +1622,37 @@ _gdm_slave_set_display_is_local (GdmSlav
  }
  
  static void
@@ -791,7 +877,7 @@
  gdm_slave_set_property (GObject      *object,
                          guint         prop_id,
                          const GValue *value,
-@@ -1343,6 +1535,9 @@ gdm_slave_set_property (GObject      *ob
+@@ -1464,6 +1666,9 @@ gdm_slave_set_property (GObject      *ob
          case PROP_DISPLAY_ID:
                  _gdm_slave_set_display_id (self, g_value_get_string (value));
                  break;
@@ -801,7 +887,7 @@
          case PROP_DISPLAY_NAME:
                  _gdm_slave_set_display_name (self, g_value_get_string (value));
                  break;
-@@ -1361,6 +1556,18 @@ gdm_slave_set_property (GObject      *ob
+@@ -1482,6 +1687,18 @@ gdm_slave_set_property (GObject      *ob
          case PROP_DISPLAY_IS_LOCAL:
                  _gdm_slave_set_display_is_local (self, g_value_get_boolean (value));
                  break;
@@ -820,7 +906,7 @@
          default:
                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                  break;
-@@ -1381,6 +1588,9 @@ gdm_slave_get_property (GObject    *obje
+@@ -1502,6 +1719,9 @@ gdm_slave_get_property (GObject    *obje
          case PROP_DISPLAY_ID:
                  g_value_set_string (value, self->priv->display_id);
                  break;
@@ -830,7 +916,7 @@
          case PROP_DISPLAY_NAME:
                  g_value_set_string (value, self->priv->display_name);
                  break;
-@@ -1399,6 +1609,18 @@ gdm_slave_get_property (GObject    *obje
+@@ -1520,6 +1740,18 @@ gdm_slave_get_property (GObject    *obje
          case PROP_DISPLAY_IS_LOCAL:
                  g_value_set_boolean (value, self->priv->display_is_local);
                  break;
@@ -849,7 +935,7 @@
          default:
                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                  break;
-@@ -1480,6 +1702,13 @@ gdm_slave_class_init (GdmSlaveClass *kla
+@@ -1601,6 +1833,13 @@ gdm_slave_class_init (GdmSlaveClass *kla
                                                                NULL,
                                                                G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
          g_object_class_install_property (object_class,
@@ -863,7 +949,7 @@
                                           PROP_DISPLAY_NAME,
                                           g_param_spec_string ("display-name",
                                                                "display name",
-@@ -1523,6 +1752,34 @@ gdm_slave_class_init (GdmSlaveClass *kla
+@@ -1644,6 +1883,34 @@ gdm_slave_class_init (GdmSlaveClass *kla
                                                                 "display is local",
                                                                 TRUE,
                                                                 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
@@ -898,19 +984,19 @@
  
          signals [STOPPED] =
                  g_signal_new ("stopped",
-@@ -1568,7 +1825,7 @@ gdm_slave_finalize (GObject *object)
+@@ -1689,7 +1956,7 @@ gdm_slave_finalize (GObject *object)
          g_free (slave->priv->display_seat_id);
          g_free (slave->priv->display_x11_authority_file);
          g_free (slave->priv->parent_display_name);
 -        g_free (slave->priv->parent_display_x11_authority_file);
 +        g_free (slave->priv->parent_display_user_auth_file);
-         g_array_free (slave->priv->display_x11_cookie, TRUE);
- 
-         G_OBJECT_CLASS (gdm_slave_parent_class)->finalize (object);
-Index: gdm-2.30.0/daemon/gdm-display.xml
+         g_free (slave->priv->windowpath);
+         if (slave->priv->display_x11_cookie != NULL) {
+                 g_array_free (slave->priv->display_x11_cookie, TRUE);
+Index: gdm-2.30.5/daemon/gdm-display.xml
 ===================================================================
---- gdm-2.30.0.orig/daemon/gdm-display.xml	2010-04-21 19:32:53.673698024 +0200
-+++ gdm-2.30.0/daemon/gdm-display.xml	2010-04-21 19:32:59.137689590 +0200
+--- gdm-2.30.5.orig/daemon/gdm-display.xml	2010-09-16 23:24:30.871566468 +0200
++++ gdm-2.30.5/daemon/gdm-display.xml	2010-09-16 23:24:33.035562524 +0200
 @@ -4,6 +4,9 @@
      <method name="GetId">
        <arg name="id" direction="out" type="o"/>
@@ -942,10 +1028,10 @@
      <method name="SetSlaveBusName">
        <arg name="name" direction="in" type="s"/>
      </method>
-Index: gdm-2.30.0/data/gdm.conf.in
+Index: gdm-2.30.5/data/gdm.conf.in
 ===================================================================
---- gdm-2.30.0.orig/data/gdm.conf.in	2010-04-21 19:32:53.617694821 +0200
-+++ gdm-2.30.0/data/gdm.conf.in	2010-04-21 19:32:59.137689590 +0200
+--- gdm-2.30.5.orig/data/gdm.conf.in	2010-09-16 23:24:30.784072453 +0200
++++ gdm-2.30.5/data/gdm.conf.in	2010-09-16 23:24:33.035562524 +0200
 @@ -62,10 +62,16 @@
      <allow send_destination="org.gnome.DisplayManager"
             send_interface="org.gnome.DisplayManager.Display"
@@ -963,11 +1049,19 @@
  
      <allow send_destination="org.gnome.DisplayManager"
             send_interface="org.gnome.DisplayManager.Manager"
-Index: gdm-2.30.0/daemon/gdm-server.c
+Index: gdm-2.30.5/daemon/gdm-server.c
 ===================================================================
---- gdm-2.30.0.orig/daemon/gdm-server.c	2010-04-21 19:32:53.645694465 +0200
-+++ gdm-2.30.0/daemon/gdm-server.c	2010-04-21 19:32:59.141689679 +0200
-@@ -79,11 +79,13 @@ struct GdmServerPrivate
+--- gdm-2.30.5.orig/daemon/gdm-server.c	2010-09-16 23:24:30.843565353 +0200
++++ gdm-2.30.5/daemon/gdm-server.c	2010-09-16 23:24:33.035562524 +0200
+@@ -70,6 +70,7 @@ extern char **environ;
+ struct GdmServerPrivate
+ {
+         char    *command;
++        char    *nested_command;
+         GPid     pid;
+ 
+         gboolean disable_tcp;
+@@ -83,11 +84,13 @@ struct GdmServerPrivate
          char    *auth_file;
  
          gboolean is_parented;
@@ -981,7 +1075,7 @@
  };
  
  enum {
-@@ -92,6 +94,7 @@ enum {
+@@ -96,6 +99,7 @@ enum {
          PROP_DISPLAY_DEVICE,
          PROP_AUTH_FILE,
          PROP_IS_PARENTED,
@@ -989,7 +1083,7 @@
          PROP_PARENT_DISPLAY_NAME,
          PROP_PARENT_AUTH_FILE,
          PROP_CHOSEN_HOSTNAME,
-@@ -169,9 +172,12 @@ gdm_server_get_display_device (GdmServer
+@@ -173,9 +177,12 @@ gdm_server_get_display_device (GdmServer
  static gboolean
  emit_ready_idle (GdmServer *server)
  {
@@ -1004,14 +1098,40 @@
          return FALSE;
  }
  
-@@ -657,7 +663,13 @@ gdm_server_spawn (GdmServer  *server,
+@@ -269,8 +276,15 @@ gdm_server_resolve_command_line (GdmServ
+         int      i;
+         gboolean gotvtarg = FALSE;
+         gboolean query_in_arglist = FALSE;
++        char    *command;
++
++        if (server->priv->is_nested) {
++                command = server->priv->nested_command;
++        } else {
++                command = server->priv->command;
++        }
+ 
+-        g_shell_parse_argv (server->priv->command, &argc, &argv, NULL);
++        g_shell_parse_argv (command, &argc, &argv, NULL);
+ 
+         for (len = 0; argv != NULL && argv[len] != NULL; len++) {
+                 char *arg = argv[len];
+@@ -658,7 +672,7 @@ gdm_server_spawn (GdmServer  *server,
+ 
+         if (! ret) {
+                 g_warning ("Could not start command '%s': %s",
+-                           server->priv->command,
++                           server->priv->is_nested ? server->priv->nested_command : server->priv->command,
+                            error->message);
+                 g_error_free (error);
+         }
+@@ -667,7 +681,13 @@ gdm_server_spawn (GdmServer  *server,
          g_ptr_array_foreach (env, (GFunc)g_free, NULL);
          g_ptr_array_free (env, TRUE);
  
 -        g_debug ("GdmServer: Started X server process %d - waiting for READY", (int)server->priv->pid);
 +        if (server->priv->is_nested) {
 +                // Xephyr doesn't send back any signal
-+                g_debug ("GdmServer: Started Xephyr server process %d", (int)server->priv->pid);
++                g_debug ("GdmServer: Started nested server process %d", (int)server->priv->pid);
 +                g_timeout_add (500, (GSourceFunc)emit_ready_idle, server);
 +        } else {
 +                g_debug ("GdmServer: Started X server process %d - waiting for READY", (int)server->priv->pid);
@@ -1019,7 +1139,20 @@
  
          server->priv->child_watch_id = g_child_watch_add (server->priv->pid,
                                                            (GChildWatchFunc)server_child_watch,
-@@ -947,6 +959,41 @@ _gdm_server_set_user_name (GdmServer  *s
+@@ -882,9 +902,10 @@ gboolean
+ gdm_server_start (GdmServer *server)
+ {
+         gboolean res;
+-        char *vtarg;
++        char *vtarg = NULL;
+ 
+-        vtarg = gdm_get_empty_vt_argument ();
++        if (!server->priv->is_nested)
++                vtarg = gdm_get_empty_vt_argument ();
+ 
+         /* fork X server process */
+         res = gdm_server_spawn (server, vtarg);
+@@ -971,6 +992,36 @@ _gdm_server_set_user_name (GdmServer  *s
  }
  
  static void
@@ -1050,18 +1183,13 @@
 +                           gboolean    is_nested)
 +{
 +        server->priv->is_nested = is_nested;
-+        g_free (server->priv->command);
-+        if (is_nested)
-+                server->priv->command = g_strdup (X_XNEST_CMD " " X_XNEST_CONFIG_OPTIONS " -br");
-+        else
-+                server->priv->command = g_strdup (X_SERVER " -br -verbose");
 +}
 +
 +static void
  _gdm_server_set_disable_tcp (GdmServer  *server,
                               gboolean    disabled)
  {
-@@ -973,9 +1020,21 @@ gdm_server_set_property (GObject      *o
+@@ -997,9 +1048,21 @@ gdm_server_set_property (GObject      *o
          case PROP_USER_NAME:
                  _gdm_server_set_user_name (self, g_value_get_string (value));
                  break;
@@ -1083,7 +1211,7 @@
          default:
                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                  break;
-@@ -1006,9 +1065,21 @@ gdm_server_get_property (GObject    *obj
+@@ -1030,9 +1093,21 @@ gdm_server_get_property (GObject    *obj
          case PROP_USER_NAME:
                  g_value_set_string (value, self->priv->user_name);
                  break;
@@ -1105,7 +1233,7 @@
          default:
                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                  break;
-@@ -1109,6 +1180,34 @@ gdm_server_class_init (GdmServerClass *k
+@@ -1133,6 +1208,34 @@ gdm_server_class_init (GdmServerClass *k
                                                                 NULL,
                                                                 TRUE,
                                                                 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
@@ -1140,18 +1268,28 @@
  
  }
  
-@@ -1121,6 +1220,7 @@ gdm_server_init (GdmServer *server)
+@@ -1144,7 +1247,9 @@ gdm_server_init (GdmServer *server)
+ 
          server->priv->pid = -1;
          server->priv->command = g_strdup (X_SERVER " -br -verbose");
++        server->priv->nested_command = g_strdup (X_XNEST_CMD " " X_XNEST_CONFIG_OPTIONS " -br")
          server->priv->log_dir = g_strdup (LOGDIR);
 +        server->priv->is_ready = FALSE;
  
          add_ready_handler (server);
  }
-Index: gdm-2.30.0/utils/gdmflexiserver.c
+@@ -1166,6 +1271,7 @@ gdm_server_finalize (GObject *object)
+         gdm_server_stop (server);
+ 
+         g_free (server->priv->command);
++        g_free (server->priv->nested_command);
+         g_free (server->priv->user_name);
+         g_free (server->priv->session_args);
+         g_free (server->priv->log_dir);
+Index: gdm-2.30.5/utils/gdmflexiserver.c
 ===================================================================
---- gdm-2.30.0.orig/utils/gdmflexiserver.c	2010-04-21 19:32:53.589693219 +0200
-+++ gdm-2.30.0/utils/gdmflexiserver.c	2010-04-21 19:42:06.625188517 +0200
+--- gdm-2.30.5.orig/utils/gdmflexiserver.c	2010-09-16 23:24:30.756069870 +0200
++++ gdm-2.30.5/utils/gdmflexiserver.c	2010-09-16 23:24:33.035562524 +0200
 @@ -34,6 +34,9 @@
  #include <dbus/dbus-glib-lowlevel.h>
  
@@ -1422,3 +1560,15 @@
                  maybe_lock_screen ();
          }
  
+Index: gdm-2.30.5/data/Init.in
+===================================================================
+--- gdm-2.30.5.orig/data/Init.in	2010-09-17 00:40:52.123567272 +0200
++++ gdm-2.30.5/data/Init.in	2010-09-17 00:42:07.767560905 +0200
+@@ -65,6 +65,7 @@ if [ "x$SETXKBMAP" != "x" ] ; then
+   # FIXME: is this all right?  Is this completely on crack?
+   # What this does is move the xkb configuration from the GDM_PARENT_DISPLAY
+   # FIXME: This should be done in code.  Or there must be an easier way ...
++  # FIXME: It just does not work, the keymap is not set.
+   if [ -n "$GDM_PARENT_DISPLAY" ]; then
+     XKBSETUP=`( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $SETXKBMAP -v )`
+     if [ -n "$XKBSETUP" ]; then

Modified: desktop/unstable/gdm3/debian/patches/19_configure_xserver.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/19_configure_xserver.patch?rev=25133&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/patches/19_configure_xserver.patch [utf-8] (original)
+++ desktop/unstable/gdm3/debian/patches/19_configure_xserver.patch [utf-8] Thu Sep 16 22:43:47 2010
@@ -1,22 +1,31 @@
 GNOME #586777
 
-Index: gdm-2.30.2/common/gdm-settings-keys.h
+Index: gdm-2.30.5/common/gdm-settings-keys.h
 ===================================================================
---- gdm-2.30.2.orig/common/gdm-settings-keys.h	2010-05-08 14:46:42.000000000 +0200
-+++ gdm-2.30.2/common/gdm-settings-keys.h	2010-05-08 14:49:12.457112035 +0200
-@@ -33,6 +33,7 @@ G_BEGIN_DECLS
+--- gdm-2.30.5.orig/common/gdm-settings-keys.h	2010-09-11 11:12:09.144142815 +0200
++++ gdm-2.30.5/common/gdm-settings-keys.h	2010-09-11 11:13:37.816147498 +0200
+@@ -33,6 +33,8 @@ G_BEGIN_DECLS
  #define GDM_KEY_TIMED_LOGIN_USER "daemon/TimedLogin"
  #define GDM_KEY_TIMED_LOGIN_DELAY "daemon/TimedLoginDelay"
  #define GDM_KEY_FIRST_VT "daemon/FirstVT"
 +#define GDM_KEY_LOCAL_XSERVER_COMMAND "daemon/LocalXserverCommand"
++#define GDM_KEY_NESTED_XSERVER_COMMAND "daemon/NestedXserverCommand"
  
  #define GDM_KEY_DEBUG "debug/Enable"
  
-Index: gdm-2.30.2/daemon/gdm-server.c
+Index: gdm-2.30.5/daemon/gdm-server.c
 ===================================================================
---- gdm-2.30.2.orig/daemon/gdm-server.c	2010-05-08 14:46:48.000000000 +0200
-+++ gdm-2.30.2/daemon/gdm-server.c	2010-05-08 14:50:14.433610793 +0200
-@@ -968,6 +968,14 @@ _gdm_server_set_disable_tcp (GdmServer
+--- gdm-2.30.5.orig/daemon/gdm-server.c	2010-09-11 11:13:07.040641299 +0200
++++ gdm-2.30.5/daemon/gdm-server.c	2010-09-11 11:13:55.032642229 +0200
+@@ -104,6 +104,7 @@ enum {
+         PROP_PARENT_AUTH_FILE,
+         PROP_CHOSEN_HOSTNAME,
+         PROP_COMMAND,
++        PROP_NESTED_COMMAND,
+         PROP_PRIORITY,
+         PROP_USER_NAME,
+         PROP_SESSION_ARGS,
+@@ -1028,6 +1029,22 @@ _gdm_server_set_disable_tcp (GdmServer
  }
  
  static void
@@ -28,64 +37,87 @@
 +}
 +
 +static void
++_gdm_server_set_nested_command (GdmServer  *server,
++                                const char *command)
++{
++        g_free (server->priv->nested_command);
++        server->priv->nested_command = g_strdup (command);
++}
++
++static void
  gdm_server_set_property (GObject      *object,
                           guint         prop_id,
                           const GValue *value,
-@@ -990,6 +998,9 @@ gdm_server_set_property (GObject      *o
-         case PROP_DISABLE_TCP:
-                 _gdm_server_set_disable_tcp (self, g_value_get_boolean (value));
+@@ -1062,6 +1079,12 @@ gdm_server_set_property (GObject      *o
+         case PROP_IS_NESTED:
+                 _gdm_server_set_is_nested (self, g_value_get_boolean (value));
                  break;
 +        case PROP_COMMAND:
 +                _gdm_server_set_command (self, g_value_get_string (value));
 +                break;
++        case PROP_NESTED_COMMAND:
++                _gdm_server_set_nested_command (self, g_value_get_string (value));
++                break;
          default:
                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                  break;
-@@ -1023,6 +1034,9 @@ gdm_server_get_property (GObject    *obj
-         case PROP_DISABLE_TCP:
-                 g_value_set_boolean (value, self->priv->disable_tcp);
+@@ -1107,6 +1130,12 @@ gdm_server_get_property (GObject    *obj
+         case PROP_IS_NESTED:
+                 g_value_set_boolean (value, self->priv->is_nested);
                  break;
 +        case PROP_COMMAND:
 +                g_value_set_string (value, self->priv->command);
 +                break;
++        case PROP_NESTED_COMMAND:
++                g_value_set_string (value, self->priv->nested_command);
++                break;
          default:
                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                  break;
-@@ -1123,6 +1137,13 @@ gdm_server_class_init (GdmServerClass *k
-                                                                NULL,
+@@ -1208,6 +1237,20 @@ gdm_server_class_init (GdmServerClass *k
                                                                 TRUE,
                                                                 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-+        g_object_class_install_property (object_class,
+         g_object_class_install_property (object_class,
 +                                         PROP_COMMAND,
 +                                         g_param_spec_string ("command",
 +                                                              "Server startup command",
 +                                                              "Server startup command",
 +                                                              NULL,
 +                                                              G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- 
- }
- 
-@@ -1133,7 +1154,6 @@ gdm_server_init (GdmServer *server)
++        g_object_class_install_property (object_class,
++                                         PROP_NESTED_COMMAND,
++                                         g_param_spec_string ("nested-command",
++                                                              "Nested server startup command",
++                                                              "Nested server startup command",
++                                                              NULL,
++                                                              G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
++        g_object_class_install_property (object_class,
+                                          PROP_IS_PARENTED,
+                                          g_param_spec_boolean ("is-parented",
+                                                                NULL,
+@@ -1245,8 +1288,6 @@ gdm_server_init (GdmServer *server)
          server->priv = GDM_SERVER_GET_PRIVATE (server);
  
          server->priv->pid = -1;
 -        server->priv->command = g_strdup (X_SERVER " -br -verbose");
+-        server->priv->nested_command = g_strdup (X_XNEST_CMD " " X_XNEST_CONFIG_OPTIONS " -br")
          server->priv->log_dir = g_strdup (LOGDIR);
+         server->priv->is_ready = FALSE;
  
-         add_ready_handler (server);
-@@ -1165,6 +1185,7 @@ gdm_server_new (const char *display_name
+@@ -1291,6 +1332,8 @@ gdm_server_new (const char *display_name
          GObject *object;
  
          object = g_object_new (GDM_TYPE_SERVER,
 +                               "command", X_SERVER " -br -verbose " X_CONFIG_OPTIONS,
++                               "nested-command", X_XNEST_CMD " -br " X_XNEST_CONFIG_OPTIONS,
                                 "display-name", display_name,
                                 "auth-file", auth_file,
                                 NULL);
-Index: gdm-2.30.2/daemon/gdm-simple-slave.c
+Index: gdm-2.30.5/daemon/gdm-simple-slave.c
 ===================================================================
---- gdm-2.30.2.orig/daemon/gdm-simple-slave.c	2010-05-08 14:46:45.000000000 +0200
-+++ gdm-2.30.2/daemon/gdm-simple-slave.c	2010-05-08 14:48:35.533613174 +0200
-@@ -1142,6 +1142,7 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
+--- gdm-2.30.5.orig/daemon/gdm-simple-slave.c	2010-09-11 11:13:37.784154115 +0200
++++ gdm-2.30.5/daemon/gdm-simple-slave.c	2010-09-11 11:13:37.816147498 +0200
+@@ -1162,6 +1162,7 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
          if (display_is_local) {
                  gboolean res;
                  gboolean disable_tcp;
@@ -93,7 +125,7 @@
  
                  slave->priv->server = gdm_server_new (display_name, auth_file);
  
-@@ -1153,6 +1154,17 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
+@@ -1183,6 +1184,28 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
                                        NULL);
                  }
  
@@ -108,14 +140,25 @@
 +                        g_free (server_command);
 +                }
 +
++                server_command = NULL;
++                if (gdm_settings_client_get_string (GDM_KEY_NESTED_XSERVER_COMMAND,
++                                                    &server_command) &&
++                    server_command != NULL &&
++                    server_command [0] != '\0') {
++                        g_object_set (slave->priv->server,
++                                      "nested-command", server_command,
++                                      NULL);
++                        g_free (server_command);
++                }
++
                  g_signal_connect (slave->priv->server,
                                    "exited",
                                    G_CALLBACK (on_server_exited),
-Index: gdm-2.30.2/data/gdm.schemas.in.in
+Index: gdm-2.30.5/data/gdm.schemas.in.in
 ===================================================================
---- gdm-2.30.2.orig/data/gdm.schemas.in.in	2010-05-08 14:46:42.000000000 +0200
-+++ gdm-2.30.2/data/gdm.schemas.in.in	2010-05-08 14:50:42.425611096 +0200
-@@ -23,6 +23,11 @@
+--- gdm-2.30.5.orig/data/gdm.schemas.in.in	2010-09-11 11:12:09.100142319 +0200
++++ gdm-2.30.5/data/gdm.schemas.in.in	2010-09-11 11:13:37.816147498 +0200
+@@ -23,6 +23,16 @@
        <default>@GDM_GROUPNAME@</default>
      </schema>
      <schema>
@@ -124,6 +167,11 @@
 +      <default>@X_SERVER@ -br -verbose @X_CONFIG_OPTIONS@</default>
 +    </schema>
 +    <schema>
++      <key>daemon/NestedXserverCommand</key>
++      <signature>s</signature>
++      <default>@X_XNEST_CMD@ -br @X_XNEST_CONFIG_OPTIONS@</default>
++    </schema>
++    <schema>
        <key>daemon/AutomaticLoginEnable</key>
        <signature>b</signature>
        <default>false</default>

Modified: desktop/unstable/gdm3/debian/patches/20_endsession_respawn.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/20_endsession_respawn.patch?rev=25133&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/patches/20_endsession_respawn.patch [utf-8] (original)
+++ desktop/unstable/gdm3/debian/patches/20_endsession_respawn.patch [utf-8] Thu Sep 16 22:43:47 2010
@@ -1,8 +1,8 @@
 Index: gdm-2.30.5/daemon/gdm-display.c
 ===================================================================
---- gdm-2.30.5.orig/daemon/gdm-display.c	2010-08-11 16:19:44.000000000 +0200
-+++ gdm-2.30.5/daemon/gdm-display.c	2010-09-05 19:44:01.988365617 +0200
-@@ -302,6 +302,32 @@ gdm_display_set_slave_bus_name (GdmDispl
+--- gdm-2.30.5.orig/daemon/gdm-display.c	2010-09-16 22:27:23.560059700 +0200
++++ gdm-2.30.5/daemon/gdm-display.c	2010-09-16 22:54:22.195561908 +0200
+@@ -340,6 +340,32 @@ gdm_display_set_slave_bus_name (GdmDispl
          return ret;
  }
  
@@ -35,7 +35,7 @@
  static void
  gdm_display_real_get_timed_login_details (GdmDisplay *display,
                                            gboolean   *enabledp,
-@@ -1019,6 +1045,7 @@ gdm_display_class_init (GdmDisplayClass
+@@ -1139,6 +1165,7 @@ gdm_display_class_init (GdmDisplayClass
          klass->add_user_authorization = gdm_display_real_add_user_authorization;
          klass->remove_user_authorization = gdm_display_real_remove_user_authorization;
          klass->set_slave_bus_name = gdm_display_real_set_slave_bus_name;
@@ -45,8 +45,8 @@
          klass->manage = gdm_display_real_manage;
 Index: gdm-2.30.5/daemon/gdm-display.h
 ===================================================================
---- gdm-2.30.5.orig/daemon/gdm-display.h	2010-08-11 16:19:44.000000000 +0200
-+++ gdm-2.30.5/daemon/gdm-display.h	2010-09-05 19:44:01.988365617 +0200
+--- gdm-2.30.5.orig/daemon/gdm-display.h	2010-09-16 22:02:43.851563101 +0200
++++ gdm-2.30.5/daemon/gdm-display.h	2010-09-16 22:54:22.195561908 +0200
 @@ -66,6 +66,9 @@ typedef struct
          gboolean (*set_slave_bus_name)        (GdmDisplay *display,
                                                 const char *name,
@@ -57,7 +57,7 @@
          gboolean (*prepare)                   (GdmDisplay *display);
          gboolean (*manage)                    (GdmDisplay *display);
          gboolean (*finish)                    (GdmDisplay *display);
-@@ -140,6 +143,9 @@ gboolean            gdm_display_remove_u
+@@ -150,6 +153,9 @@ gboolean            gdm_display_get_user
  gboolean            gdm_display_set_slave_bus_name             (GdmDisplay *display,
                                                                  const char *name,
                                                                  GError    **error);
@@ -69,9 +69,9 @@
  G_END_DECLS
 Index: gdm-2.30.5/daemon/gdm-display.xml
 ===================================================================
---- gdm-2.30.5.orig/daemon/gdm-display.xml	2010-08-11 16:19:44.000000000 +0200
-+++ gdm-2.30.5/daemon/gdm-display.xml	2010-09-05 19:44:01.988365617 +0200
-@@ -35,6 +35,9 @@
+--- gdm-2.30.5.orig/daemon/gdm-display.xml	2010-09-16 22:02:43.835561766 +0200
++++ gdm-2.30.5/daemon/gdm-display.xml	2010-09-16 22:54:22.195561908 +0200
+@@ -45,6 +45,9 @@
      <method name="SetSlaveBusName">
        <arg name="name" direction="in" type="s"/>
      </method>
@@ -83,8 +83,8 @@
        <arg name="username" direction="out" type="s"/>
 Index: gdm-2.30.5/daemon/gdm-simple-slave.c
 ===================================================================
---- gdm-2.30.5.orig/daemon/gdm-simple-slave.c	2010-09-05 19:43:55.564366756 +0200
-+++ gdm-2.30.5/daemon/gdm-simple-slave.c	2010-09-05 19:44:01.988365617 +0200
+--- gdm-2.30.5.orig/daemon/gdm-simple-slave.c	2010-09-16 22:54:22.159562081 +0200
++++ gdm-2.30.5/daemon/gdm-simple-slave.c	2010-09-16 22:54:22.195561908 +0200
 @@ -109,6 +109,9 @@ on_session_started (GdmSession       *se
  
          g_debug ("GdmSimpleSlave: session started %d", pid);
@@ -97,9 +97,9 @@
          if (username != NULL) {
 Index: gdm-2.30.5/daemon/gdm-slave.c
 ===================================================================
---- gdm-2.30.5.orig/daemon/gdm-slave.c	2010-08-11 19:40:07.000000000 +0200
-+++ gdm-2.30.5/daemon/gdm-slave.c	2010-09-05 19:44:01.996367261 +0200
-@@ -569,6 +569,33 @@ gdm_slave_set_slave_bus_name (GdmSlave *
+--- gdm-2.30.5.orig/daemon/gdm-slave.c	2010-09-16 22:44:44.356058833 +0200
++++ gdm-2.30.5/daemon/gdm-slave.c	2010-09-16 22:57:58.667559881 +0200
+@@ -600,6 +600,36 @@ gdm_slave_set_slave_bus_name (GdmSlave *
          return res;
  }
  
@@ -109,6 +109,9 @@
 +{
 +        gboolean    res;
 +        GError     *error;
++
++        /* Never, ever respawn a nested display */
++        respawn = FALSE;
 +
 +        error = NULL;
 +        res = dbus_g_proxy_call (slave->priv->display_proxy,
@@ -135,8 +138,8 @@
  {
 Index: gdm-2.30.5/daemon/gdm-slave.h
 ===================================================================
---- gdm-2.30.5.orig/daemon/gdm-slave.h	2010-08-11 16:19:44.000000000 +0200
-+++ gdm-2.30.5/daemon/gdm-slave.h	2010-09-05 19:44:01.996367261 +0200
+--- gdm-2.30.5.orig/daemon/gdm-slave.h	2010-09-16 22:02:43.795560871 +0200
++++ gdm-2.30.5/daemon/gdm-slave.h	2010-09-16 22:54:22.199561508 +0200
 @@ -72,6 +72,9 @@ gboolean            gdm_slave_add_user_a
  gboolean            gdm_slave_switch_to_user_session (GdmSlave   *slave,
                                                        const char *username);
@@ -149,8 +152,8 @@
  gboolean            gdm_slave_run_script             (GdmSlave   *slave,
 Index: gdm-2.30.5/daemon/gdm-transient-display.c
 ===================================================================
---- gdm-2.30.5.orig/daemon/gdm-transient-display.c	2010-08-11 16:19:44.000000000 +0200
-+++ gdm-2.30.5/daemon/gdm-transient-display.c	2010-09-05 19:44:01.996367261 +0200
+--- gdm-2.30.5.orig/daemon/gdm-transient-display.c	2010-09-16 22:02:43.783564024 +0200
++++ gdm-2.30.5/daemon/gdm-transient-display.c	2010-09-16 22:54:22.199561508 +0200
 @@ -45,7 +45,7 @@
  
  struct GdmTransientDisplayPrivate

Modified: desktop/unstable/gdm3/debian/patches/22_noconsole.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/22_noconsole.patch?rev=25133&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/patches/22_noconsole.patch [utf-8] (original)
+++ desktop/unstable/gdm3/debian/patches/22_noconsole.patch [utf-8] Thu Sep 16 22:43:47 2010
@@ -1,9 +1,9 @@
 GNOME #567522
 
-Index: gdm-2.30.2/common/gdm-settings-keys.h
+Index: gdm-2.30.5/common/gdm-settings-keys.h
 ===================================================================
---- gdm-2.30.2.orig/common/gdm-settings-keys.h	2010-05-08 14:49:12.457112035 +0200
-+++ gdm-2.30.2/common/gdm-settings-keys.h	2010-05-08 14:57:27.285109455 +0200
+--- gdm-2.30.5.orig/common/gdm-settings-keys.h	2010-09-11 11:08:59.512645923 +0200
++++ gdm-2.30.5/common/gdm-settings-keys.h	2010-09-11 11:09:00.848642546 +0200
 @@ -32,6 +32,7 @@ G_BEGIN_DECLS
  #define GDM_KEY_TIMED_LOGIN_ENABLE "daemon/TimedLoginEnable"
  #define GDM_KEY_TIMED_LOGIN_USER "daemon/TimedLogin"
@@ -11,11 +11,11 @@
 +#define GDM_KEY_NO_CONSOLE "daemon/NoConsole"
  #define GDM_KEY_FIRST_VT "daemon/FirstVT"
  #define GDM_KEY_LOCAL_XSERVER_COMMAND "daemon/LocalXserverCommand"
- 
-Index: gdm-2.30.2/daemon/gdm-manager.c
+ #define GDM_KEY_NESTED_XSERVER_COMMAND "daemon/NestedXserverCommand"
+Index: gdm-2.30.5/daemon/gdm-manager.c
 ===================================================================
---- gdm-2.30.2.orig/daemon/gdm-manager.c	2010-05-08 14:46:42.981612567 +0200
-+++ gdm-2.30.2/daemon/gdm-manager.c	2010-05-08 14:57:27.285109455 +0200
+--- gdm-2.30.5.orig/daemon/gdm-manager.c	2010-09-11 11:08:59.480644229 +0200
++++ gdm-2.30.5/daemon/gdm-manager.c	2010-09-11 11:09:00.848642546 +0200
 @@ -71,7 +71,8 @@ struct GdmManagerPrivate
  
  enum {
@@ -81,10 +81,10 @@
          default:
                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                  break;
-Index: gdm-2.30.2/daemon/gdm-manager.h
+Index: gdm-2.30.5/daemon/gdm-manager.h
 ===================================================================
---- gdm-2.30.2.orig/daemon/gdm-manager.h	2010-05-08 14:46:42.969610832 +0200
-+++ gdm-2.30.2/daemon/gdm-manager.h	2010-05-08 14:57:27.285109455 +0200
+--- gdm-2.30.5.orig/daemon/gdm-manager.h	2010-09-11 11:08:59.452647518 +0200
++++ gdm-2.30.5/daemon/gdm-manager.h	2010-09-11 11:09:00.848642546 +0200
 @@ -69,6 +69,8 @@ void                gdm_manager_set_wait
  
  void                gdm_manager_set_xdmcp_enabled              (GdmManager *manager,
@@ -94,11 +94,11 @@
  gboolean            gdm_manager_get_displays                   (GdmManager *manager,
                                                                  GPtrArray **displays,
                                                                  GError    **error);
-Index: gdm-2.30.2/daemon/main.c
+Index: gdm-2.30.5/daemon/main.c
 ===================================================================
---- gdm-2.30.2.orig/daemon/main.c	2010-05-08 14:57:26.257612530 +0200
-+++ gdm-2.30.2/daemon/main.c	2010-05-08 14:57:27.285109455 +0200
-@@ -525,6 +525,7 @@ main (int    argc,
+--- gdm-2.30.5.orig/daemon/main.c	2010-09-11 11:08:59.428650405 +0200
++++ gdm-2.30.5/daemon/main.c	2010-09-11 11:09:00.848642546 +0200
+@@ -531,6 +531,7 @@ main (int    argc,
          int                 ret;
          gboolean            res;
          gboolean            xdmcp_enabled;
@@ -106,7 +106,7 @@
          GdmSignalHandler   *signal_handler;
          static gboolean     do_timed_exit    = FALSE;
          static gboolean     print_version    = FALSE;
-@@ -624,6 +625,10 @@ main (int    argc,
+@@ -635,6 +636,10 @@ main (int    argc,
                  goto out;
          }
  
@@ -117,11 +117,11 @@
          xdmcp_enabled = FALSE;
          gdm_settings_direct_get_boolean (GDM_KEY_XDMCP_ENABLE, &xdmcp_enabled);
          gdm_manager_set_xdmcp_enabled (manager, xdmcp_enabled);
-Index: gdm-2.30.2/data/gdm.schemas.in.in
+Index: gdm-2.30.5/data/gdm.schemas.in.in
 ===================================================================
---- gdm-2.30.2.orig/data/gdm.schemas.in.in	2010-05-08 14:50:42.425611096 +0200
-+++ gdm-2.30.2/data/gdm.schemas.in.in	2010-05-08 14:57:27.289111012 +0200
-@@ -57,6 +57,11 @@
+--- gdm-2.30.5.orig/data/gdm.schemas.in.in	2010-09-11 11:08:59.404646448 +0200
++++ gdm-2.30.5/data/gdm.schemas.in.in	2010-09-11 11:09:00.848642546 +0200
+@@ -62,6 +62,11 @@
        <signature>i</signature>
        <default>7</default>
      </schema>

Modified: desktop/unstable/gdm3/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/series?rev=25133&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/patches/series [utf-8] (original)
+++ desktop/unstable/gdm3/debian/patches/series [utf-8] Thu Sep 16 22:43:47 2010
@@ -8,7 +8,7 @@
 08_frequent-users_greeter.patch
 09_default_session.patch
 10_gdm3_pam.patch
-#11_xephyr_nested.patch
+11_xephyr_nested.patch
 12_polkit_settings.patch
 13_gdmsetup.patch
 13_gdmsetup_ui.patch




More information about the pkg-gnome-commits mailing list