2010-08-04 Brian Cameron <[email protected]> VERMILLION_146
authoryippi
Wed, 04 Aug 2010 20:42:58 +0000
changeset 19968 cbbc38bc43a0
parent 19967 4ef30fb146a5
child 19969 b83ebd342d76
2010-08-04 Brian Cameron <[email protected]> * patches/gdm-23-firsttime-helper.diff: Update patch. * base-specs/gdm.spec, patches/gdm-23-unnamed-union.diff: Remove upstream patch.
ChangeLog
base-specs/gdm.spec
patches/gdm-20-firsttime-helper.diff
patches/gdm-23-unnamed-union.diff
--- a/ChangeLog	Wed Aug 04 14:25:56 2010 +0000
+++ b/ChangeLog	Wed Aug 04 20:42:58 2010 +0000
@@ -1,3 +1,9 @@
+2010-08-04  Brian Cameron  <[email protected]>
+
+	* patches/gdm-23-firsttime-helper.diff:  Update patch.
+	* base-specs/gdm.spec, patches/gdm-23-unnamed-union.diff: Remove
+	  upstream patch.
+
 2010-08-04  Christian Kelly  <[email protected]>
 
 	* specs/SUNWgnome-doc-utils.spec, specs/SUNWmm-common.spec, 
--- a/base-specs/gdm.spec	Wed Aug 04 14:25:56 2010 +0000
+++ b/base-specs/gdm.spec	Wed Aug 04 20:42:58 2010 +0000
@@ -77,8 +77,6 @@
 Patch21:      gdm-21-pam.diff
 # date:2010-06-22 owner:yippi type:bug bugzilla:624298
 Patch22:      gdm-22-restart-buttons.diff
-# date:2010-07-22 owner:yippi type:branding
-Patch23:      gdm-23-unnamed-union.diff
 URL:          http://projects.gnome.org/gdm/
 BuildRoot:    %{_tmppath}/%{name}-%{version}-build
 
@@ -112,7 +110,6 @@
 %patch20 -p1
 %patch21 -p1
 %patch22 -p1
-%patch23 -p1
 
 cp %SOURCE1 gui/simple-greeter
 cp %SOURCE2 gui/simple-greeter
@@ -222,6 +219,8 @@
 %{_localstatedir}/lib/gdm
 
 %changelog
+* Wed Aug 04 2010 - [email protected]
+- Remove upstream patch gdm-23-unnamed-union.diff.
 * Tue Jul 13 2010 - [email protected]
 - Add patch gdm-22-restart-buttons.diff.
 * Mon Jul 12 2010 - [email protected]
--- a/patches/gdm-20-firsttime-helper.diff	Wed Aug 04 14:25:56 2010 +0000
+++ b/patches/gdm-20-firsttime-helper.diff	Wed Aug 04 20:42:58 2010 +0000
@@ -1,7 +1,67 @@
-diff -ruN gdm-2.31.1.orig/daemon/gdm-session-settings.c gdm-2.31.1/daemon/gdm-session-settings.c
---- gdm-2.31.1.orig/daemon/gdm-session-settings.c	2010-06-11 07:15:40.131853932 -0400
-+++ gdm-2.31.1/daemon/gdm-session-settings.c	2010-06-11 14:52:59.304535626 -0400
-@@ -267,12 +267,112 @@ gdm_session_settings_is_loaded (GdmSessi
+diff -ruN gdm-2.31.2.orig/common/gdm-common.c gdm-2.31.2/common/gdm-common.c
+--- gdm-2.31.2.orig/common/gdm-common.c	2010-08-04 15:10:51.330319028 +0500
++++ gdm-2.31.2/common/gdm-common.c	2010-08-04 15:11:09.638421585 +0500
+@@ -26,6 +26,7 @@
+ #include <locale.h>
+ #include <fcntl.h>
+ #include <sys/wait.h>
++#include <pwd.h>
+ #include <deflt.h>
+ 
+ #include <glib.h>
+@@ -476,3 +477,26 @@
+     return retval;
+ }
+ 
++gboolean
++gdm_check_first_time_login (char *username) 
++{
++        struct passwd *pwent = NULL;
++        gboolean ret = FALSE;
++
++        g_return_val_if_fail (username != NULL && username[0], FALSE);
++
++        pwent = getpwnam (username);
++        if (pwent != NULL && pwent->pw_dir != NULL) {
++                char *user_dmrc;
++                user_dmrc = g_build_filename (pwent->pw_dir, ".dmrc", NULL);
++                if (!g_file_test (user_dmrc, G_FILE_TEST_EXISTS)) {
++                        char *sys_dmrc;
++                        sys_dmrc = g_build_filename (GDM_CACHE_DIR, username, "dmrc", NULL);
++                        if (!g_file_test (sys_dmrc, G_FILE_TEST_EXISTS))
++                                ret = TRUE;
++                        g_free (sys_dmrc);
++                }
++                g_free (user_dmrc);
++        }
++        return ret;
++}
+diff -ruN gdm-2.31.2.orig/common/gdm-common.h gdm-2.31.2/common/gdm-common.h
+--- gdm-2.31.2.orig/common/gdm-common.h	2010-08-04 15:10:51.447310483 +0500
++++ gdm-2.31.2/common/gdm-common.h	2010-08-04 15:11:09.638899259 +0500
+@@ -60,6 +60,7 @@
+                                           GError       **error);
+ char          *gdm_read_default          (gchar *key);
+ 
++gboolean      gdm_check_first_time_login (char *username);
+ 
+ G_END_DECLS
+ 
+diff -ruN gdm-2.31.2.orig/common/Makefile.am gdm-2.31.2/common/Makefile.am
+--- gdm-2.31.2.orig/common/Makefile.am	2010-08-04 15:10:51.401096943 +0500
++++ gdm-2.31.2/common/Makefile.am	2010-08-04 15:11:09.639289679 +0500
+@@ -21,6 +21,7 @@
+ 	-DGDM_DEFAULTS_CONF=\"$(GDM_DEFAULTS_CONF)\"	\
+ 	-DGDM_CUSTOM_CONF=\"$(GDM_CUSTOM_CONF)\"	\
+ 	-DGDM_OLD_CONF=\"$(GDM_OLD_CONF)\"		\
++	-DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\"        \
+ 	$(COMMON_CFLAGS)				\
+ 	$(NULL)
+ 
+diff -ruN gdm-2.31.2.orig/daemon/gdm-session-settings.c gdm-2.31.2/daemon/gdm-session-settings.c
+--- gdm-2.31.2.orig/daemon/gdm-session-settings.c	2010-08-04 15:10:52.042050317 +0500
++++ gdm-2.31.2/daemon/gdm-session-settings.c	2010-08-04 15:10:58.681410102 +0500
+@@ -267,12 +267,112 @@
  }
  
  gboolean
@@ -115,7 +175,7 @@
          GError   *load_error;
          gboolean  is_loaded;
          gboolean  skip_session;
-@@ -281,7 +381,7 @@ gdm_session_settings_load (GdmSessionSet
+@@ -281,7 +381,7 @@
          char     *session_name;
          char     *language_name;
          char     *layout_name;
@@ -124,7 +184,7 @@
  
          skip_session = FALSE;
          skip_language = FALSE;
-@@ -388,8 +488,10 @@ gdm_session_settings_load (GdmSessionSet
+@@ -388,8 +488,10 @@
  
          is_loaded = TRUE;
  out:
@@ -137,10 +197,10 @@
  
          return is_loaded;
  }
-diff -ruN gdm-2.31.1.orig/daemon/gdm-session-settings.h gdm-2.31.1/daemon/gdm-session-settings.h
---- gdm-2.31.1.orig/daemon/gdm-session-settings.h	2010-06-11 07:15:40.077407669 -0400
-+++ gdm-2.31.1/daemon/gdm-session-settings.h	2010-06-11 14:52:59.305027822 -0400
-@@ -53,6 +53,10 @@ struct _GdmSessionSettingsClass
+diff -ruN gdm-2.31.2.orig/daemon/gdm-session-settings.h gdm-2.31.2/daemon/gdm-session-settings.h
+--- gdm-2.31.2.orig/daemon/gdm-session-settings.h	2010-08-04 15:10:51.972748352 +0500
++++ gdm-2.31.2/daemon/gdm-session-settings.h	2010-08-04 15:10:58.682115740 +0500
+@@ -53,6 +53,10 @@
  GType               gdm_session_settings_get_type           (void);
  GdmSessionSettings *gdm_session_settings_new                (void);
  
@@ -151,10 +211,10 @@
  gboolean            gdm_session_settings_load               (GdmSessionSettings  *settings,
                                                               const char          *username,
                                                               gboolean             handle_last,
-diff -ruN gdm-2.31.1.orig/daemon/gdm-session-worker.c gdm-2.31.1/daemon/gdm-session-worker.c
---- gdm-2.31.1.orig/daemon/gdm-session-worker.c	2010-06-11 07:15:40.121115699 -0400
-+++ gdm-2.31.1/daemon/gdm-session-worker.c	2010-06-11 14:54:55.003822472 -0400
-@@ -1809,6 +1809,71 @@ _lookup_passwd_info (const char *usernam
+diff -ruN gdm-2.31.2.orig/daemon/gdm-session-worker.c gdm-2.31.2/daemon/gdm-session-worker.c
+--- gdm-2.31.2.orig/daemon/gdm-session-worker.c	2010-08-04 15:10:52.913232228 +0500
++++ gdm-2.31.2/daemon/gdm-session-worker.c	2010-08-04 15:11:09.642389919 +0500
+@@ -1820,6 +1820,59 @@
  }
  
  static gboolean
@@ -162,61 +222,49 @@
 +                                 char *language_name, char *layout_name)
 +{
 +        gboolean success = FALSE;
-+        struct passwd *pwent = NULL;
-+        pwent = getpwnam (worker->priv->username);
-+        if (pwent != NULL && pwent->pw_dir != NULL) {
-+                char *filename;
-+                pid_t fpid;
-+                filename = g_build_filename (pwent->pw_dir, ".dmrc", NULL);
-+                if (!g_file_test (filename, G_FILE_TEST_EXISTS)) {
-+                        g_debug ("Running " LIBEXECDIR "/gdm-first-time-login-helper \"%s\" \"%s\" \"%s\" \"%s\"",
-+                                 worker->priv->username ? worker->priv->username : "",
-+                                 session_name ? session_name : "",
-+                                 layout_name ? layout_name : "",
-+                                 language_name ? language_name : "");
-+                        char *argv[] = { LIBEXECDIR"/gdm-first-time-login-helper",
-+                                worker->priv->username ? worker->priv->username : "",
-+                                session_name ? session_name : "",
-+                                layout_name ? layout_name : "",
-+                                language_name ? language_name : "",
-+                                NULL };
++        char *filename;
++        pid_t fpid;
++        g_debug ("Running " LIBEXECDIR "/gdm-first-time-login-helper \"%s\" \"%s\" \"%s\" \"%s\"",
++                 worker->priv->username ? worker->priv->username : "",
++                 session_name ? session_name : "",
++                 layout_name ? layout_name : "",
++                 language_name ? language_name : "");
++        char *argv[] = { LIBEXECDIR"/gdm-first-time-login-helper",
++                worker->priv->username ? worker->priv->username : "",
++                session_name ? session_name : "",
++                layout_name ? layout_name : "",
++                language_name ? language_name : "",
++                NULL };
 +
-+                        fpid = fork();
-+                        if (fpid > 0) {
-+                                int status;
-+                                /* Wait for the child to finish */
-+                                if (waitpid (fpid, &status, 0) == -1) {
-+                                        g_debug("User aborted gdm-first-time-login-helper");
-+                                } else {
-+                                        success = TRUE;
-+                                }
-+                        } else if (fpid == 0) {
-+                                execv (argv[0], argv);
-+                                g_debug("Cannot start gdm-first-time-login-helper");
-+                                _exit (0);
-+                        }
++        fpid = fork();
++        if (fpid > 0) {
++                int status;
++                /* Wait for the child to finish */
++                if (waitpid (fpid, &status, 0) == -1) {
++                        g_debug("User aborted gdm-first-time-login-helper");
++                } else {
++                        success = TRUE;
++                }
++        } else if (fpid == 0) {
++                execv (argv[0], argv);
++                g_debug("Cannot start gdm-first-time-login-helper");
++                _exit (0);
++        }
 +
-+                        if (fpid == -1) {
-+                                g_debug("Cannot start gdm-first-time-login-helper");
-+                        }
-+                } else {
-+                        g_debug ("Not running gdm-first-time-login-helper, user already has dmrc file");
-+                }
-+
-+                if (success == TRUE) {
-+                        char          *cachedir;
-+                        char          *cachefile;
++        if (fpid == -1) {
++                g_debug("Cannot start gdm-first-time-login-helper");
++        }
 +
-+                        cachedir = gdm_session_worker_create_cachedir (worker);
-+                        g_debug ("Copying user dmrc file to cache");
-+                        cachefile = g_build_filename (cachedir, "dmrc", NULL);
-+                        gdm_cache_copy_file (worker, filename, cachefile);
-+                        g_free (cachefile);
-+                        g_free (cachedir);
-+                }
-+                g_free (filename);
-+        } else {
-+                g_debug ("Could not get user information for %s", worker->priv->username);
++        if (success == TRUE) {
++                char          *cachedir;
++                char          *cachefile;
++
++                cachedir = gdm_session_worker_create_cachedir (worker);
++                g_debug ("Copying user dmrc file to cache");
++                cachefile = g_build_filename (cachedir, "dmrc", NULL);
++                gdm_cache_copy_file (worker, filename, cachefile);
++                g_free (cachefile);
++                g_free (cachedir);
 +        }
 +
 +        return success;
@@ -226,12 +274,14 @@
  gdm_session_worker_accredit_user (GdmSessionWorker  *worker,
                                    GError           **error)
  {
-@@ -1932,6 +1997,14 @@ gdm_session_worker_accredit_user (GdmSes
+@@ -1944,6 +1997,16 @@
                  attempt_to_load_user_settings (worker, worker->priv->username,
                          TRUE);
          }
 +
-+        if (!gdm_session_settings_is_loaded (worker->priv->user_settings) && run_gdm_first_time_login_helper (worker, session_name, language_name, layout_name)) {
++        if (gdm_check_first_time_login (worker->priv->username) && 
++                !gdm_session_settings_is_loaded (worker->priv->user_settings) && 
++                run_gdm_first_time_login_helper (worker, session_name, language_name, layout_name)) {
 +                g_debug ("Now loading settings created by gdm-first-time-login-helper.");
 +                gdm_session_settings_first_time_load (worker->priv->user_settings, worker->priv->username, NULL);
 +        } else {
@@ -241,10 +291,47 @@
          g_free (session_name);
          g_free (language_name);
          g_free (layout_name);
-diff -ruN gdm-2.31.1.orig/gui/simple-greeter/gdm-chooser-widget.c gdm-2.31.1/gui/simple-greeter/gdm-chooser-widget.c
---- gdm-2.31.1.orig/gui/simple-greeter/gdm-chooser-widget.c	2010-06-11 07:15:38.755719654 -0400
-+++ gdm-2.31.1/gui/simple-greeter/gdm-chooser-widget.c	2010-06-11 14:52:59.310091827 -0400
-@@ -1174,6 +1174,11 @@
+diff -ruN gdm-2.31.2.orig/daemon/gdm-simple-slave.c gdm-2.31.2/daemon/gdm-simple-slave.c
+--- gdm-2.31.2.orig/daemon/gdm-simple-slave.c	2010-08-04 15:10:51.926640966 +0500
++++ gdm-2.31.2/daemon/gdm-simple-slave.c	2010-08-04 15:11:09.643663330 +0500
+@@ -1173,6 +1173,8 @@
+         res = gdm_slave_connect_to_x11_display (GDM_SLAVE (slave));
+         if (res) {
+                 gboolean enabled;
++                gboolean first_time_login;
++                char     *username;
+                 int      delay;
+ 
+                 /* FIXME: handle wait-for-go */
+@@ -1181,8 +1183,14 @@
+ 
+                 delay = 0;
+                 enabled = FALSE;
+-                gdm_slave_get_timed_login_details (GDM_SLAVE (slave), &enabled, NULL, &delay);
+-                if (! enabled || delay > 0) {
++                first_time_login = FALSE;
++                username = NULL;
++                gdm_slave_get_timed_login_details (GDM_SLAVE (slave), &enabled, &username, &delay);
++
++                if (username && username[0])
++                        first_time_login = gdm_check_first_time_login (username);
++
++                if (! enabled || delay > 0 || first_time_login) {
+                         start_greeter (slave);
+                         create_new_session (slave);
+                 } else {
+@@ -1190,6 +1198,7 @@
+                         gdm_slave_run_script (GDM_SLAVE (slave), GDMCONFDIR "/Init", GDM_USERNAME);
+                         reset_session (slave);
+                 }
++                g_free(username);
+         } else {
+                 if (slave->priv->connection_attempts >= MAX_CONNECT_ATTEMPTS) {
+                         g_warning ("Unable to connect to display after %d tries - bailing out", slave->priv->connection_attempts);
+diff -ruN gdm-2.31.2.orig/gui/simple-greeter/gdm-chooser-widget.c gdm-2.31.2/gui/simple-greeter/gdm-chooser-widget.c
+--- gdm-2.31.2.orig/gui/simple-greeter/gdm-chooser-widget.c	2010-08-04 15:10:50.766808455 +0500
++++ gdm-2.31.2/gui/simple-greeter/gdm-chooser-widget.c	2010-08-04 15:10:58.746381939 +0500
+@@ -1343,6 +1343,11 @@
                  widget->priv->in_use_message = NULL;
          }
  
@@ -256,10 +343,10 @@
          G_OBJECT_CLASS (gdm_chooser_widget_parent_class)->dispose (object);
  }
  
-diff -ruN gdm-2.31.1.orig/gui/simple-greeter/gdm-first-time-login-helper.c gdm-2.31.1/gui/simple-greeter/gdm-first-time-login-helper.c
---- gdm-2.31.1.orig/gui/simple-greeter/gdm-first-time-login-helper.c	1969-12-31 19:00:00.000000000 -0500
-+++ gdm-2.31.1/gui/simple-greeter/gdm-first-time-login-helper.c	2010-06-11 14:52:59.316640013 -0400
-@@ -0,0 +1,262 @@
+diff -ruN gdm-2.31.2.orig/gui/simple-greeter/gdm-first-time-login-helper.c gdm-2.31.2/gui/simple-greeter/gdm-first-time-login-helper.c
+--- gdm-2.31.2.orig/gui/simple-greeter/gdm-first-time-login-helper.c	1970-01-01 05:00:00.000000000 +0500
++++ gdm-2.31.2/gui/simple-greeter/gdm-first-time-login-helper.c	2010-08-04 15:10:58.747285283 +0500
+@@ -0,0 +1,276 @@
 +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
 + *
 + * Copyright (c) 2010, Oracle and/or its affiliates.
@@ -325,6 +412,7 @@
 +        gtk_message_dialog_set_markup ((GtkMessageDialog *)dialog, display_text);
 +        g_free(display_text);
 +        gtk_window_set_title (GTK_WINDOW (dialog), title);
++        gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER_ALWAYS);
 +        image = gtk_image_new_from_icon_name ("user-info", GTK_ICON_SIZE_DIALOG);
 +        gtk_message_dialog_set_image ((GtkMessageDialog *)dialog, image);
 +        gtk_widget_show (image);
@@ -462,6 +550,18 @@
 +        return is_saved;
 +}
 +
++static void
++set_normal_cursor (void)
++{
++        GdkWindow *root_window;
++        GdkCursor *cursor;
++
++        root_window = gdk_screen_get_root_window (gdk_screen_get_default ());
++        cursor = gdk_cursor_new (GDK_LEFT_PTR);
++        gdk_window_set_cursor (root_window, cursor);
++        gdk_cursor_unref (cursor);
++}
++
 +int
 +main (int argc, char *argv[])
 +{
@@ -486,6 +586,7 @@
 +
 +        gtk_init (&argc, &argv);
 +
++        set_normal_cursor();
 +        run_dialog(480, 120, MESSAGE, NULL, &dialog_feedback);
 +        if (!dialog_feedback)
 +                return (ret);
@@ -522,10 +623,10 @@
 +        g_free(lang_name);
 +        return (ret);
 +}
-diff -ruN gdm-2.31.1.orig/gui/simple-greeter/gdm-language-chooser-dialog.c gdm-2.31.1/gui/simple-greeter/gdm-language-chooser-dialog.c
---- gdm-2.31.1.orig/gui/simple-greeter/gdm-language-chooser-dialog.c	2010-06-11 07:15:38.740551819 -0400
-+++ gdm-2.31.1/gui/simple-greeter/gdm-language-chooser-dialog.c	2010-06-11 14:52:59.313315771 -0400
-@@ -71,6 +71,17 @@ gdm_language_chooser_dialog_set_current_
+diff -ruN gdm-2.31.2.orig/gui/simple-greeter/gdm-language-chooser-dialog.c gdm-2.31.2/gui/simple-greeter/gdm-language-chooser-dialog.c
+--- gdm-2.31.2.orig/gui/simple-greeter/gdm-language-chooser-dialog.c	2010-08-04 15:10:50.743786468 +0500
++++ gdm-2.31.2/gui/simple-greeter/gdm-language-chooser-dialog.c	2010-08-04 15:10:58.751940770 +0500
+@@ -71,6 +71,17 @@
          gdm_language_chooser_widget_set_current_language_name (GDM_LANGUAGE_CHOOSER_WIDGET (dialog->priv->chooser_widget), language_name);
  }
  
@@ -543,7 +644,7 @@
  static void
  gdm_language_chooser_dialog_size_request (GtkWidget      *widget,
                                         GtkRequisition *requisition)
-@@ -164,7 +175,7 @@ gdm_language_chooser_dialog_init (GdmLan
+@@ -164,7 +175,7 @@
                                    dialog);
  
          gtk_dialog_add_buttons (GTK_DIALOG (dialog),
@@ -552,9 +653,9 @@
                                  GTK_STOCK_OK, GTK_RESPONSE_OK,
                                  NULL);
  
-diff -ruN gdm-2.31.1.orig/gui/simple-greeter/gdm-language-chooser-dialog.h gdm-2.31.1/gui/simple-greeter/gdm-language-chooser-dialog.h
---- gdm-2.31.1.orig/gui/simple-greeter/gdm-language-chooser-dialog.h	2010-06-11 07:15:38.753646630 -0400
-+++ gdm-2.31.1/gui/simple-greeter/gdm-language-chooser-dialog.h	2010-06-11 14:52:59.313780304 -0400
+diff -ruN gdm-2.31.2.orig/gui/simple-greeter/gdm-language-chooser-dialog.h gdm-2.31.2/gui/simple-greeter/gdm-language-chooser-dialog.h
+--- gdm-2.31.2.orig/gui/simple-greeter/gdm-language-chooser-dialog.h	2010-08-04 15:10:50.761828724 +0500
++++ gdm-2.31.2/gui/simple-greeter/gdm-language-chooser-dialog.h	2010-08-04 15:10:58.763479350 +0500
 @@ -53,6 +53,8 @@
  char *                 gdm_language_chooser_dialog_get_current_language_name      (GdmLanguageChooserDialog *dialog);
  void                   gdm_language_chooser_dialog_set_current_language_name      (GdmLanguageChooserDialog *dialog,
@@ -564,10 +665,10 @@
  
  G_END_DECLS
  
-diff -ruN gdm-2.31.1.orig/gui/simple-greeter/gdm-language-chooser-widget.c gdm-2.31.1/gui/simple-greeter/gdm-language-chooser-widget.c
---- gdm-2.31.1.orig/gui/simple-greeter/gdm-language-chooser-widget.c	2010-06-11 07:15:38.755026998 -0400
-+++ gdm-2.31.1/gui/simple-greeter/gdm-language-chooser-widget.c	2010-06-11 14:52:59.314323133 -0400
-@@ -248,6 +248,10 @@
+diff -ruN gdm-2.31.2.orig/gui/simple-greeter/gdm-language-chooser-widget.c gdm-2.31.2/gui/simple-greeter/gdm-language-chooser-widget.c
+--- gdm-2.31.2.orig/gui/simple-greeter/gdm-language-chooser-widget.c	2010-08-04 15:10:50.768239168 +0500
++++ gdm-2.31.2/gui/simple-greeter/gdm-language-chooser-widget.c	2010-08-04 15:10:58.776327976 +0500
+@@ -250,6 +250,10 @@
  
          gdm_chooser_widget_set_separator_position (GDM_CHOOSER_WIDGET (widget),
                                                     GDM_CHOOSER_WIDGET_POSITION_TOP);
@@ -578,10 +679,10 @@
  }
  
  static void
-diff -ruN gdm-2.31.1.orig/gui/simple-greeter/gdm-layout-chooser-dialog.c gdm-2.31.1/gui/simple-greeter/gdm-layout-chooser-dialog.c
---- gdm-2.31.1.orig/gui/simple-greeter/gdm-layout-chooser-dialog.c	2010-06-11 07:15:38.756735266 -0400
-+++ gdm-2.31.1/gui/simple-greeter/gdm-layout-chooser-dialog.c	2010-06-11 14:52:59.315037893 -0400
-@@ -71,6 +71,17 @@ gdm_layout_chooser_dialog_set_current_la
+diff -ruN gdm-2.31.2.orig/gui/simple-greeter/gdm-layout-chooser-dialog.c gdm-2.31.2/gui/simple-greeter/gdm-layout-chooser-dialog.c
+--- gdm-2.31.2.orig/gui/simple-greeter/gdm-layout-chooser-dialog.c	2010-08-04 15:10:50.747717767 +0500
++++ gdm-2.31.2/gui/simple-greeter/gdm-layout-chooser-dialog.c	2010-08-04 15:10:58.782283518 +0500
+@@ -71,6 +71,17 @@
          gdm_layout_chooser_widget_set_current_layout_name (GDM_LAYOUT_CHOOSER_WIDGET (dialog->priv->chooser_widget), layout_name);
  }
  
@@ -599,7 +700,7 @@
  static void
  gdm_layout_chooser_dialog_size_request (GtkWidget      *widget,
                                          GtkRequisition *requisition)
-@@ -138,6 +149,7 @@ queue_response (GdmLayoutChooserDialog *
+@@ -138,6 +149,7 @@
  static void
  gdm_layout_chooser_dialog_init (GdmLayoutChooserDialog *dialog)
  {
@@ -607,7 +708,7 @@
  
          dialog->priv = GDM_LAYOUT_CHOOSER_DIALOG_GET_PRIVATE (dialog);
  
-@@ -145,8 +157,12 @@ gdm_layout_chooser_dialog_init (GdmLayou
+@@ -145,8 +157,12 @@
          gdm_chooser_widget_set_hide_inactive_items (GDM_CHOOSER_WIDGET (dialog->priv->chooser_widget),
                                                      FALSE);
  
@@ -622,7 +723,7 @@
          gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), dialog->priv->chooser_widget);
  
          g_signal_connect_swapped (G_OBJECT (dialog->priv->chooser_widget),
-@@ -154,7 +170,7 @@ gdm_layout_chooser_dialog_init (GdmLayou
+@@ -154,7 +170,7 @@
                                    dialog);
  
          gtk_dialog_add_buttons (GTK_DIALOG (dialog),
@@ -631,9 +732,9 @@
                                  GTK_STOCK_OK, GTK_RESPONSE_OK,
                                  NULL);
  
-diff -ruN gdm-2.31.1.orig/gui/simple-greeter/gdm-layout-chooser-dialog.h gdm-2.31.1/gui/simple-greeter/gdm-layout-chooser-dialog.h
---- gdm-2.31.1.orig/gui/simple-greeter/gdm-layout-chooser-dialog.h	2010-06-11 07:15:38.746534465 -0400
-+++ gdm-2.31.1/gui/simple-greeter/gdm-layout-chooser-dialog.h	2010-06-11 14:52:59.315471954 -0400
+diff -ruN gdm-2.31.2.orig/gui/simple-greeter/gdm-layout-chooser-dialog.h gdm-2.31.2/gui/simple-greeter/gdm-layout-chooser-dialog.h
+--- gdm-2.31.2.orig/gui/simple-greeter/gdm-layout-chooser-dialog.h	2010-08-04 15:10:50.764176346 +0500
++++ gdm-2.31.2/gui/simple-greeter/gdm-layout-chooser-dialog.h	2010-08-04 15:10:58.783055208 +0500
 @@ -53,6 +53,7 @@
  char *                 gdm_layout_chooser_dialog_get_current_layout_name      (GdmLayoutChooserDialog *dialog);
  void                   gdm_layout_chooser_dialog_set_current_layout_name      (GdmLayoutChooserDialog *dialog,
@@ -642,10 +743,10 @@
  
  G_END_DECLS
  
-diff -ruN gdm-2.31.1.orig/gui/simple-greeter/gdm-layout-chooser-widget.c gdm-2.31.1/gui/simple-greeter/gdm-layout-chooser-widget.c
---- gdm-2.31.1.orig/gui/simple-greeter/gdm-layout-chooser-widget.c	2010-06-11 07:15:38.741291577 -0400
-+++ gdm-2.31.1/gui/simple-greeter/gdm-layout-chooser-widget.c	2010-06-11 14:52:59.315951894 -0400
-@@ -174,6 +174,10 @@
+diff -ruN gdm-2.31.2.orig/gui/simple-greeter/gdm-layout-chooser-widget.c gdm-2.31.2/gui/simple-greeter/gdm-layout-chooser-widget.c
+--- gdm-2.31.2.orig/gui/simple-greeter/gdm-layout-chooser-widget.c	2010-08-04 15:10:50.762981662 +0500
++++ gdm-2.31.2/gui/simple-greeter/gdm-layout-chooser-widget.c	2010-08-04 15:10:58.785260833 +0500
+@@ -176,6 +176,10 @@
  
          gdm_chooser_widget_set_separator_position (GDM_CHOOSER_WIDGET (widget),
                                                     GDM_CHOOSER_WIDGET_POSITION_TOP);
@@ -656,9 +757,9 @@
  }
  
  static void
-diff -ruN gdm-2.31.1.orig/gui/simple-greeter/gdm-session-chooser-dialog.c gdm-2.31.1/gui/simple-greeter/gdm-session-chooser-dialog.c
---- gdm-2.31.1.orig/gui/simple-greeter/gdm-session-chooser-dialog.c	1969-12-31 19:00:00.000000000 -0500
-+++ gdm-2.31.1/gui/simple-greeter/gdm-session-chooser-dialog.c	2010-06-11 14:52:59.317196282 -0400
+diff -ruN gdm-2.31.2.orig/gui/simple-greeter/gdm-session-chooser-dialog.c gdm-2.31.2/gui/simple-greeter/gdm-session-chooser-dialog.c
+--- gdm-2.31.2.orig/gui/simple-greeter/gdm-session-chooser-dialog.c	1970-01-01 05:00:00.000000000 +0500
++++ gdm-2.31.2/gui/simple-greeter/gdm-session-chooser-dialog.c	2010-08-04 15:10:58.785902411 +0500
 @@ -0,0 +1,216 @@
 +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
 + *
@@ -876,9 +977,9 @@
 +
 +        return GTK_WIDGET (object);
 +}
-diff -ruN gdm-2.31.1.orig/gui/simple-greeter/gdm-session-chooser-dialog.h gdm-2.31.1/gui/simple-greeter/gdm-session-chooser-dialog.h
---- gdm-2.31.1.orig/gui/simple-greeter/gdm-session-chooser-dialog.h	1969-12-31 19:00:00.000000000 -0500
-+++ gdm-2.31.1/gui/simple-greeter/gdm-session-chooser-dialog.h	2010-06-11 14:52:59.317609062 -0400
+diff -ruN gdm-2.31.2.orig/gui/simple-greeter/gdm-session-chooser-dialog.h gdm-2.31.2/gui/simple-greeter/gdm-session-chooser-dialog.h
+--- gdm-2.31.2.orig/gui/simple-greeter/gdm-session-chooser-dialog.h	1970-01-01 05:00:00.000000000 +0500
++++ gdm-2.31.2/gui/simple-greeter/gdm-session-chooser-dialog.h	2010-08-04 15:10:58.786379025 +0500
 @@ -0,0 +1,64 @@
 +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
 + *
@@ -944,9 +1045,9 @@
 +G_END_DECLS
 +
 +#endif /* __GDM_SESSION_CHOOSER_DIALOG_H */
-diff -ruN gdm-2.31.1.orig/gui/simple-greeter/gdm-session-chooser-widget.c gdm-2.31.1/gui/simple-greeter/gdm-session-chooser-widget.c
---- gdm-2.31.1.orig/gui/simple-greeter/gdm-session-chooser-widget.c	1969-12-31 19:00:00.000000000 -0500
-+++ gdm-2.31.1/gui/simple-greeter/gdm-session-chooser-widget.c	2010-06-11 14:52:59.318130861 -0400
+diff -ruN gdm-2.31.2.orig/gui/simple-greeter/gdm-session-chooser-widget.c gdm-2.31.2/gui/simple-greeter/gdm-session-chooser-widget.c
+--- gdm-2.31.2.orig/gui/simple-greeter/gdm-session-chooser-widget.c	1970-01-01 05:00:00.000000000 +0500
++++ gdm-2.31.2/gui/simple-greeter/gdm-session-chooser-widget.c	2010-08-04 15:10:58.786928675 +0500
 @@ -0,0 +1,210 @@
 +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
 + *
@@ -1158,9 +1259,9 @@
 +
 +        return GTK_WIDGET (object);
 +}
-diff -ruN gdm-2.31.1.orig/gui/simple-greeter/gdm-session-chooser-widget.h gdm-2.31.1/gui/simple-greeter/gdm-session-chooser-widget.h
---- gdm-2.31.1.orig/gui/simple-greeter/gdm-session-chooser-widget.h	1969-12-31 19:00:00.000000000 -0500
-+++ gdm-2.31.1/gui/simple-greeter/gdm-session-chooser-widget.h	2010-06-11 14:52:59.318508546 -0400
+diff -ruN gdm-2.31.2.orig/gui/simple-greeter/gdm-session-chooser-widget.h gdm-2.31.2/gui/simple-greeter/gdm-session-chooser-widget.h
+--- gdm-2.31.2.orig/gui/simple-greeter/gdm-session-chooser-widget.h	1970-01-01 05:00:00.000000000 +0500
++++ gdm-2.31.2/gui/simple-greeter/gdm-session-chooser-widget.h	2010-08-04 15:10:58.787338809 +0500
 @@ -0,0 +1,61 @@
 +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
 + *
@@ -1223,10 +1324,10 @@
 +G_END_DECLS
 +
 +#endif /* __GDM_SESSION_CHOOSER_WIDGET_H */
-diff -ruN gdm-2.31.1.orig/gui/simple-greeter/Makefile.am gdm-2.31.1/gui/simple-greeter/Makefile.am
---- gdm-2.31.1.orig/gui/simple-greeter/Makefile.am	2010-06-11 07:15:38.746234174 -0400
-+++ gdm-2.31.1/gui/simple-greeter/Makefile.am	2010-06-11 14:52:59.308364532 -0400
-@@ -269,7 +269,8 @@
+diff -ruN gdm-2.31.2.orig/gui/simple-greeter/Makefile.am gdm-2.31.2/gui/simple-greeter/Makefile.am
+--- gdm-2.31.2.orig/gui/simple-greeter/Makefile.am	2010-08-04 15:10:50.763317372 +0500
++++ gdm-2.31.2/gui/simple-greeter/Makefile.am	2010-08-04 15:10:58.723556829 +0500
+@@ -281,7 +281,8 @@
  	$(NULL)
  
  libexec_PROGRAMS =			\
@@ -1236,7 +1337,7 @@
  
  gdm_simple_greeter_SOURCES =  		\
  	greeter-main.c 			\
-@@ -334,6 +335,62 @@
+@@ -348,6 +349,62 @@
  	$(DEVKIT_POWER_LIBS)		\
  	$(NULL)
  
--- a/patches/gdm-23-unnamed-union.diff	Wed Aug 04 14:25:56 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
---- gdm-2.30.4/gui/simple-greeter/gdm-user-manager.c.ori	2010-07-20 03:31:59.111785942 +0100
-+++ gdm-2.30.4/gui/simple-greeter/gdm-user-manager.c	2010-07-20 03:32:13.747579170 +0100
-@@ -93,7 +93,7 @@
-         union {
-                 DBusGProxyCall      *get_current_session_call;
-                 DBusGProxyCall      *get_seat_id_call;
--        };
-+        } proxy_call;
- 
-         DBusGProxy                  *proxy;
- } GdmUserManagerSeat;
-@@ -116,7 +116,7 @@
-         union {
-                 DBusGProxyCall          *get_unix_user_call;
-                 DBusGProxyCall          *get_x11_display_call;
--        };
-+        } proxy_call;
- 
-         DBusGProxy                      *proxy;
- 
-@@ -542,7 +542,7 @@
-         char           *seat_id;
-         gboolean        res;
- 
--        g_assert (manager->priv->seat.get_seat_id_call == call);
-+        g_assert (manager->priv->seat.proxy_call.get_seat_id_call == call);
- 
-         error = NULL;
-         seat_id = NULL;
-@@ -552,7 +552,7 @@
-                                      DBUS_TYPE_G_OBJECT_PATH,
-                                      &seat_id,
-                                      G_TYPE_INVALID);
--        manager->priv->seat.get_seat_id_call = NULL;
-+        manager->priv->seat.proxy_call.get_seat_id_call = NULL;
-         g_object_unref (proxy);
- 
-         if (! res) {
-@@ -604,7 +604,7 @@
-                 goto failed;
-         }
- 
--        manager->priv->seat.get_seat_id_call = call;
-+        manager->priv->seat.proxy_call.get_seat_id_call = call;
- 
-         return;
- 
-@@ -742,7 +742,7 @@
-         char           *session_id;
-         gboolean        res;
- 
--        g_assert (manager->priv->seat.get_current_session_call == call);
-+        g_assert (manager->priv->seat.proxy_call.get_current_session_call == call);
-         g_assert (manager->priv->seat.state == GDM_USER_MANAGER_SEAT_STATE_GET_SESSION_ID);
- 
-         error = NULL;
-@@ -753,7 +753,7 @@
-                                      DBUS_TYPE_G_OBJECT_PATH,
-                                      &session_id,
-                                      G_TYPE_INVALID);
--        manager->priv->seat.get_current_session_call = NULL;
-+        manager->priv->seat.proxy_call.get_current_session_call = NULL;
-         g_object_unref (proxy);
- 
-         if (! res) {
-@@ -801,7 +801,7 @@
-                 goto failed;
-         }
- 
--        manager->priv->seat.get_current_session_call = call;
-+        manager->priv->seat.proxy_call.get_current_session_call = call;
- 
-         return;
- 
-@@ -870,7 +870,7 @@
- 
-         manager = new_session->manager;
- 
--        g_assert (new_session->get_unix_user_call == call);
-+        g_assert (new_session->proxy_call.get_unix_user_call == call);
- 
-         error = NULL;
-         uid = (guint) -1;
-@@ -879,7 +879,7 @@
-                                      &error,
-                                      G_TYPE_UINT, &uid,
-                                      G_TYPE_INVALID);
--        new_session->get_unix_user_call = NULL;
-+        new_session->proxy_call.get_unix_user_call = NULL;
- 
-         if (! res) {
-                 if (error != NULL) {
-@@ -922,7 +922,7 @@
-                 goto failed;
-         }
- 
--        new_session->get_unix_user_call = call;
-+        new_session->proxy_call.get_unix_user_call = call;
-         return;
- 
- failed:
-@@ -938,7 +938,7 @@
-         char     *x11_display;
-         gboolean  res;
- 
--        g_assert (new_session->get_x11_display_call == call);
-+        g_assert (new_session->proxy_call.get_x11_display_call == call);
- 
-         error = NULL;
-         x11_display = NULL;
-@@ -948,7 +948,7 @@
-                                      G_TYPE_STRING,
-                                      &x11_display,
-                                      G_TYPE_INVALID);
--        new_session->get_x11_display_call = NULL;
-+        new_session->proxy_call.get_x11_display_call = NULL;
- 
-         if (! res) {
-                 if (error != NULL) {
-@@ -991,7 +991,7 @@
-                 goto failed;
-         }
- 
--        new_session->get_x11_display_call = call;
-+        new_session->proxy_call.get_x11_display_call = call;
-         return;
- 
- failed: