r25136 - in /desktop/unstable/gdm3/debian: TODO changelog patches/11_no_xhost_thanks.patch patches/11_xephyr_nested.patch patches/11_xephyr_nested_interface.patch patches/series

joss at users.alioth.debian.org joss at users.alioth.debian.org
Fri Sep 17 18:51:32 UTC 2010


Author: joss
Date: Fri Sep 17 18:51:31 2010
New Revision: 25136

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=25136
Log:
* 11_no_xhost_thanks.patch: new patch. Drops the very suspicious xhost 
  authentication that is set in the login window. In addition to 
  questioning the security, it interacts badly with the Xephyr patch.
  + Put back in place the code that keeps a connection open to the X 
    server, it is necessary for proper setting of the keyboard map.
  + Rework the xkb setting in the Init script. Passing model/layout/
    variant/options seems to work better than keymap/types/compat/…
  + Pass GDM_PARENT_DISPLAY to the greeter session too.
* 11_xephyr_nested_interface.patch: new patch. In the greeter panel, 
  display only a "Quit" element when GDM_PARENT_DISPLAY is set. Call 
  the session manager to force a logout when pressed.
* Remove debian/TODO, yay!

Added:
    desktop/unstable/gdm3/debian/patches/11_no_xhost_thanks.patch
    desktop/unstable/gdm3/debian/patches/11_xephyr_nested_interface.patch
Removed:
    desktop/unstable/gdm3/debian/TODO
Modified:
    desktop/unstable/gdm3/debian/changelog
    desktop/unstable/gdm3/debian/patches/11_xephyr_nested.patch
    desktop/unstable/gdm3/debian/patches/series

Modified: desktop/unstable/gdm3/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/changelog?rev=25136&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/changelog [utf-8] (original)
+++ desktop/unstable/gdm3/debian/changelog [utf-8] Fri Sep 17 18:51:31 2010
@@ -6,6 +6,9 @@
     Add to that a stripping of ::ffff: from IPv4 mapped addresses, since 
     this is not understood in $DISPLAY.
     Closes: #579033.
+  * 11_no_xhost_thanks.patch: new patch. Drops the very suspicious xhost 
+    authentication that is set in the login window. In addition to 
+    questioning the security, it interacts badly with the Xephyr patch.
   * 11_xephyr_nested.patch: re-enabled.
     + Updated to apply cleanly.
     + Modified to not affect the logic of 19_configure_xserver.patch.
@@ -19,6 +22,14 @@
       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.
+    + Put back in place the code that keeps a connection open to the X 
+      server, it is necessary for proper setting of the keyboard map.
+    + Rework the xkb setting in the Init script. Passing model/layout/
+      variant/options seems to work better than keymap/types/compat/…
+    + Pass GDM_PARENT_DISPLAY to the greeter session too.
+  * 11_xephyr_nested_interface.patch: new patch. In the greeter panel, 
+    display only a "Quit" element when GDM_PARENT_DISPLAY is set. Call 
+    the session manager to force a logout when pressed.
   * Install the gdmflexiserver-xnest.desktop file.
   * Recommend x11-xkb-utils for xkbcomp.
   * 19_configure_xserver.patch:
@@ -28,6 +39,7 @@
   * 22_noconsole.patch: refreshed.
   * 14_pam_dialog.patch: show messages from PAM in a dialog so that the 
     user can actually see them.
+  * Remove debian/TODO, yay!
 
  -- Josselin Mouette <joss at debian.org>  Fri, 10 Sep 2010 21:48:36 +0200
 

Added: desktop/unstable/gdm3/debian/patches/11_no_xhost_thanks.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/11_no_xhost_thanks.patch?rev=25136&op=file
==============================================================================
--- desktop/unstable/gdm3/debian/patches/11_no_xhost_thanks.patch (added)
+++ desktop/unstable/gdm3/debian/patches/11_no_xhost_thanks.patch [utf-8] Fri Sep 17 18:51:31 2010
@@ -1,0 +1,87 @@
+Index: gdm-2.30.5/daemon/gdm-slave.c
+===================================================================
+--- gdm-2.30.5.orig/daemon/gdm-slave.c	2010-09-17 18:18:13.087372216 +0200
++++ gdm-2.30.5/daemon/gdm-slave.c	2010-09-17 18:19:46.555368707 +0200
+@@ -370,27 +370,6 @@ gdm_slave_set_busy_cursor (GdmSlave *sla
+ }
+ 
+ static void
+-gdm_slave_setup_xhost_auth (XHostAddress *host_entries, XServerInterpretedAddress *si_entries)
+-{
+-        si_entries[0].type        = "localuser";
+-        si_entries[0].typelength  = strlen ("localuser");
+-        si_entries[1].type        = "localuser";
+-        si_entries[1].typelength  = strlen ("localuser");
+-
+-        si_entries[0].value       = "root";
+-        si_entries[0].valuelength = strlen ("root");
+-        si_entries[1].value       = GDM_USERNAME;
+-        si_entries[1].valuelength = strlen (GDM_USERNAME);
+-
+-        host_entries[0].family    = FamilyServerInterpreted;
+-        host_entries[0].address   = (char *) &si_entries[0];
+-        host_entries[0].length    = sizeof (XServerInterpretedAddress);
+-        host_entries[1].family    = FamilyServerInterpreted;
+-        host_entries[1].address   = (char *) &si_entries[1];
+-        host_entries[1].length    = sizeof (XServerInterpretedAddress);
+-}
+-
+-static void
+ gdm_slave_set_windowpath (GdmSlave *slave)
+ {
+         /* setting WINDOWPATH for clients */
+@@ -503,25 +482,9 @@ gdm_slave_connect_to_x11_display (GdmSla
+                 g_warning ("Unable to connect to display %s", slave->priv->display_name);
+                 ret = FALSE;
+         } else if (slave->priv->display_is_local) {
+-                XServerInterpretedAddress si_entries[2];
+-                XHostAddress              host_entries[2];
+-
+                 g_debug ("GdmSlave: Connected to display %s", slave->priv->display_name);
+                 ret = TRUE;
+ 
+-                /* Give programs run by the slave and greeter access to the
+-                 * display independent of current hostname
+-                 */
+-                gdm_slave_setup_xhost_auth (host_entries, si_entries);
+-
+-                gdm_error_trap_push ();
+-                XAddHosts (slave->priv->server_display, host_entries,
+-                           G_N_ELEMENTS (host_entries));
+-                XSync (slave->priv->server_display, False);
+-                if (gdm_error_trap_pop ()) {
+-                        g_warning ("Failed to give slave programs access to the display. Trying to proceed.");
+-                }
+-
+                 gdm_slave_set_windowpath (slave);
+         } else {
+                 g_debug ("GdmSlave: Connected to display %s", slave->priv->display_name);
+@@ -818,8 +781,6 @@ gdm_slave_add_user_authorization (GdmSla
+                                   const char *username,
+                                   char      **filenamep)
+ {
+-        XServerInterpretedAddress si_entries[2];
+-        XHostAddress              host_entries[2];
+         gboolean                  res;
+         GError                   *error;
+         char                     *filename;
+@@ -857,19 +818,6 @@ gdm_slave_add_user_authorization (GdmSla
+         }
+         g_free (filename);
+ 
+-        /* Remove access for the programs run by slave and greeter now that the
+-         * user session is starting.
+-         */
+-        gdm_slave_setup_xhost_auth (host_entries, si_entries);
+-        gdm_error_trap_push ();
+-        XRemoveHosts (slave->priv->server_display, host_entries,
+-                      G_N_ELEMENTS (host_entries));
+-        XSync (slave->priv->server_display, False);
+-        if (gdm_error_trap_pop ()) {
+-                g_warning ("Failed to remove slave program access to the display. Trying to proceed.");
+-        }
+-
+-
+         return res;
+ }
+ 

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=25136&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] Fri Sep 17 18:51:31 2010
@@ -1,8 +1,8 @@
 Debian: add CreateNestedDisplay(parent_display_id) dbus method.
 Index: gdm-2.30.5/daemon/gdm-display.c
 ===================================================================
---- 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
+--- gdm-2.30.5.orig/daemon/gdm-display.c	2010-09-17 18:17:49.923368345 +0200
++++ gdm-2.30.5/daemon/gdm-display.c	2010-09-17 18:39:25.163371770 +0200
 @@ -52,6 +52,8 @@ struct GdmDisplayPrivate
  {
          char                 *id;
@@ -287,8 +287,8 @@
          }
 Index: gdm-2.30.5/daemon/gdm-display.h
 ===================================================================
---- 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
+--- gdm-2.30.5.orig/daemon/gdm-display.h	2010-09-17 18:17:49.911372476 +0200
++++ gdm-2.30.5/daemon/gdm-display.h	2010-09-17 18:39:25.143369856 +0200
 @@ -102,6 +102,9 @@ gboolean            gdm_display_unmanage
  gboolean            gdm_display_get_id                         (GdmDisplay *display,
                                                                  char      **id,
@@ -322,8 +322,8 @@
                                                                  GError    **error);
 Index: gdm-2.30.5/daemon/gdm-local-display-factory.c
 ===================================================================
---- 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
+--- gdm-2.30.5.orig/daemon/gdm-local-display-factory.c	2010-09-17 18:17:49.899367807 +0200
++++ gdm-2.30.5/daemon/gdm-local-display-factory.c	2010-09-17 18:22:19.435373492 +0200
 @@ -22,6 +22,8 @@
  
  #include <stdlib.h>
@@ -468,8 +468,8 @@
  on_static_display_status_changed (GdmDisplay             *display,
 Index: gdm-2.30.5/daemon/gdm-local-display-factory.h
 ===================================================================
---- 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
+--- gdm-2.30.5.orig/daemon/gdm-local-display-factory.h	2010-09-17 18:17:49.887368516 +0200
++++ gdm-2.30.5/daemon/gdm-local-display-factory.h	2010-09-17 18:22:19.435373492 +0200
 @@ -65,6 +65,10 @@ gboolean                   gdm_local_dis
                                                                                 char                  **id,
                                                                                 GError                **error);
@@ -483,8 +483,8 @@
                                                                                 const char             *relay_address,
 Index: gdm-2.30.5/daemon/gdm-local-display-factory.xml
 ===================================================================
---- 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
+--- gdm-2.30.5.orig/daemon/gdm-local-display-factory.xml	2010-09-17 18:17:49.875371669 +0200
++++ gdm-2.30.5/daemon/gdm-local-display-factory.xml	2010-09-17 18:22:19.435373492 +0200
 @@ -9,5 +9,10 @@
      <method name="CreateTransientDisplay">
        <arg name="id" direction="out" type="o"/>
@@ -498,9 +498,33 @@
  </node>
 Index: gdm-2.30.5/daemon/gdm-simple-slave.c
 ===================================================================
---- 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
+--- gdm-2.30.5.orig/daemon/gdm-simple-slave.c	2010-09-17 18:17:49.863370912 +0200
++++ gdm-2.30.5/daemon/gdm-simple-slave.c	2010-09-17 19:49:32.419367691 +0200
+@@ -916,6 +916,7 @@ start_greeter (GdmSimpleSlave *slave)
+         char          *display_name;
+         char          *display_device;
+         char          *display_hostname;
++        char          *parent_display;
+         char          *auth_file;
+         char          *address;
+         gboolean       res;
+@@ -935,6 +936,7 @@ start_greeter (GdmSimpleSlave *slave)
+                       "display-name", &display_name,
+                       "display-hostname", &display_hostname,
+                       "display-x11-authority-file", &auth_file,
++                      "parent-display-name", &parent_display,
+                       NULL);
+ 
+         g_debug ("GdmSimpleSlave: Creating greeter for %s %s", display_name, display_hostname);
+@@ -1014,6 +1016,7 @@ start_greeter (GdmSimpleSlave *slave)
+         slave->priv->greeter = gdm_greeter_session_new (display_name,
+                                                         display_device,
+                                                         display_hostname,
++                                                        parent_display,
+                                                         display_is_local);
+         g_signal_connect (slave->priv->greeter,
+                           "started",
+@@ -1051,6 +1054,9 @@ static gboolean
  idle_connect_to_display (GdmSimpleSlave *slave)
  {
          gboolean res;
@@ -510,7 +534,7 @@
  
          slave->priv->connection_attempts++;
  
-@@ -1061,7 +1064,8 @@ idle_connect_to_display (GdmSimpleSlave
+@@ -1061,7 +1067,8 @@ idle_connect_to_display (GdmSimpleSlave
  
                  /* FIXME: handle wait-for-go */
  
@@ -520,7 +544,7 @@
  
                  delay = 0;
                  enabled = FALSE;
-@@ -1119,12 +1123,20 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
+@@ -1119,12 +1126,20 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
  {
          char    *display_name;
          char    *auth_file;
@@ -541,7 +565,7 @@
                        NULL);
  
          /* if this is local display start a server if one doesn't
-@@ -1143,6 +1155,16 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
+@@ -1143,6 +1158,16 @@ gdm_simple_slave_run (GdmSimpleSlave *sl
                                        NULL);
                  }
  
@@ -560,8 +584,8 @@
                                    G_CALLBACK (on_server_exited),
 Index: gdm-2.30.5/daemon/gdm-slave.c
 ===================================================================
---- 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
+--- gdm-2.30.5.orig/daemon/gdm-slave.c	2010-09-17 18:19:46.555368707 +0200
++++ gdm-2.30.5/daemon/gdm-slave.c	2010-09-17 18:39:25.103371405 +0200
 @@ -81,32 +81,42 @@ struct GdmSlavePrivate
  
          /* cached display values */
@@ -627,7 +651,7 @@
  
          /* 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
+@@ -460,6 +469,15 @@ gdm_slave_connect_to_x11_display (GdmSla
  
          g_debug ("GdmSlave: Server is ready - opening display %s", slave->priv->display_name);
  
@@ -636,20 +660,14 @@
 +        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);
++                        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;
-+
-         sigemptyset (&mask);
-         sigaddset (&mask, SIGCHLD);
-         sigprocmask (SIG_BLOCK, &mask, &omask);
-@@ -540,6 +561,15 @@ display_proxy_destroyed_cb (DBusGProxy *
+@@ -503,6 +521,15 @@ display_proxy_destroyed_cb (DBusGProxy *
          slave->priv->display_proxy = NULL;
  }
  
@@ -665,7 +683,7 @@
  static gboolean
  gdm_slave_set_slave_bus_name (GdmSlave *slave)
  {
-@@ -574,11 +604,13 @@ gdm_slave_real_start (GdmSlave *slave)
+@@ -537,11 +564,13 @@ gdm_slave_real_start (GdmSlave *slave)
  {
          gboolean res;
          char    *id;
@@ -679,7 +697,7 @@
  
          g_debug ("GdmSlave: Creating proxy for %s", slave->priv->display_id);
          error = NULL;
-@@ -633,6 +665,135 @@ gdm_slave_real_start (GdmSlave *slave)
+@@ -596,6 +625,135 @@ gdm_slave_real_start (GdmSlave *slave)
          /* cache some values up front */
          error = NULL;
          res = dbus_g_proxy_call (slave->priv->display_proxy,
@@ -815,16 +833,7 @@
                                   "IsLocal",
                                   &error,
                                   G_TYPE_INVALID,
-@@ -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
+@@ -1353,6 +1511,14 @@ _gdm_slave_set_display_id (GdmSlave   *s
  }
  
  static void
@@ -839,7 +848,7 @@
  _gdm_slave_set_display_name (GdmSlave   *slave,
                               const char *name)
  {
-@@ -1451,6 +1622,37 @@ _gdm_slave_set_display_is_local (GdmSlav
+@@ -1399,6 +1565,37 @@ _gdm_slave_set_display_is_local (GdmSlav
  }
  
  static void
@@ -877,7 +886,7 @@
  gdm_slave_set_property (GObject      *object,
                          guint         prop_id,
                          const GValue *value,
-@@ -1464,6 +1666,9 @@ gdm_slave_set_property (GObject      *ob
+@@ -1412,6 +1609,9 @@ gdm_slave_set_property (GObject      *ob
          case PROP_DISPLAY_ID:
                  _gdm_slave_set_display_id (self, g_value_get_string (value));
                  break;
@@ -887,7 +896,7 @@
          case PROP_DISPLAY_NAME:
                  _gdm_slave_set_display_name (self, g_value_get_string (value));
                  break;
-@@ -1482,6 +1687,18 @@ gdm_slave_set_property (GObject      *ob
+@@ -1430,6 +1630,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;
@@ -906,7 +915,7 @@
          default:
                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                  break;
-@@ -1502,6 +1719,9 @@ gdm_slave_get_property (GObject    *obje
+@@ -1450,6 +1662,9 @@ gdm_slave_get_property (GObject    *obje
          case PROP_DISPLAY_ID:
                  g_value_set_string (value, self->priv->display_id);
                  break;
@@ -916,7 +925,7 @@
          case PROP_DISPLAY_NAME:
                  g_value_set_string (value, self->priv->display_name);
                  break;
-@@ -1520,6 +1740,18 @@ gdm_slave_get_property (GObject    *obje
+@@ -1468,6 +1683,18 @@ gdm_slave_get_property (GObject    *obje
          case PROP_DISPLAY_IS_LOCAL:
                  g_value_set_boolean (value, self->priv->display_is_local);
                  break;
@@ -935,7 +944,7 @@
          default:
                  G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                  break;
-@@ -1601,6 +1833,13 @@ gdm_slave_class_init (GdmSlaveClass *kla
+@@ -1549,6 +1776,13 @@ gdm_slave_class_init (GdmSlaveClass *kla
                                                                NULL,
                                                                G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
          g_object_class_install_property (object_class,
@@ -949,7 +958,7 @@
                                           PROP_DISPLAY_NAME,
                                           g_param_spec_string ("display-name",
                                                                "display name",
-@@ -1644,6 +1883,34 @@ gdm_slave_class_init (GdmSlaveClass *kla
+@@ -1592,6 +1826,34 @@ gdm_slave_class_init (GdmSlaveClass *kla
                                                                 "display is local",
                                                                 TRUE,
                                                                 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
@@ -984,7 +993,7 @@
  
          signals [STOPPED] =
                  g_signal_new ("stopped",
-@@ -1689,7 +1956,7 @@ gdm_slave_finalize (GObject *object)
+@@ -1637,7 +1899,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);
@@ -995,8 +1004,8 @@
                  g_array_free (slave->priv->display_x11_cookie, TRUE);
 Index: gdm-2.30.5/daemon/gdm-display.xml
 ===================================================================
---- 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
+--- gdm-2.30.5.orig/daemon/gdm-display.xml	2010-09-17 18:17:49.839373309 +0200
++++ gdm-2.30.5/daemon/gdm-display.xml	2010-09-17 18:39:25.131371054 +0200
 @@ -4,6 +4,9 @@
      <method name="GetId">
        <arg name="id" direction="out" type="o"/>
@@ -1030,8 +1039,8 @@
      </method>
 Index: gdm-2.30.5/data/gdm.conf.in
 ===================================================================
---- 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
+--- gdm-2.30.5.orig/data/gdm.conf.in	2010-09-17 18:17:49.791372237 +0200
++++ gdm-2.30.5/data/gdm.conf.in	2010-09-17 18:39:26.263370440 +0200
 @@ -62,10 +62,16 @@
      <allow send_destination="org.gnome.DisplayManager"
             send_interface="org.gnome.DisplayManager.Display"
@@ -1051,8 +1060,8 @@
             send_interface="org.gnome.DisplayManager.Manager"
 Index: gdm-2.30.5/daemon/gdm-server.c
 ===================================================================
---- 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
+--- gdm-2.30.5.orig/daemon/gdm-server.c	2010-09-17 18:17:49.819378239 +0200
++++ gdm-2.30.5/daemon/gdm-server.c	2010-09-17 18:39:25.335369248 +0200
 @@ -70,6 +70,7 @@ extern char **environ;
  struct GdmServerPrivate
  {
@@ -1288,8 +1297,8 @@
          g_free (server->priv->log_dir);
 Index: gdm-2.30.5/utils/gdmflexiserver.c
 ===================================================================
---- 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
+--- gdm-2.30.5.orig/utils/gdmflexiserver.c	2010-09-17 18:17:49.731374810 +0200
++++ gdm-2.30.5/utils/gdmflexiserver.c	2010-09-17 18:22:19.443369760 +0200
 @@ -34,6 +34,9 @@
  #include <dbus/dbus-glib-lowlevel.h>
  
@@ -1562,13 +1571,162 @@
  
 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?
+--- gdm-2.30.5.orig/data/Init.in	2010-09-17 18:17:49.759372013 +0200
++++ gdm-2.30.5/data/Init.in	2010-09-17 19:31:38.927375051 +0200
+@@ -66,22 +66,11 @@ if [ "x$SETXKBMAP" != "x" ] ; then
    # 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
++    # Hurray for awk
++    XKBARGS=$( (DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $SETXKBMAP -v -v) | awk '/^model:/ { printf "-model %s ", $2 } /^layout:/ { printf "-layout %s ", $2 } /^variant:/ { printf "-variant %s ", $2 } /^options:/ { printf "-option %s ", $2}' )
      XKBSETUP=`( DISPLAY=$GDM_PARENT_DISPLAY XAUTHORITY=$GDM_PARENT_XAUTHORITY $SETXKBMAP -v )`
-     if [ -n "$XKBSETUP" ]; then
+-    if [ -n "$XKBSETUP" ]; then
+-      XKBKEYMAP=`echo "$XKBSETUP" | grep '^keymap' | awk '{ print $2 }'`
+-      XKBTYPES=`echo "$XKBSETUP" | grep '^types' | awk '{ print $2 }'`
+-      XKBCOMPAT=`echo "$XKBSETUP" | grep '^compat' | awk '{ print $2 }'`
+-      XKBSYMBOLS=`echo "$XKBSETUP" | grep '^symbols' | awk '{ print $2 }'`
+-      XKBGEOMETRY=`echo "$XKBSETUP" | grep '^geometry' | awk '{ print $2 }'`
+-      if [ -n "$XKBKEYMAP" ]; then
+-        $SETXKBMAP -keymap "$XKBKEYMAP"
+-      elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" -a -n "$XKBGEOMETRY" ]; then
+-        $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS" -geometry "$XKBGEOMETRY"
+-      elif [ -n "$XKBTYPES" -a -n "$XKBCOMPAT" -a -n "$XKBSYMBOLS" ]; then
+-        $SETXKBMAP -types "$XKBTYPES" -compat "$XKBCOMPAT" -symbols "$XKBSYMBOLS"
+-      elif [ -n "$XKBSYMBOLS" ]; then
+-        $SETXKBMAP -symbols "$XKBSYMBOLS"
+-      fi
++    if [ -n "$XKBARGS" ]; then
++      $SETXKBMAP $XKBARGS
+     fi
+   fi
+ fi
+Index: gdm-2.30.5/daemon/gdm-factory-slave.c
+===================================================================
+--- gdm-2.30.5.orig/daemon/gdm-factory-slave.c	2010-09-17 19:46:36.087876683 +0200
++++ gdm-2.30.5/daemon/gdm-factory-slave.c	2010-09-17 19:47:01.759869637 +0200
+@@ -558,6 +558,7 @@ run_greeter (GdmFactorySlave *slave)
+         slave->priv->greeter = gdm_greeter_session_new (display_name,
+                                                         display_device,
+                                                         display_hostname,
++                                                        NULL,
+                                                         display_is_local);
+         g_signal_connect (slave->priv->greeter,
+                           "started",
+Index: gdm-2.30.5/daemon/gdm-greeter-session.c
+===================================================================
+--- gdm-2.30.5.orig/daemon/gdm-greeter-session.c	2010-09-17 19:44:35.411371835 +0200
++++ gdm-2.30.5/daemon/gdm-greeter-session.c	2010-09-17 20:03:21.591872720 +0200
+@@ -142,6 +142,7 @@ GdmGreeterSession *
+ gdm_greeter_session_new (const char *display_name,
+                          const char *display_device,
+                          const char *display_hostname,
++                         const char *parent_display,
+                          gboolean    display_is_local)
+ {
+         GObject *object;
+@@ -156,6 +157,7 @@ gdm_greeter_session_new (const char *dis
+                                "x11-display-device", display_device,
+                                "x11-display-hostname", display_hostname,
+                                "x11-display-is-local", display_is_local,
++                               "parent-x11-display", parent_display,
+                                "runtime-dir", GDM_SCREENSHOT_DIR,
+                                NULL);
+ 
+Index: gdm-2.30.5/daemon/gdm-greeter-session.h
+===================================================================
+--- gdm-2.30.5.orig/daemon/gdm-greeter-session.h	2010-09-17 19:44:56.827878332 +0200
++++ gdm-2.30.5/daemon/gdm-greeter-session.h	2010-09-17 19:45:33.319873552 +0200
+@@ -52,6 +52,7 @@ GType                 gdm_greeter_sessio
+ GdmGreeterSession *   gdm_greeter_session_new                (const char        *display_name,
+                                                               const char        *display_device,
+                                                               const char        *display_hostname,
++                                                              const char        *parent_display,
+                                                               gboolean           display_is_local);
+ 
+ G_END_DECLS
+Index: gdm-2.30.5/daemon/gdm-welcome-session.c
+===================================================================
+--- gdm-2.30.5.orig/daemon/gdm-welcome-session.c	2010-09-17 19:39:14.207876075 +0200
++++ gdm-2.30.5/daemon/gdm-welcome-session.c	2010-09-17 20:01:29.107871685 +0200
+@@ -70,6 +70,7 @@ struct GdmWelcomeSessionPrivate
+         char           *x11_display_hostname;
+         char           *x11_authority_file;
+         gboolean        x11_display_is_local;
++        char           *parent_x11_display;
+ 
+         guint           child_watch_id;
+ 
+@@ -90,6 +91,7 @@ enum {
+         PROP_X11_DISPLAY_HOSTNAME,
+         PROP_X11_AUTHORITY_FILE,
+         PROP_X11_DISPLAY_IS_LOCAL,
++        PROP_PARENT_X11_DISPLAY,
+         PROP_USER_NAME,
+         PROP_GROUP_NAME,
+         PROP_RUNTIME_DIR,
+@@ -428,6 +430,9 @@ get_welcome_environment (GdmWelcomeSessi
+         g_hash_table_insert (hash, g_strdup ("RUNNING_UNDER_GDM"), g_strdup ("true"));
+         g_hash_table_insert (hash, g_strdup ("GVFS_DISABLE_FUSE"), g_strdup ("1"));
+ 
++        if (welcome_session->priv->parent_x11_display != NULL)
++                g_hash_table_insert (hash, g_strdup ("GDM_PARENT_DISPLAY"), g_strdup (welcome_session->priv->parent_x11_display));
++
+         g_hash_table_foreach (hash, (GHFunc)listify_hash, env);
+         g_hash_table_destroy (hash);
+ 
+@@ -1029,6 +1034,13 @@ _gdm_welcome_session_set_x11_display_is_
+         welcome_session->priv->x11_display_is_local = is_local;
+ }
+ 
++static void
++_gdm_welcome_session_set_parent_x11_display (GdmWelcomeSession *welcome_session,
++                                             const char        *name)
++{
++        g_free (welcome_session->priv->parent_x11_display);
++        welcome_session->priv->parent_x11_display = g_strdup (name);
++}
+ 
+ static void
+ _gdm_welcome_session_set_x11_authority_file (GdmWelcomeSession *welcome_session,
+@@ -1127,6 +1139,9 @@ gdm_welcome_session_set_property (GObjec
+         case PROP_X11_AUTHORITY_FILE:
+                 _gdm_welcome_session_set_x11_authority_file (self, g_value_get_string (value));
+                 break;
++        case PROP_PARENT_X11_DISPLAY:
++                _gdm_welcome_session_set_parent_x11_display (self, g_value_get_string (value));
++                break;
+         case PROP_USER_NAME:
+                 _gdm_welcome_session_set_user_name (self, g_value_get_string (value));
+                 break;
+@@ -1186,6 +1201,9 @@ gdm_welcome_session_get_property (GObjec
+         case PROP_X11_AUTHORITY_FILE:
+                 g_value_set_string (value, self->priv->x11_authority_file);
+                 break;
++        case PROP_PARENT_X11_DISPLAY:
++                g_value_set_string (value, self->priv->parent_x11_display);
++                break;
+         case PROP_USER_NAME:
+                 g_value_set_string (value, self->priv->user_name);
+                 break;
+@@ -1281,6 +1299,13 @@ gdm_welcome_session_class_init (GdmWelco
+                                                               NULL,
+                                                               G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+         g_object_class_install_property (object_class,
++                                         PROP_PARENT_X11_DISPLAY,
++                                         g_param_spec_string ("parent-x11-display",
++                                                              "parent x11 display",
++                                                              "parent x11 display",
++                                                              NULL,
++                                                              G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
++        g_object_class_install_property (object_class,
+                                          PROP_USER_NAME,
+                                          g_param_spec_string ("user-name",
+                                                               "user name",
+@@ -1424,6 +1449,7 @@ gdm_welcome_session_finalize (GObject *o
+         g_free (welcome_session->priv->x11_display_device);
+         g_free (welcome_session->priv->x11_display_hostname);
+         g_free (welcome_session->priv->x11_authority_file);
++        g_free (welcome_session->priv->parent_x11_display);
+         g_free (welcome_session->priv->server_address);
+         g_free (welcome_session->priv->server_dbus_path);
+         g_free (welcome_session->priv->server_dbus_interface);

Added: desktop/unstable/gdm3/debian/patches/11_xephyr_nested_interface.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/11_xephyr_nested_interface.patch?rev=25136&op=file
==============================================================================
--- desktop/unstable/gdm3/debian/patches/11_xephyr_nested_interface.patch (added)
+++ desktop/unstable/gdm3/debian/patches/11_xephyr_nested_interface.patch [utf-8] Fri Sep 17 18:51:31 2010
@@ -1,0 +1,83 @@
+Index: gdm-2.30.5/gui/simple-greeter/gdm-greeter-panel.c
+===================================================================
+--- gdm-2.30.5.orig/gui/simple-greeter/gdm-greeter-panel.c	2010-09-17 20:00:37.911873931 +0200
++++ gdm-2.30.5/gui/simple-greeter/gdm-greeter-panel.c	2010-09-17 20:47:36.847368737 +0200
+@@ -64,6 +64,10 @@
+ #define GPM_DBUS_PATH      "/org/freedesktop/PowerManagement"
+ #define GPM_DBUS_INTERFACE "org.freedesktop.PowerManagement"
+ 
++#define SM_DBUS_NAME      "org.gnome.SessionManager"
++#define SM_DBUS_PATH      "/org/gnome/SessionManager"
++#define SM_DBUS_INTERFACE "org.gnome.SessionManager"
++
+ #define KEY_DISABLE_RESTART_BUTTONS "/apps/gdm/simple-greeter/disable_restart_buttons"
+ #define KEY_NOTIFICATION_AREA_PADDING "/apps/notification_area_applet/prefs/padding"
+ 
+@@ -633,10 +637,53 @@ do_system_stop (void)
+         }
+ }
+ 
++static gboolean
++try_exit_session (DBusGConnection *connection,
++                  GError         **error)
++{
++        DBusGProxy      *proxy;
++        gboolean         res;
++
++        g_debug ("GdmGreeterPanel: trying to exit session");
++
++        proxy = dbus_g_proxy_new_for_name (connection,
++                                           SM_DBUS_NAME,
++                                           SM_DBUS_PATH,
++                                           SM_DBUS_INTERFACE);
++        res = dbus_g_proxy_call_with_timeout (proxy,
++                                              "Logout",
++                                              INT_MAX,
++                                              error,
++                                              /* parameters: */
++                                              G_TYPE_UINT, 2, /* Forced mode */
++                                              G_TYPE_INVALID,
++                                              /* return values: */
++                                              G_TYPE_INVALID);
++        return res;
++}
++
+ static void
+ do_disconnect (void)
+ {
+-        gtk_main_quit ();
++        gboolean         res;
++        GError          *error;
++        DBusGConnection *connection;
++
++        error = NULL;
++        connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
++        if (connection == NULL) {
++                g_warning ("Unable to get system bus connection: %s", error->message);
++                g_error_free (error);
++                return;
++        } else {
++                res = try_exit_session (connection, &error);
++                if (!res) {
++                        g_debug ("GdmGreeterPanel: unable to logout: %s: %s",
++                                 dbus_g_error_get_name (error),
++                                 error->message);
++                        g_error_free (error);
++                }
++        }
+ }
+ 
+ static gboolean
+@@ -817,7 +864,11 @@ setup_panel (GdmGreeterPanel *panel)
+                 gtk_container_add (GTK_CONTAINER (panel->priv->shutdown_button), image);
+ 
+                 if (! panel->priv->display_is_local) {
+-                        menu_item = gtk_menu_item_new_with_label ("Disconnect");
++                        menu_item = gtk_menu_item_new_with_label (_("Disconnect"));
++                        g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (do_disconnect), NULL);
++                        gtk_menu_shell_append (GTK_MENU_SHELL (panel->priv->shutdown_menu), menu_item);
++                } else if (g_getenv ("GDM_PARENT_DISPLAY")) {
++                        menu_item = gtk_menu_item_new_with_label (_("Quit"));
+                         g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (do_disconnect), NULL);
+                         gtk_menu_shell_append (GTK_MENU_SHELL (panel->priv->shutdown_menu), menu_item);
+                 } else {

Modified: desktop/unstable/gdm3/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/series?rev=25136&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/patches/series [utf-8] (original)
+++ desktop/unstable/gdm3/debian/patches/series [utf-8] Fri Sep 17 18:51:31 2010
@@ -8,7 +8,9 @@
 08_frequent-users_greeter.patch
 09_default_session.patch
 10_gdm3_pam.patch
+11_no_xhost_thanks.patch
 11_xephyr_nested.patch
+11_xephyr_nested_interface.patch
 12_polkit_settings.patch
 13_gdmsetup.patch
 13_gdmsetup_ui.patch




More information about the pkg-gnome-commits mailing list