[gdm] Update to 2.91.6

Ray Strode rstrode at fedoraproject.org
Thu Feb 3 03:11:30 UTC 2011


commit 0b20eb823afc068a436ca67b618ef156107c1747
Author: Ray Strode <rstrode at redhat.com>
Date:   Wed Feb 2 22:09:45 2011 -0500

    Update to 2.91.6

 gdm-multistack.patch | 1277 +++++++++++++++++++++++---------------------------
 gdm.spec             |   35 +-
 2 files changed, 602 insertions(+), 710 deletions(-)
---
diff --git a/gdm-multistack.patch b/gdm-multistack.patch
index dfb211a..5cd4087 100644
--- a/gdm-multistack.patch
+++ b/gdm-multistack.patch
@@ -1,4 +1,4 @@
-From 1a8f15321d71e8700777b859bd703b80572fa4b6 Mon Sep 17 00:00:00 2001
+From 2ee1172a7fbef12c0a6766b07b3ca8fe9439007b Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Thu, 22 Jul 2010 13:38:09 -0400
 Subject: [PATCH 01/35] Revert "Don't wait a mandatory 2 seconds when resetting greeter"
@@ -12,7 +12,7 @@ long enough.  A better fix would belong in the greeter.
  1 files changed, 1 insertions(+), 1 deletions(-)
 
 diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
-index e3cb96d..8906e3a 100644
+index a03ccfc..3081005 100644
 --- a/daemon/gdm-simple-slave.c
 +++ b/daemon/gdm-simple-slave.c
 @@ -294,7 +294,7 @@ queue_greeter_reset (GdmSimpleSlave *slave)
@@ -25,10 +25,10 @@ index e3cb96d..8906e3a 100644
  
  static void
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 1538a1859971d7ed886a6d2490dc346bac05f672 Mon Sep 17 00:00:00 2001
+From 5eb1e0e96d337484c3e6546ed12af4c9eb7487cf Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Wed, 7 Jul 2010 17:16:38 -0400
 Subject: [PATCH 02/35] Don't set list-visible unless the widget is visible
@@ -46,7 +46,7 @@ isn't visible to begin with.
  1 files changed, 1 insertions(+), 1 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-chooser-widget.c b/gui/simple-greeter/gdm-chooser-widget.c
-index db2d9b2..5a078e8 100644
+index db2d9b2..ed2c3cc 100644
 --- a/gui/simple-greeter/gdm-chooser-widget.c
 +++ b/gui/simple-greeter/gdm-chooser-widget.c
 @@ -699,7 +699,7 @@ update_chooser_visibility (GdmChooserWidget *widget)
@@ -54,15 +54,15 @@ index db2d9b2..5a078e8 100644
          if (gdm_chooser_widget_get_number_of_items (widget) > 0) {
                  gtk_widget_show (widget->priv->frame);
 -                set_chooser_list_visible (widget, TRUE);
-+                set_chooser_list_visible (widget, GTK_WIDGET_VISIBLE (widget));
++                set_chooser_list_visible (widget, gtk_widget_get_visible (widget));
          } else {
                  gtk_widget_hide (widget->priv->frame);
                  set_chooser_list_visible (widget, FALSE);
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 35e2c60276db3ff902c3f7ad98b6a508e68ab7a9 Mon Sep 17 00:00:00 2001
+From 04327b6c06566a00f5916b872944b637dcb8b30e Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Mon, 28 Jun 2010 14:35:35 -0400
 Subject: [PATCH 03/35] Add user chooser to ui file
@@ -76,10 +76,10 @@ This way is a lot cleaner.
  2 files changed, 22 insertions(+), 7 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
-index 6069e00..b7ee893 100644
+index 9a21edd..9249906 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.c
 +++ b/gui/simple-greeter/gdm-greeter-login-window.c
-@@ -1224,6 +1224,17 @@ create_computer_info (GdmGreeterLoginWindow *login_window)
+@@ -1222,6 +1222,17 @@ create_computer_info (GdmGreeterLoginWindow *login_window)
  
  
  static void
@@ -97,7 +97,7 @@ index 6069e00..b7ee893 100644
  load_theme (GdmGreeterLoginWindow *login_window)
  {
          GtkWidget *entry;
-@@ -1234,6 +1245,8 @@ load_theme (GdmGreeterLoginWindow *login_window)
+@@ -1232,6 +1243,8 @@ load_theme (GdmGreeterLoginWindow *login_window)
  
          gdm_profile_start (NULL);
  
@@ -106,7 +106,7 @@ index 6069e00..b7ee893 100644
          login_window->priv->builder = gtk_builder_new ();
          if (!gtk_builder_add_from_file (login_window->priv->builder, UIDIR "/" UI_XML_FILE, &error)) {
                  g_warning ("Couldn't load builder file: %s", error->message);
-@@ -1267,12 +1280,7 @@ load_theme (GdmGreeterLoginWindow *login_window)
+@@ -1265,12 +1278,7 @@ load_theme (GdmGreeterLoginWindow *login_window)
          box = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "window-frame"));
          gtk_container_add (GTK_CONTAINER (login_window), box);
  
@@ -121,7 +121,7 @@ index 6069e00..b7ee893 100644
          gdm_user_chooser_widget_set_show_only_chosen (GDM_USER_CHOOSER_WIDGET (login_window->priv->user_chooser), TRUE);
  
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.ui b/gui/simple-greeter/gdm-greeter-login-window.ui
-index d8cf1cc..83375ed 100644
+index 9f1bc69..946ec6b 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.ui
 +++ b/gui/simple-greeter/gdm-greeter-login-window.ui
 @@ -160,7 +160,14 @@
@@ -141,10 +141,10 @@ index d8cf1cc..83375ed 100644
                          <child>
                            <object class="GtkHBox" id="auth-input-box">
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 863ef39bb74f65363fa0edfd6970199c11f7f433 Mon Sep 17 00:00:00 2001
+From bfe00e563553f2c7948135e5674c3edbce15bd97 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Fri, 20 Feb 2009 14:05:20 -0500
 Subject: [PATCH 04/35] Add new api to ask when chooser widget is done loading items
@@ -155,7 +155,7 @@ Subject: [PATCH 04/35] Add new api to ask when chooser widget is done loading it
  2 files changed, 10 insertions(+), 0 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-chooser-widget.c b/gui/simple-greeter/gdm-chooser-widget.c
-index 5a078e8..6b4dd67 100644
+index ed2c3cc..4694ef3 100644
 --- a/gui/simple-greeter/gdm-chooser-widget.c
 +++ b/gui/simple-greeter/gdm-chooser-widget.c
 @@ -99,6 +99,7 @@ struct GdmChooserWidgetPrivate
@@ -197,10 +197,10 @@ index 11a6456..3f6fea3 100644
   */
  void           gdm_chooser_widget_loaded                       (GdmChooserWidget          *widget);
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 50929cd96a824e88daf0f9dc4aa21b99fc841f60 Mon Sep 17 00:00:00 2001
+From 470493fa63361cde617f242aa9fa10d14d9cff13 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Fri, 6 Mar 2009 11:19:40 -0500
 Subject: [PATCH 05/35] Create session settings object up front
@@ -212,10 +212,10 @@ before the PAM conversation is started.
  1 files changed, 1 insertions(+), 2 deletions(-)
 
 diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
-index 281c554..e8ebc60 100644
+index 648d6f7..0a0d585 100644
 --- a/daemon/gdm-session-worker.c
 +++ b/daemon/gdm-session-worker.c
-@@ -2297,8 +2297,6 @@ do_setup (GdmSessionWorker *worker)
+@@ -2249,8 +2249,6 @@ do_setup (GdmSessionWorker *worker)
          GError  *error;
          gboolean res;
  
@@ -224,7 +224,7 @@ index 281c554..e8ebc60 100644
          g_signal_connect_swapped (worker->priv->user_settings,
                                    "notify::language-name",
                                    G_CALLBACK (on_saved_language_name_read),
-@@ -2924,6 +2922,7 @@ gdm_session_worker_init (GdmSessionWorker *worker)
+@@ -2869,6 +2867,7 @@ gdm_session_worker_init (GdmSessionWorker *worker)
                                                             g_str_equal,
                                                             (GDestroyNotify) g_free,
                                                             (GDestroyNotify) g_free);
@@ -233,21 +233,21 @@ index 281c554..e8ebc60 100644
  
  static void
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 7c5bd8125257dff521474681c3cbbf43ec56e1bc Mon Sep 17 00:00:00 2001
+From 205889de436a834a3e28150869ba2156ee802eba Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Tue, 13 Jul 2010 22:42:43 -0400
 Subject: [PATCH 06/35] disconnect signal handlers in destroy session
 
 We don't want them firing as part of object destruction
 ---
- daemon/gdm-simple-slave.c |  104 ++++++++++++++++++++++++++++++++++++++++----
- 1 files changed, 94 insertions(+), 10 deletions(-)
+ daemon/gdm-simple-slave.c |  100 ++++++++++++++++++++++++++++++++++++++++-----
+ 1 files changed, 90 insertions(+), 10 deletions(-)
 
 diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
-index 8906e3a..6a90d02 100644
+index 3081005..8f80cb7 100644
 --- a/daemon/gdm-simple-slave.c
 +++ b/daemon/gdm-simple-slave.c
 @@ -104,6 +104,7 @@ static void     gdm_simple_slave_finalize       (GObject             *object);
@@ -275,7 +275,7 @@ index 8906e3a..6a90d02 100644
  reset_session (GdmSimpleSlave *slave)
  {
          destroy_session (slave);
-@@ -851,6 +842,99 @@ create_new_session (GdmSimpleSlave *slave)
+@@ -834,6 +825,95 @@ create_new_session (GdmSimpleSlave *slave)
  }
  
  static void
@@ -359,10 +359,6 @@ index 8906e3a..6a90d02 100644
 +                                              slave);
 +
 +        g_signal_handlers_disconnect_by_func (slave->priv->session,
-+                                              G_CALLBACK (on_default_layout_name_changed),
-+                                              slave);
-+
-+        g_signal_handlers_disconnect_by_func (slave->priv->session,
 +                                              G_CALLBACK (on_default_session_name_changed),
 +                                              slave);
 +
@@ -376,10 +372,10 @@ index 8906e3a..6a90d02 100644
                            GdmSimpleSlave    *slave)
  {
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 71c371f27fe31cc3f41a5d33dceb66aacec96c8d Mon Sep 17 00:00:00 2001
+From 4da3c0e64bc4763ad73bb3fa4b9e0a82097e3b52 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Fri, 16 Jan 2009 11:00:08 -0500
 Subject: [PATCH 07/35] Introduce new Conversation object
@@ -398,7 +394,7 @@ screen is talking to.
 ---
  daemon/gdm-factory-slave.c      |    5 +-
  daemon/gdm-product-slave.c      |   29 +++-
- daemon/gdm-session-direct.c     |  318 ++++++++++++++++++++++++---------------
+ daemon/gdm-session-direct.c     |  314 ++++++++++++++++++++++++---------------
  daemon/gdm-session-private.h    |    3 +-
  daemon/gdm-session-relay.c      |   15 ++-
  daemon/gdm-session-worker-job.c |    7 +
@@ -407,10 +403,10 @@ screen is talking to.
  daemon/gdm-session.h            |    9 +-
  daemon/gdm-simple-slave.c       |    3 -
  daemon/test-session.c           |    5 +-
- 11 files changed, 263 insertions(+), 145 deletions(-)
+ 11 files changed, 260 insertions(+), 144 deletions(-)
 
 diff --git a/daemon/gdm-factory-slave.c b/daemon/gdm-factory-slave.c
-index b413497..0151ab2 100644
+index 5727986..109271a 100644
 --- a/daemon/gdm-factory-slave.c
 +++ b/daemon/gdm-factory-slave.c
 @@ -181,7 +181,8 @@ on_session_secret_info_query (GdmSession      *session,
@@ -433,7 +429,7 @@ index b413497..0151ab2 100644
  
  static void
 diff --git a/daemon/gdm-product-slave.c b/daemon/gdm-product-slave.c
-index a423965..9be89b4 100644
+index 2d1109e..84d5c49 100644
 --- a/daemon/gdm-product-slave.c
 +++ b/daemon/gdm-product-slave.c
 @@ -246,19 +246,21 @@ relay_session_started (GdmProductSlave *slave,
@@ -462,7 +458,7 @@ index a423965..9be89b4 100644
  }
  
  static void
-@@ -805,7 +807,24 @@ static void
+@@ -783,7 +785,24 @@ static void
  on_relay_start_conversation (GdmProductSlave *slave,
                               DBusMessage     *message)
  {
@@ -489,7 +485,7 @@ index a423965..9be89b4 100644
  
  static void
 diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c
-index 223f6f4..aa76f52 100644
+index c8361b4..39ff815 100644
 --- a/daemon/gdm-session-direct.c
 +++ b/daemon/gdm-session-direct.c
 @@ -67,6 +67,16 @@
@@ -509,7 +505,7 @@ index 223f6f4..aa76f52 100644
  struct _GdmSessionDirectPrivate
  {
          /* per open scope */
-@@ -79,8 +89,7 @@ struct _GdmSessionDirectPrivate
+@@ -77,8 +87,7 @@ struct _GdmSessionDirectPrivate
          char                *selected_user;
          char                *user_x11_authority_file;
  
@@ -519,7 +515,7 @@ index 223f6f4..aa76f52 100644
  
          GdmSessionWorkerJob *job;
          GPid                 session_pid;
-@@ -123,39 +132,39 @@ G_DEFINE_TYPE_WITH_CODE (GdmSessionDirect,
+@@ -121,39 +130,39 @@ G_DEFINE_TYPE_WITH_CODE (GdmSessionDirect,
                                                  gdm_session_iface_init))
  
  static gboolean
@@ -566,7 +562,7 @@ index 223f6f4..aa76f52 100644
  
          message = dbus_message_new_signal (GDM_SESSION_DBUS_PATH,
                                             GDM_SESSION_DBUS_INTERFACE,
-@@ -164,7 +173,7 @@ send_dbus_string_signal (GdmSessionDirect *session,
+@@ -162,7 +171,7 @@ send_dbus_string_signal (GdmSessionDirect *session,
          dbus_message_iter_init_append (message, &iter);
          dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &text);
  
@@ -575,7 +571,7 @@ index 223f6f4..aa76f52 100644
                  g_debug ("GdmSessionDirect: Could not send %s signal",
                           name ? name : "(null)");
          }
-@@ -173,18 +182,18 @@ send_dbus_string_signal (GdmSessionDirect *session,
+@@ -171,18 +180,18 @@ send_dbus_string_signal (GdmSessionDirect *session,
  }
  
  static void
@@ -598,7 +594,7 @@ index 223f6f4..aa76f52 100644
                  g_debug ("GdmSessionDirect: Could not send %s signal", name);
          }
  
-@@ -196,22 +205,32 @@ on_authentication_failed (GdmSession *session,
+@@ -194,22 +203,32 @@ on_authentication_failed (GdmSession *session,
                            const char *message)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
@@ -641,7 +637,7 @@ index 223f6f4..aa76f52 100644
  }
  
  static void
-@@ -219,11 +238,16 @@ on_session_start_failed (GdmSession *session,
+@@ -217,11 +236,16 @@ on_session_start_failed (GdmSession *session,
                           const char *message)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
@@ -663,7 +659,7 @@ index 223f6f4..aa76f52 100644
  }
  
  static void
-@@ -231,6 +255,7 @@ on_session_exited (GdmSession *session,
+@@ -229,6 +253,7 @@ on_session_exited (GdmSession *session,
                     int        exit_code)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
@@ -671,7 +667,7 @@ index 223f6f4..aa76f52 100644
          gdm_session_record_logout (impl->priv->session_pid,
                                     impl->priv->selected_user,
                                     impl->priv->display_hostname,
-@@ -815,54 +840,52 @@ gdm_session_direct_handle_username_changed (GdmSessionDirect *session,
+@@ -765,54 +790,52 @@ gdm_session_direct_handle_username_changed (GdmSessionDirect *session,
  }
  
  static void
@@ -743,7 +739,7 @@ index 223f6f4..aa76f52 100644
  }
  
  static DBusHandlerResult
-@@ -872,6 +895,9 @@ gdm_session_direct_handle_info_query (GdmSessionDirect *session,
+@@ -822,6 +845,9 @@ gdm_session_direct_handle_info_query (GdmSessionDirect *session,
  {
          DBusError    error;
          const char  *text;
@@ -753,7 +749,7 @@ index 223f6f4..aa76f52 100644
  
          dbus_error_init (&error);
          if (! dbus_message_get_args (message, &error,
-@@ -880,7 +906,7 @@ gdm_session_direct_handle_info_query (GdmSessionDirect *session,
+@@ -830,7 +856,7 @@ gdm_session_direct_handle_info_query (GdmSessionDirect *session,
                  g_warning ("ERROR: %s", error.message);
          }
  
@@ -762,7 +758,7 @@ index 223f6f4..aa76f52 100644
  
          g_debug ("GdmSessionDirect: Emitting 'info-query' signal");
          _gdm_session_info_query (GDM_SESSION (session), text);
-@@ -895,6 +921,9 @@ gdm_session_direct_handle_secret_info_query (GdmSessionDirect *session,
+@@ -845,6 +871,9 @@ gdm_session_direct_handle_secret_info_query (GdmSessionDirect *session,
  {
          DBusError    error;
          const char  *text;
@@ -772,7 +768,7 @@ index 223f6f4..aa76f52 100644
  
          dbus_error_init (&error);
          if (! dbus_message_get_args (message, &error,
-@@ -903,7 +932,7 @@ gdm_session_direct_handle_secret_info_query (GdmSessionDirect *session,
+@@ -853,7 +882,7 @@ gdm_session_direct_handle_secret_info_query (GdmSessionDirect *session,
                  g_warning ("ERROR: %s", error.message);
          }
  
@@ -781,7 +777,7 @@ index 223f6f4..aa76f52 100644
  
          g_debug ("GdmSessionDirect: Emitting 'secret-info-query' signal");
          _gdm_session_secret_info_query (GDM_SESSION (session), text);
-@@ -943,9 +972,13 @@ gdm_session_direct_handle_cancel_pending_query (GdmSessionDirect *session,
+@@ -893,9 +922,13 @@ gdm_session_direct_handle_cancel_pending_query (GdmSessionDirect *session,
                                                  DBusMessage      *message)
  {
          DBusMessage *reply;
@@ -796,7 +792,7 @@ index 223f6f4..aa76f52 100644
  
          reply = dbus_message_new_method_return (message);
          dbus_connection_send (connection, reply, NULL);
-@@ -1567,16 +1600,18 @@ handle_connection (DBusServer      *server,
+@@ -1482,16 +1515,18 @@ handle_connection (DBusServer      *server,
                     void            *user_data)
  {
          GdmSessionDirect *session = GDM_SESSION_DIRECT (user_data);
@@ -817,7 +813,7 @@ index 223f6f4..aa76f52 100644
                  dbus_connection_ref (new_connection);
                  dbus_connection_setup_with_g_main (new_connection, NULL);
  
-@@ -1594,7 +1629,8 @@ handle_connection (DBusServer      *server,
+@@ -1509,7 +1544,8 @@ handle_connection (DBusServer      *server,
                                                        session);
  
                  g_debug ("GdmSessionDirect: Emitting conversation-started signal");
@@ -827,7 +823,7 @@ index 223f6f4..aa76f52 100644
          }
  }
  
-@@ -1664,8 +1700,6 @@ gdm_session_direct_init (GdmSessionDirect *session)
+@@ -1579,8 +1615,6 @@ gdm_session_direct_init (GdmSessionDirect *session)
                            G_CALLBACK (on_session_exited),
                            NULL);
  
@@ -836,7 +832,7 @@ index 223f6f4..aa76f52 100644
          session->priv->environment = g_hash_table_new_full (g_str_hash,
                                                              g_str_equal,
                                                              (GDestroyNotify) g_free,
-@@ -1677,7 +1711,7 @@ gdm_session_direct_init (GdmSessionDirect *session)
+@@ -1592,7 +1626,7 @@ gdm_session_direct_init (GdmSessionDirect *session)
  
  static void
  worker_started (GdmSessionWorkerJob *job,
@@ -845,7 +841,7 @@ index 223f6f4..aa76f52 100644
  {
          g_debug ("GdmSessionDirect: Worker job started");
  }
-@@ -1685,87 +1719,105 @@ worker_started (GdmSessionWorkerJob *job,
+@@ -1600,87 +1634,105 @@ worker_started (GdmSessionWorkerJob *job,
  static void
  worker_exited (GdmSessionWorkerJob *job,
                 int                  code,
@@ -987,7 +983,7 @@ index 223f6f4..aa76f52 100644
  }
  
  static void
-@@ -1778,6 +1830,7 @@ send_setup (GdmSessionDirect *session,
+@@ -1693,6 +1745,7 @@ send_setup (GdmSessionDirect *session,
          const char     *display_device;
          const char     *display_hostname;
          const char     *display_x11_authority_file;
@@ -995,7 +991,7 @@ index 223f6f4..aa76f52 100644
  
          g_assert (service_name != NULL);
  
-@@ -1815,7 +1868,8 @@ send_setup (GdmSessionDirect *session,
+@@ -1730,7 +1783,8 @@ send_setup (GdmSessionDirect *session,
          dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_hostname);
          dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_x11_authority_file);
  
@@ -1005,7 +1001,7 @@ index 223f6f4..aa76f52 100644
                  g_debug ("GdmSessionDirect: Could not send %s signal", "Setup");
          }
  
-@@ -1833,6 +1887,7 @@ send_setup_for_user (GdmSessionDirect *session,
+@@ -1748,6 +1802,7 @@ send_setup_for_user (GdmSessionDirect *session,
          const char     *display_hostname;
          const char     *display_x11_authority_file;
          const char     *selected_user;
@@ -1013,7 +1009,7 @@ index 223f6f4..aa76f52 100644
  
          g_assert (service_name != NULL);
  
-@@ -1876,7 +1931,8 @@ send_setup_for_user (GdmSessionDirect *session,
+@@ -1791,7 +1846,8 @@ send_setup_for_user (GdmSessionDirect *session,
          dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_x11_authority_file);
          dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &selected_user);
  
@@ -1023,7 +1019,7 @@ index 223f6f4..aa76f52 100644
                  g_debug ("GdmSessionDirect: Could not send %s signal", "SetupForUser");
          }
  
-@@ -1890,7 +1946,8 @@ gdm_session_direct_setup (GdmSession *session,
+@@ -1805,7 +1861,8 @@ gdm_session_direct_setup (GdmSession *session,
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
  
          g_return_if_fail (session != NULL);
@@ -1033,7 +1029,7 @@ index 223f6f4..aa76f52 100644
  
          send_setup (impl, service_name);
          gdm_session_direct_defaults_changed (impl);
-@@ -1904,7 +1961,8 @@ gdm_session_direct_setup_for_user (GdmSession *session,
+@@ -1819,7 +1876,8 @@ gdm_session_direct_setup_for_user (GdmSession *session,
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
  
          g_return_if_fail (session != NULL);
@@ -1043,7 +1039,7 @@ index 223f6f4..aa76f52 100644
          g_return_if_fail (username != NULL);
  
          gdm_session_direct_select_user (session, username);
-@@ -1917,22 +1975,28 @@ static void
+@@ -1832,22 +1890,28 @@ static void
  gdm_session_direct_authenticate (GdmSession *session)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
@@ -1076,7 +1072,7 @@ index 223f6f4..aa76f52 100644
  }
  
  static void
-@@ -1940,16 +2004,19 @@ gdm_session_direct_accredit (GdmSession *session,
+@@ -1855,16 +1919,19 @@ gdm_session_direct_accredit (GdmSession *session,
                               int         cred_flag)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
@@ -1099,7 +1095,7 @@ index 223f6f4..aa76f52 100644
                  break;
          default:
                  g_assert_not_reached ();
-@@ -1963,6 +2030,7 @@ send_environment_variable (const char       *key,
+@@ -1878,6 +1945,7 @@ send_environment_variable (const char       *key,
  {
          DBusMessage    *message;
          DBusMessageIter iter;
@@ -1107,7 +1103,7 @@ index 223f6f4..aa76f52 100644
  
          message = dbus_message_new_signal (GDM_SESSION_DBUS_PATH,
                                             GDM_SESSION_DBUS_INTERFACE,
-@@ -1972,7 +2040,8 @@ send_environment_variable (const char       *key,
+@@ -1887,7 +1955,8 @@ send_environment_variable (const char       *key,
          dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &key);
          dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &value);
  
@@ -1117,7 +1113,7 @@ index 223f6f4..aa76f52 100644
                  g_debug ("GdmSessionDirect: Could not send %s signal", "SetEnvironmentVariable");
          }
  
-@@ -2120,6 +2189,7 @@ static void
+@@ -2018,6 +2087,7 @@ static void
  gdm_session_direct_start_session (GdmSession *session)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
@@ -1125,7 +1121,7 @@ index 223f6f4..aa76f52 100644
          char             *command;
          char             *program;
  
-@@ -2139,7 +2209,8 @@ gdm_session_direct_start_session (GdmSession *session)
+@@ -2037,7 +2107,8 @@ gdm_session_direct_start_session (GdmSession *session)
          setup_session_environment (impl);
          send_environment (impl);
  
@@ -1135,7 +1131,7 @@ index 223f6f4..aa76f52 100644
          g_free (program);
  }
  
-@@ -2152,16 +2223,12 @@ gdm_session_direct_close (GdmSession *session)
+@@ -2050,16 +2121,12 @@ gdm_session_direct_close (GdmSession *session)
  
          g_debug ("GdmSessionDirect: Closing session");
  
@@ -1158,7 +1154,7 @@ index 223f6f4..aa76f52 100644
          }
  
          g_free (impl->priv->selected_user);
-@@ -2199,10 +2266,13 @@ gdm_session_direct_answer_query  (GdmSession *session,
+@@ -2091,10 +2158,13 @@ gdm_session_direct_answer_query  (GdmSession *session,
                                    const char *text)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
@@ -1173,7 +1169,7 @@ index 223f6f4..aa76f52 100644
  }
  
  static void
-@@ -2212,7 +2282,7 @@ gdm_session_direct_cancel  (GdmSession *session)
+@@ -2104,7 +2174,7 @@ gdm_session_direct_cancel  (GdmSession *session)
  
          g_return_if_fail (session != NULL);
  
@@ -1182,7 +1178,7 @@ index 223f6f4..aa76f52 100644
  }
  
  char *
-@@ -2284,6 +2354,7 @@ gdm_session_direct_select_session (GdmSession *session,
+@@ -2176,6 +2246,7 @@ gdm_session_direct_select_session (GdmSession *session,
                                     const char *text)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
@@ -1190,7 +1186,7 @@ index 223f6f4..aa76f52 100644
  
          g_free (impl->priv->selected_session);
  
-@@ -2293,7 +2364,8 @@ gdm_session_direct_select_session (GdmSession *session,
+@@ -2185,7 +2256,8 @@ gdm_session_direct_select_session (GdmSession *session,
                  impl->priv->selected_session = g_strdup (text);
          }
  
@@ -1200,7 +1196,7 @@ index 223f6f4..aa76f52 100644
                                   get_session_name (impl));
  }
  
-@@ -2302,6 +2374,7 @@ gdm_session_direct_select_language (GdmSession *session,
+@@ -2194,6 +2266,7 @@ gdm_session_direct_select_language (GdmSession *session,
                                      const char *text)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
@@ -1208,7 +1204,7 @@ index 223f6f4..aa76f52 100644
  
          g_free (impl->priv->selected_language);
  
-@@ -2311,7 +2384,8 @@ gdm_session_direct_select_language (GdmSession *session,
+@@ -2203,7 +2276,8 @@ gdm_session_direct_select_language (GdmSession *session,
                  impl->priv->selected_language = g_strdup (text);
          }
  
@@ -1218,26 +1214,8 @@ index 223f6f4..aa76f52 100644
                                   get_language_name (impl));
  }
  
-@@ -2320,6 +2394,7 @@ gdm_session_direct_select_layout (GdmSession *session,
-                                   const char *text)
- {
-         GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
-+        GdmSessionConversation *conversation;
- 
-         g_free (impl->priv->selected_layout);
- 
-@@ -2329,7 +2404,8 @@ gdm_session_direct_select_layout (GdmSession *session,
-                 impl->priv->selected_layout = g_strdup (text);
-         }
- 
--        send_dbus_string_signal (impl, "SetLayoutName",
-+        conversation = impl->priv->conversation;
-+        send_dbus_string_signal (conversation, "SetLayoutName",
-                                  get_layout_name (impl));
- }
- 
 diff --git a/daemon/gdm-session-private.h b/daemon/gdm-session-private.h
-index 7ccf0d7..74b6069 100644
+index 88ac23c..34adff5 100644
 --- a/daemon/gdm-session-private.h
 +++ b/daemon/gdm-session-private.h
 @@ -27,7 +27,8 @@
@@ -1251,7 +1229,7 @@ index 7ccf0d7..74b6069 100644
  void             _gdm_session_setup_failed                 (GdmSession   *session,
                                                              const char   *message);
 diff --git a/daemon/gdm-session-relay.c b/daemon/gdm-session-relay.c
-index da0ecb3..a0b4cbf 100644
+index 1ab4b05..d559c71 100644
 --- a/daemon/gdm-session-relay.c
 +++ b/daemon/gdm-session-relay.c
 @@ -180,10 +180,11 @@ send_dbus_void_signal (GdmSessionRelay *session_relay,
@@ -1268,7 +1246,7 @@ index da0ecb3..a0b4cbf 100644
  }
  
  static void
-@@ -728,8 +729,14 @@ handle_conversation_started (GdmSessionRelay *session_relay,
+@@ -720,8 +721,14 @@ handle_conversation_started (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -1283,7 +1261,7 @@ index da0ecb3..a0b4cbf 100644
  
          g_debug ("GdmSessionRelay: Conversation Started");
  
-@@ -737,7 +744,7 @@ handle_conversation_started (GdmSessionRelay *session_relay,
+@@ -729,7 +736,7 @@ handle_conversation_started (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -1292,7 +1270,7 @@ index da0ecb3..a0b4cbf 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -812,6 +819,7 @@ do_introspect (DBusConnection *connection,
+@@ -804,6 +811,7 @@ do_introspect (DBusConnection *connection,
          xml = g_string_append (xml,
                                 "  <interface name=\"org.gnome.DisplayManager.SessionRelay\">\n"
                                 "    <method name=\"ConversationStarted\">\n"
@@ -1300,7 +1278,7 @@ index da0ecb3..a0b4cbf 100644
                                 "    </method>\n"
                                 "    <method name=\"SetupComplete\">\n"
                                 "    </method>\n"
-@@ -873,6 +881,7 @@ do_introspect (DBusConnection *connection,
+@@ -865,6 +873,7 @@ do_introspect (DBusConnection *connection,
                                 "    </signal>\n"
  
                                 "    <signal name=\"StartConversation\">\n"
@@ -1340,10 +1318,10 @@ index 5ad1c92..d24f025 100644
  
  #endif /* __GDM_SESSION_WORKER_JOB_H */
 diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
-index 1e2af92..1820e29 100644
+index d6baa22..6a87ddd 100644
 --- a/daemon/gdm-session.c
 +++ b/daemon/gdm-session.c
-@@ -80,11 +80,12 @@ gdm_session_get_type (void)
+@@ -79,11 +79,12 @@ gdm_session_get_type (void)
  }
  
  void
@@ -1358,7 +1336,7 @@ index 1e2af92..1820e29 100644
  }
  
  void
-@@ -220,7 +221,7 @@ gdm_session_class_init (gpointer g_iface)
+@@ -210,7 +211,7 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, conversation_started),
                                NULL,
                                NULL,
@@ -1367,7 +1345,7 @@ index 1e2af92..1820e29 100644
                                G_TYPE_NONE,
                                0);
          signals [SETUP_COMPLETE] =
-@@ -654,10 +655,11 @@ _gdm_session_session_died (GdmSession   *session,
+@@ -633,10 +634,11 @@ _gdm_session_session_died (GdmSession   *session,
  }
  
  void
@@ -1382,7 +1360,7 @@ index 1e2af92..1820e29 100644
  
  void
 diff --git a/daemon/gdm-session.h b/daemon/gdm-session.h
-index fb199d3..00c2fa4 100644
+index a1e885d..202da36 100644
 --- a/daemon/gdm-session.h
 +++ b/daemon/gdm-session.h
 @@ -45,7 +45,8 @@ struct _GdmSessionIface
@@ -1395,7 +1373,7 @@ index fb199d3..00c2fa4 100644
          void (* setup)                       (GdmSession   *session,
                                                const char   *service_name);
          void (* setup_for_user)              (GdmSession   *session,
-@@ -107,7 +108,8 @@ struct _GdmSessionIface
+@@ -105,7 +106,8 @@ struct _GdmSessionIface
                                                int           exit_code);
          void (* session_died)                (GdmSession   *session,
                                                int           signal_number);
@@ -1405,7 +1383,7 @@ index fb199d3..00c2fa4 100644
          void (* closed)                      (GdmSession   *session);
          void (* selected_user_changed)       (GdmSession   *session,
                                                const char   *text);
-@@ -122,7 +124,8 @@ struct _GdmSessionIface
+@@ -118,7 +120,8 @@ struct _GdmSessionIface
  
  GType    gdm_session_get_type                    (void) G_GNUC_CONST;
  
@@ -1416,7 +1394,7 @@ index fb199d3..00c2fa4 100644
                                                    const char *service_name);
  void     gdm_session_setup_for_user              (GdmSession *session,
 diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
-index 6a90d02..1cad6ad 100644
+index 8f80cb7..88ea9d0 100644
 --- a/daemon/gdm-simple-slave.c
 +++ b/daemon/gdm-simple-slave.c
 @@ -243,7 +243,6 @@ reset_session (GdmSimpleSlave *slave)
@@ -1427,7 +1405,7 @@ index 6a90d02..1cad6ad 100644
  }
  
  static gboolean
-@@ -1054,8 +1053,6 @@ on_greeter_connected (GdmGreeterServer *greeter_server,
+@@ -1025,8 +1024,6 @@ on_greeter_connected (GdmGreeterServer *greeter_server,
  
          g_debug ("GdmSimpleSlave: Greeter connected");
  
@@ -1464,10 +1442,10 @@ index 8bed085..9bfda86 100644
                  g_signal_connect (session,
                                    "conversation-started",
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 24794eef2b3f4397542f45899948fa65e601851a Mon Sep 17 00:00:00 2001
+From 771969eb53ffd05956c59461e5958ba4a2fc4fe4 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Wed, 4 Feb 2009 10:55:03 -0500
 Subject: [PATCH 08/35] Rename session worker to the service it's managing
@@ -1481,10 +1459,10 @@ it will be obvious which worker is managing which conversation.
  3 files changed, 57 insertions(+), 16 deletions(-)
 
 diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c
-index aa76f52..87e38d3 100644
+index 39ff815..5b30ecd 100644
 --- a/daemon/gdm-session-direct.c
 +++ b/daemon/gdm-session-direct.c
-@@ -1745,6 +1745,7 @@ start_conversation (GdmSessionDirect *session,
+@@ -1660,6 +1660,7 @@ start_conversation (GdmSessionDirect *session,
                      const char       *service_name)
  {
          GdmSessionConversation *conversation;
@@ -1492,7 +1470,7 @@ index aa76f52..87e38d3 100644
  
          conversation = g_new0 (GdmSessionConversation, 1);
          conversation->session = session;
-@@ -1765,12 +1766,16 @@ start_conversation (GdmSessionDirect *session,
+@@ -1680,12 +1681,16 @@ start_conversation (GdmSessionDirect *session,
                            G_CALLBACK (worker_died),
                            conversation);
  
@@ -1653,10 +1631,10 @@ index d24f025..4833f23 100644
  
  GPid                    gdm_session_worker_job_get_pid            (GdmSessionWorkerJob *session_worker_job);
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 2719a3241a971b47a9c5e426280419521a01eb9c Mon Sep 17 00:00:00 2001
+From 63c312ed2f3580ccdb02adcc9c58836259317414 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Fri, 16 Jan 2009 13:01:48 -0500
 Subject: [PATCH 09/35] Make greeter/autologin session explicitly request PAM conversation
@@ -1682,7 +1660,7 @@ come back one-by-one.
  7 files changed, 111 insertions(+), 15 deletions(-)
 
 diff --git a/daemon/gdm-factory-slave.c b/daemon/gdm-factory-slave.c
-index 0151ab2..f30664f 100644
+index 109271a..9bae550 100644
 --- a/daemon/gdm-factory-slave.c
 +++ b/daemon/gdm-factory-slave.c
 @@ -186,7 +186,8 @@ on_session_conversation_started (GdmSession      *session,
@@ -1696,7 +1674,7 @@ index 0151ab2..f30664f 100644
  
  static void
 diff --git a/daemon/gdm-greeter-server.c b/daemon/gdm-greeter-server.c
-index 1ab01e4..03ecfca 100644
+index 6a021d1..463ba6a 100644
 --- a/daemon/gdm-greeter-server.c
 +++ b/daemon/gdm-greeter-server.c
 @@ -70,6 +70,7 @@ enum {
@@ -1707,7 +1685,7 @@ index 1ab01e4..03ecfca 100644
          BEGIN_AUTO_LOGIN,
          BEGIN_VERIFICATION,
          BEGIN_VERIFICATION_FOR_USER,
-@@ -254,9 +255,10 @@ gdm_greeter_server_reset (GdmGreeterServer *greeter_server)
+@@ -253,9 +254,10 @@ gdm_greeter_server_reset (GdmGreeterServer *greeter_server)
  }
  
  gboolean
@@ -1720,7 +1698,7 @@ index 1ab01e4..03ecfca 100644
          return TRUE;
  }
  
-@@ -331,6 +333,34 @@ generate_address (void)
+@@ -323,6 +325,34 @@ generate_address (void)
  }
  
  static DBusHandlerResult
@@ -1755,7 +1733,7 @@ index 1ab01e4..03ecfca 100644
  handle_begin_verification (GdmGreeterServer *greeter_server,
                             DBusConnection   *connection,
                             DBusMessage      *message)
-@@ -653,7 +683,9 @@ greeter_handle_child_message (DBusConnection *connection,
+@@ -618,7 +648,9 @@ greeter_handle_child_message (DBusConnection *connection,
  {
          GdmGreeterServer *greeter_server = GDM_GREETER_SERVER (user_data);
  
@@ -1766,7 +1744,7 @@ index 1ab01e4..03ecfca 100644
                  return handle_begin_verification (greeter_server, connection, message);
          } else if (dbus_message_is_method_call (message, GDM_GREETER_SERVER_DBUS_INTERFACE, "BeginVerificationForUser")) {
                  return handle_begin_verification_for_user (greeter_server, connection, message);
-@@ -707,7 +739,11 @@ do_introspect (DBusConnection *connection,
+@@ -670,7 +702,11 @@ do_introspect (DBusConnection *connection,
          /* interface */
          xml = g_string_append (xml,
                                 "  <interface name=\"org.gnome.DisplayManager.GreeterServer\">\n"
@@ -1778,7 +1756,7 @@ index 1ab01e4..03ecfca 100644
                                 "    <method name=\"BeginTimedLogin\">\n"
                                 "    </method>\n"
                                 "    <method name=\"BeginVerificationForUser\">\n"
-@@ -767,6 +803,7 @@ do_introspect (DBusConnection *connection,
+@@ -727,6 +763,7 @@ do_introspect (DBusConnection *connection,
                                 "      <arg name=\"delay\" type=\"i\"/>\n"
                                 "    </signal>\n"
                                 "    <signal name=\"Ready\">\n"
@@ -1786,7 +1764,7 @@ index 1ab01e4..03ecfca 100644
                                 "    </signal>\n"
                                 "    <signal name=\"Reset\">\n"
                                 "    </signal>\n"
-@@ -1131,6 +1168,16 @@ gdm_greeter_server_class_init (GdmGreeterServerClass *klass)
+@@ -1091,6 +1128,16 @@ gdm_greeter_server_class_init (GdmGreeterServerClass *klass)
                                                                "group name",
                                                                GDM_GROUPNAME,
                                                                G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
@@ -1804,7 +1782,7 @@ index 1ab01e4..03ecfca 100644
                  g_signal_new ("begin-verification",
                                G_OBJECT_CLASS_TYPE (object_class),
 diff --git a/daemon/gdm-greeter-server.h b/daemon/gdm-greeter-server.h
-index f9c157f..7e2424a 100644
+index 7872201..d4fc9dd 100644
 --- a/daemon/gdm-greeter-server.h
 +++ b/daemon/gdm-greeter-server.h
 @@ -45,6 +45,8 @@ typedef struct
@@ -1816,7 +1794,7 @@ index f9c157f..7e2424a 100644
          void (* begin_auto_login)           (GdmGreeterServer  *greeter_server);
          void (* begin_verification)         (GdmGreeterServer  *greeter_server);
          void (* begin_verification_for_user)(GdmGreeterServer  *greeter_server,
-@@ -86,7 +88,8 @@ gboolean            gdm_greeter_server_problem               (GdmGreeterServer *
+@@ -84,7 +86,8 @@ gboolean            gdm_greeter_server_problem               (GdmGreeterServer *
                                                                const char       *text);
  gboolean            gdm_greeter_server_authentication_failed (GdmGreeterServer *greeter_server);
  gboolean            gdm_greeter_server_reset                 (GdmGreeterServer *greeter_server);
@@ -1827,7 +1805,7 @@ index f9c157f..7e2424a 100644
                                                                const char       *text);
  void                gdm_greeter_server_default_language_name_changed (GdmGreeterServer *greeter_server,
 diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
-index 1cad6ad..0b60ef7 100644
+index 88ea9d0..a5b6e9c 100644
 --- a/daemon/gdm-simple-slave.c
 +++ b/daemon/gdm-simple-slave.c
 @@ -616,6 +616,7 @@ on_session_secret_info_query (GdmSession     *session,
@@ -1860,7 +1838,7 @@ index 1cad6ad..0b60ef7 100644
                                              username);
          }
  
-@@ -698,6 +702,21 @@ on_default_session_name_changed (GdmSession     *session,
+@@ -686,6 +690,21 @@ on_default_session_name_changed (GdmSession     *session,
  }
  
  static void
@@ -1882,7 +1860,7 @@ index 1cad6ad..0b60ef7 100644
  create_new_session (GdmSimpleSlave *slave)
  {
          gboolean       display_is_local;
-@@ -838,6 +857,8 @@ create_new_session (GdmSimpleSlave *slave)
+@@ -821,6 +840,8 @@ create_new_session (GdmSimpleSlave *slave)
                            "default-session-name-changed",
                            G_CALLBACK (on_default_session_name_changed),
                            slave);
@@ -1891,7 +1869,7 @@ index 1cad6ad..0b60ef7 100644
  }
  
  static void
-@@ -967,6 +988,16 @@ on_greeter_session_died (GdmGreeterSession    *greeter,
+@@ -946,6 +967,16 @@ on_greeter_session_died (GdmGreeterSession    *greeter,
  }
  
  static void
@@ -1908,7 +1886,7 @@ index 1cad6ad..0b60ef7 100644
  on_greeter_begin_verification (GdmGreeterServer *greeter_server,
                                 GdmSimpleSlave   *slave)
  {
-@@ -1144,6 +1175,10 @@ start_greeter (GdmSimpleSlave *slave)
+@@ -1115,6 +1146,10 @@ start_greeter (GdmSimpleSlave *slave)
  
          slave->priv->greeter_server = gdm_greeter_server_new (display_id);
          g_signal_connect (slave->priv->greeter_server,
@@ -1920,10 +1898,10 @@ index 1cad6ad..0b60ef7 100644
                            G_CALLBACK (on_greeter_begin_auto_login),
                            slave);
 diff --git a/gui/simple-greeter/gdm-greeter-client.c b/gui/simple-greeter/gdm-greeter-client.c
-index d02b3d1..b175fc9 100644
+index 10ba236..ae61eb1 100644
 --- a/gui/simple-greeter/gdm-greeter-client.c
 +++ b/gui/simple-greeter/gdm-greeter-client.c
-@@ -238,11 +238,7 @@ static void
+@@ -230,11 +230,7 @@ static void
  on_ready (GdmGreeterClient *client,
            DBusMessage      *message)
  {
@@ -1936,7 +1914,7 @@ index d02b3d1..b175fc9 100644
  }
  
  static void
-@@ -412,6 +408,14 @@ send_dbus_void_method (DBusConnection *connection,
+@@ -404,6 +400,14 @@ send_dbus_void_method (DBusConnection *connection,
  }
  
  void
@@ -1951,7 +1929,7 @@ index d02b3d1..b175fc9 100644
  gdm_greeter_client_call_begin_auto_login (GdmGreeterClient *client,
                                            const char       *username)
  {
-@@ -893,9 +897,9 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
+@@ -875,9 +879,9 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterClientClass, ready),
                                NULL,
                                NULL,
@@ -1964,10 +1942,10 @@ index d02b3d1..b175fc9 100644
          gdm_greeter_client_signals[RESET] =
                  g_signal_new ("reset",
 diff --git a/gui/simple-greeter/gdm-greeter-client.h b/gui/simple-greeter/gdm-greeter-client.h
-index 16ccef9..e08aaa5 100644
+index 7938046..5f92abe 100644
 --- a/gui/simple-greeter/gdm-greeter-client.h
 +++ b/gui/simple-greeter/gdm-greeter-client.h
-@@ -85,13 +85,15 @@ GQuark             gdm_greeter_client_error_quark                    (void);
+@@ -83,13 +83,15 @@ GQuark             gdm_greeter_client_error_quark                    (void);
  GdmGreeterClient * gdm_greeter_client_new                            (void);
  
  gboolean           gdm_greeter_client_start                          (GdmGreeterClient *client,
@@ -1985,7 +1963,7 @@ index 16ccef9..e08aaa5 100644
                                                                        const char       *username);
  void               gdm_greeter_client_call_begin_verification        (GdmGreeterClient *client);
 diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c
-index d4ef77f..63de620 100644
+index 3225105..d1d2341 100644
 --- a/gui/simple-greeter/gdm-greeter-session.c
 +++ b/gui/simple-greeter/gdm-greeter-session.c
 @@ -89,6 +89,7 @@ on_problem (GdmGreeterClient  *client,
@@ -1996,15 +1974,15 @@ index d4ef77f..63de620 100644
            GdmGreeterSession *session)
  {
          g_debug ("GdmGreeterSession: Ready");
-@@ -293,6 +294,7 @@ on_cancelled (GdmGreeterLoginWindow *login_window,
+@@ -268,6 +269,7 @@ on_cancelled (GdmGreeterLoginWindow *login_window,
+               GdmGreeterSession     *session)
  {
-         gdm_greeter_panel_hide_user_options (GDM_GREETER_PANEL (session->priv->panel));
          gdm_greeter_client_call_cancel (session->priv->client);
 +        gdm_greeter_client_call_start_conversation (session->priv->client, "gdm");
  }
  
  static void
-@@ -457,6 +459,8 @@ gdm_greeter_session_start (GdmGreeterSession *session,
+@@ -427,6 +429,8 @@ gdm_greeter_session_start (GdmGreeterSession *session,
          toggle_panel (session, TRUE);
          toggle_login_window (session, TRUE);
  
@@ -2014,10 +1992,10 @@ index d4ef77f..63de620 100644
  
          return res;
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 7a11766a320ce024301f1cb63169729b33f79793 Mon Sep 17 00:00:00 2001
+From 9a22e67e8af3ca7c1f9b156ce34ddc8b374438eb Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Fri, 16 Jan 2009 15:18:31 -0500
 Subject: [PATCH 10/35] Store multiple conversations in the session
@@ -2029,8 +2007,8 @@ only operate on the first conversation added though.
  daemon/gdm-factory-slave.c               |   69 +++-
  daemon/gdm-greeter-server.c              |  134 ++++++--
  daemon/gdm-greeter-server.h              |   19 +-
- daemon/gdm-product-slave.c               |  264 +++++++++++---
- daemon/gdm-session-direct.c              |  585 ++++++++++++++++++++----------
+ daemon/gdm-product-slave.c               |  264 ++++++++++++---
+ daemon/gdm-session-direct.c              |  564 ++++++++++++++++++++----------
  daemon/gdm-session-private.h             |   28 ++-
  daemon/gdm-session-relay.c               |  135 ++++++--
  daemon/gdm-session-worker.c              |   27 ++
@@ -2041,10 +2019,10 @@ only operate on the first conversation added though.
  gui/simple-greeter/gdm-greeter-client.c  |  188 ++++++++--
  gui/simple-greeter/gdm-greeter-client.h  |   16 +-
  gui/simple-greeter/gdm-greeter-session.c |   11 +-
- 15 files changed, 1394 insertions(+), 481 deletions(-)
+ 15 files changed, 1380 insertions(+), 474 deletions(-)
 
 diff --git a/daemon/gdm-factory-slave.c b/daemon/gdm-factory-slave.c
-index f30664f..653cb18 100644
+index 9bae550..9e435f9 100644
 --- a/daemon/gdm-factory-slave.c
 +++ b/daemon/gdm-factory-slave.c
 @@ -144,45 +144,49 @@ on_greeter_session_died (GdmGreeterSession    *greeter,
@@ -2279,7 +2257,7 @@ index f30664f..653cb18 100644
  }
  
  static void
-@@ -520,6 +545,10 @@ run_greeter (GdmFactorySlave *slave)
+@@ -512,6 +537,10 @@ run_greeter (GdmFactorySlave *slave)
  
          slave->priv->greeter_server = gdm_greeter_server_new (display_id);
          g_signal_connect (slave->priv->greeter_server,
@@ -2291,7 +2269,7 @@ index f30664f..653cb18 100644
                            G_CALLBACK (on_greeter_begin_verification),
                            slave);
 diff --git a/daemon/gdm-greeter-server.c b/daemon/gdm-greeter-server.c
-index 03ecfca..50e4193 100644
+index 463ba6a..d9ecb1f 100644
 --- a/daemon/gdm-greeter-server.c
 +++ b/daemon/gdm-greeter-server.c
 @@ -44,6 +44,7 @@
@@ -2302,7 +2280,7 @@ index 03ecfca..50e4193 100644
  #include "gdm-greeter-server.h"
  
  #define GDM_GREETER_SERVER_DBUS_PATH      "/org/gnome/DisplayManager/GreeterServer"
-@@ -157,6 +158,46 @@ send_dbus_string_and_int_signal (GdmGreeterServer *greeter_server,
+@@ -156,6 +157,46 @@ send_dbus_string_and_int_signal (GdmGreeterServer *greeter_server,
  }
  
  static void
@@ -2349,7 +2327,7 @@ index 03ecfca..50e4193 100644
  send_dbus_string_signal (GdmGreeterServer *greeter_server,
                           const char       *name,
                           const char       *text)
-@@ -209,34 +250,38 @@ send_dbus_void_signal (GdmGreeterServer *greeter_server,
+@@ -208,34 +249,38 @@ send_dbus_void_signal (GdmGreeterServer *greeter_server,
  
  gboolean
  gdm_greeter_server_info_query (GdmGreeterServer *greeter_server,
@@ -2392,7 +2370,7 @@ index 03ecfca..50e4193 100644
          return TRUE;
  }
  
-@@ -262,6 +307,14 @@ gdm_greeter_server_ready (GdmGreeterServer *greeter_server,
+@@ -261,6 +306,14 @@ gdm_greeter_server_ready (GdmGreeterServer *greeter_server,
          return TRUE;
  }
  
@@ -2407,7 +2385,7 @@ index 03ecfca..50e4193 100644
  void
  gdm_greeter_server_selected_user_changed (GdmGreeterServer *greeter_server,
                                            const char       *username)
-@@ -299,9 +352,10 @@ gdm_greeter_server_request_timed_login (GdmGreeterServer *greeter_server,
+@@ -291,9 +344,10 @@ gdm_greeter_server_request_timed_login (GdmGreeterServer *greeter_server,
  }
  
  void
@@ -2420,7 +2398,7 @@ index 03ecfca..50e4193 100644
  }
  
  /* Note: Use abstract sockets like dbus does by default on Linux. Abstract
-@@ -366,6 +420,16 @@ handle_begin_verification (GdmGreeterServer *greeter_server,
+@@ -358,6 +412,16 @@ handle_begin_verification (GdmGreeterServer *greeter_server,
                             DBusMessage      *message)
  {
          DBusMessage *reply;
@@ -2437,7 +2415,7 @@ index 03ecfca..50e4193 100644
  
          g_debug ("GreeterServer: BeginVerification");
  
-@@ -373,7 +437,7 @@ handle_begin_verification (GdmGreeterServer *greeter_server,
+@@ -365,7 +429,7 @@ handle_begin_verification (GdmGreeterServer *greeter_server,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -2446,7 +2424,7 @@ index 03ecfca..50e4193 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -387,7 +451,6 @@ handle_begin_auto_login (GdmGreeterServer *greeter_server,
+@@ -379,7 +443,6 @@ handle_begin_auto_login (GdmGreeterServer *greeter_server,
          DBusError    error;
          const char  *text;
  
@@ -2454,7 +2432,7 @@ index 03ecfca..50e4193 100644
          dbus_error_init (&error);
          if (! dbus_message_get_args (message, &error,
                                       DBUS_TYPE_STRING, &text,
-@@ -414,13 +477,16 @@ handle_begin_verification_for_user (GdmGreeterServer *greeter_server,
+@@ -406,13 +469,16 @@ handle_begin_verification_for_user (GdmGreeterServer *greeter_server,
          DBusMessage *reply;
          DBusError    error;
          const char  *text;
@@ -2471,7 +2449,7 @@ index 03ecfca..50e4193 100644
  
          g_debug ("GreeterServer: BeginVerificationForUser for '%s'", text);
  
-@@ -428,7 +494,7 @@ handle_begin_verification_for_user (GdmGreeterServer *greeter_server,
+@@ -420,7 +486,7 @@ handle_begin_verification_for_user (GdmGreeterServer *greeter_server,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -2480,7 +2458,7 @@ index 03ecfca..50e4193 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -441,13 +507,16 @@ handle_answer_query (GdmGreeterServer *greeter_server,
+@@ -433,13 +499,16 @@ handle_answer_query (GdmGreeterServer *greeter_server,
          DBusMessage *reply;
          DBusError    error;
          const char  *text;
@@ -2497,7 +2475,7 @@ index 03ecfca..50e4193 100644
  
          g_debug ("GreeterServer: AnswerQuery");
  
-@@ -455,7 +524,7 @@ handle_answer_query (GdmGreeterServer *greeter_server,
+@@ -447,7 +516,7 @@ handle_answer_query (GdmGreeterServer *greeter_server,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -2506,7 +2484,7 @@ index 03ecfca..50e4193 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -652,9 +721,11 @@ handle_start_session_when_ready (GdmGreeterServer *greeter_server,
+@@ -617,9 +686,11 @@ handle_start_session_when_ready (GdmGreeterServer *greeter_server,
          DBusMessage *reply;
          DBusError    error;
          gboolean     should_start_session;
@@ -2518,7 +2496,7 @@ index 03ecfca..50e4193 100644
                                       DBUS_TYPE_BOOLEAN, &should_start_session,
                                       DBUS_TYPE_INVALID)) {
                  g_warning ("ERROR: %s", error.message);
-@@ -668,9 +739,9 @@ handle_start_session_when_ready (GdmGreeterServer *greeter_server,
+@@ -633,9 +704,9 @@ handle_start_session_when_ready (GdmGreeterServer *greeter_server,
          dbus_message_unref (reply);
  
          if (should_start_session) {
@@ -2530,7 +2508,7 @@ index 03ecfca..50e4193 100644
          }
  
          return DBUS_HANDLER_RESULT_HANDLED;
-@@ -742,14 +813,20 @@ do_introspect (DBusConnection *connection,
+@@ -705,14 +776,20 @@ do_introspect (DBusConnection *connection,
                                 "    <method name=\"StartConversation\">\n"
                                 "      <arg name=\"service_name\" direction=\"in\" type=\"s\"/>\n"
                                 "    </method>\n"
@@ -2551,7 +2529,7 @@ index 03ecfca..50e4193 100644
                                 "      <arg name=\"text\" direction=\"in\" type=\"s\"/>\n"
                                 "    </method>\n"
                                 "    <method name=\"SelectSession\">\n"
-@@ -772,18 +849,23 @@ do_introspect (DBusConnection *connection,
+@@ -735,18 +812,23 @@ do_introspect (DBusConnection *connection,
                                 "      <arg name=\"id\" direction=\"out\" type=\"o\"/>\n"
                                 "    </method>\n"
                                 "    <method name=\"StartSessionWhenReady\">\n"
@@ -2575,7 +2553,7 @@ index 03ecfca..50e4193 100644
                                 "      <arg name=\"text\" type=\"s\"/>\n"
                                 "    </signal>\n"
                                 "    <signal name=\"SelectedUserChanged\">\n"
-@@ -805,11 +887,15 @@ do_introspect (DBusConnection *connection,
+@@ -765,11 +847,15 @@ do_introspect (DBusConnection *connection,
                                 "    <signal name=\"Ready\">\n"
                                 "      <arg name=\"service-name\" type=\"s\"/>\n"
                                 "    </signal>\n"
@@ -2591,7 +2569,7 @@ index 03ecfca..50e4193 100644
                                 "    </signal>\n"
                                 "  </interface>\n");
  
-@@ -1185,9 +1271,9 @@ gdm_greeter_server_class_init (GdmGreeterServerClass *klass)
+@@ -1145,9 +1231,9 @@ gdm_greeter_server_class_init (GdmGreeterServerClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterServerClass, begin_verification),
                                NULL,
                                NULL,
@@ -2603,7 +2581,7 @@ index 03ecfca..50e4193 100644
          signals [BEGIN_AUTO_LOGIN] =
                  g_signal_new ("begin-auto-login",
                                G_OBJECT_CLASS_TYPE (object_class),
-@@ -1206,10 +1292,10 @@ gdm_greeter_server_class_init (GdmGreeterServerClass *klass)
+@@ -1166,10 +1252,10 @@ gdm_greeter_server_class_init (GdmGreeterServerClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterServerClass, begin_verification_for_user),
                                NULL,
                                NULL,
@@ -2617,7 +2595,7 @@ index 03ecfca..50e4193 100644
          signals [QUERY_ANSWER] =
                  g_signal_new ("query-answer",
                                G_OBJECT_CLASS_TYPE (object_class),
-@@ -1217,10 +1303,10 @@ gdm_greeter_server_class_init (GdmGreeterServerClass *klass)
+@@ -1177,10 +1263,10 @@ gdm_greeter_server_class_init (GdmGreeterServerClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterServerClass, query_answer),
                                NULL,
                                NULL,
@@ -2631,7 +2609,7 @@ index 03ecfca..50e4193 100644
          signals [SESSION_SELECTED] =
                  g_signal_new ("session-selected",
                                G_OBJECT_CLASS_TYPE (object_class),
-@@ -1314,9 +1400,9 @@ gdm_greeter_server_class_init (GdmGreeterServerClass *klass)
+@@ -1263,9 +1349,9 @@ gdm_greeter_server_class_init (GdmGreeterServerClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterServerClass, start_session_when_ready),
                                NULL,
                                NULL,
@@ -2643,7 +2621,7 @@ index 03ecfca..50e4193 100644
  
          signals [START_SESSION_LATER] =
                  g_signal_new ("start-session-later",
-@@ -1325,9 +1411,9 @@ gdm_greeter_server_class_init (GdmGreeterServerClass *klass)
+@@ -1274,9 +1360,9 @@ gdm_greeter_server_class_init (GdmGreeterServerClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterServerClass, start_session_later),
                                NULL,
                                NULL,
@@ -2656,7 +2634,7 @@ index 03ecfca..50e4193 100644
  
  static void
 diff --git a/daemon/gdm-greeter-server.h b/daemon/gdm-greeter-server.h
-index 7e2424a..5af32fd 100644
+index d4fc9dd..9015c26 100644
 --- a/daemon/gdm-greeter-server.h
 +++ b/daemon/gdm-greeter-server.h
 @@ -48,10 +48,13 @@ typedef struct
@@ -2674,7 +2652,7 @@ index 7e2424a..5af32fd 100644
                                               const char        *text);
          void (* session_selected)           (GdmGreeterServer  *greeter_server,
                                               const char        *name);
-@@ -66,7 +69,8 @@ typedef struct
+@@ -64,7 +67,8 @@ typedef struct
          void (* cancelled)                  (GdmGreeterServer  *greeter_server);
          void (* connected)                  (GdmGreeterServer  *greeter_server);
          void (* disconnected)               (GdmGreeterServer  *greeter_server);
@@ -2684,7 +2662,7 @@ index 7e2424a..5af32fd 100644
          void (* start_session_later)        (GdmGreeterServer  *greeter_server);
  } GdmGreeterServerClass;
  
-@@ -77,19 +81,24 @@ gboolean            gdm_greeter_server_start                 (GdmGreeterServer *
+@@ -75,19 +79,24 @@ gboolean            gdm_greeter_server_start                 (GdmGreeterServer *
  gboolean            gdm_greeter_server_stop                  (GdmGreeterServer *greeter_server);
  char *              gdm_greeter_server_get_address           (GdmGreeterServer *greeter_server);
  
@@ -2710,7 +2688,7 @@ index 7e2424a..5af32fd 100644
  void                gdm_greeter_server_selected_user_changed (GdmGreeterServer *greeter_server,
                                                                const char       *text);
  void                gdm_greeter_server_default_language_name_changed (GdmGreeterServer *greeter_server,
-@@ -102,8 +111,8 @@ void                gdm_greeter_server_default_session_name_changed (GdmGreeterS
+@@ -98,8 +107,8 @@ void                gdm_greeter_server_default_session_name_changed (GdmGreeterS
  void                gdm_greeter_server_request_timed_login   (GdmGreeterServer *greeter_server,
                                                                const char       *username,
                                                                int               delay);
@@ -2722,7 +2700,7 @@ index 7e2424a..5af32fd 100644
  G_END_DECLS
  
 diff --git a/daemon/gdm-product-slave.c b/daemon/gdm-product-slave.c
-index 9be89b4..607bbc6 100644
+index 84d5c49..af1c480 100644
 --- a/daemon/gdm-product-slave.c
 +++ b/daemon/gdm-product-slave.c
 @@ -79,6 +79,8 @@ struct GdmProductSlavePrivate
@@ -3100,7 +3078,7 @@ index 9be89b4..607bbc6 100644
          } else {
                  g_warning ("Unable to get arguments: %s", error.message);
                  dbus_error_free (&error);
-@@ -831,14 +973,48 @@ static void
+@@ -809,14 +951,48 @@ static void
  on_relay_open_session (GdmProductSlave *slave,
                          DBusMessage     *message)
  {
@@ -3152,10 +3130,10 @@ index 9be89b4..607bbc6 100644
  
  static void
 diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c
-index 87e38d3..680c0f0 100644
+index 5b30ecd..f91eff3 100644
 --- a/daemon/gdm-session-direct.c
 +++ b/daemon/gdm-session-direct.c
-@@ -89,9 +89,10 @@ struct _GdmSessionDirectPrivate
+@@ -87,9 +87,10 @@ struct _GdmSessionDirectPrivate
          char                *selected_user;
          char                *user_x11_authority_file;
  
@@ -3168,7 +3146,7 @@ index 87e38d3..680c0f0 100644
          GPid                 session_pid;
          guint32              is_running : 1;
  
-@@ -200,14 +201,30 @@ send_dbus_void_signal (GdmSessionConversation *conversation,
+@@ -198,14 +199,30 @@ send_dbus_void_signal (GdmSessionConversation *conversation,
          dbus_message_unref (message);
  }
  
@@ -3200,7 +3178,7 @@ index 87e38d3..680c0f0 100644
          if (conversation != NULL) {
                  gdm_session_record_failed (conversation->worker_pid,
                                             impl->priv->selected_user,
-@@ -218,12 +235,13 @@ on_authentication_failed (GdmSession *session,
+@@ -216,12 +233,13 @@ on_authentication_failed (GdmSession *session,
  }
  
  static void
@@ -3216,7 +3194,7 @@ index 87e38d3..680c0f0 100644
          if (conversation != NULL) {
                  gdm_session_record_login (conversation->worker_pid,
                                            impl->priv->selected_user,
-@@ -235,12 +253,13 @@ on_session_started (GdmSession *session)
+@@ -233,12 +251,13 @@ on_session_started (GdmSession *session)
  
  static void
  on_session_start_failed (GdmSession *session,
@@ -3231,7 +3209,7 @@ index 87e38d3..680c0f0 100644
          if (conversation != NULL) {
                  gdm_session_record_login (conversation->worker_pid,
                                            impl->priv->selected_user,
-@@ -265,7 +284,7 @@ on_session_exited (GdmSession *session,
+@@ -263,7 +282,7 @@ on_session_exited (GdmSession *session,
  
  static DBusHandlerResult
  gdm_session_direct_handle_setup_complete (GdmSessionDirect *session,
@@ -3240,7 +3218,7 @@ index 87e38d3..680c0f0 100644
                                            DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -273,17 +292,17 @@ gdm_session_direct_handle_setup_complete (GdmSessionDirect *session,
+@@ -271,17 +290,17 @@ gdm_session_direct_handle_setup_complete (GdmSessionDirect *session,
          g_debug ("GdmSessionDirect: Emitting 'setup-complete' signal");
  
          reply = dbus_message_new_method_return (message);
@@ -3261,7 +3239,7 @@ index 87e38d3..680c0f0 100644
                                          DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -298,12 +317,12 @@ gdm_session_direct_handle_setup_failed (GdmSessionDirect *session,
+@@ -296,12 +315,12 @@ gdm_session_direct_handle_setup_failed (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3276,7 +3254,7 @@ index 87e38d3..680c0f0 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -311,7 +330,7 @@ gdm_session_direct_handle_setup_failed (GdmSessionDirect *session,
+@@ -309,7 +328,7 @@ gdm_session_direct_handle_setup_failed (GdmSessionDirect *session,
  
  static DBusHandlerResult
  gdm_session_direct_handle_reset_complete (GdmSessionDirect *session,
@@ -3285,7 +3263,7 @@ index 87e38d3..680c0f0 100644
                                            DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -319,7 +338,7 @@ gdm_session_direct_handle_reset_complete (GdmSessionDirect *session,
+@@ -317,7 +336,7 @@ gdm_session_direct_handle_reset_complete (GdmSessionDirect *session,
          g_debug ("GdmSessionDirect: Emitting 'reset-complete' signal");
  
          reply = dbus_message_new_method_return (message);
@@ -3294,7 +3272,7 @@ index 87e38d3..680c0f0 100644
          dbus_message_unref (reply);
  
          _gdm_session_reset_complete (GDM_SESSION (session));
-@@ -329,7 +348,7 @@ gdm_session_direct_handle_reset_complete (GdmSessionDirect *session,
+@@ -327,7 +346,7 @@ gdm_session_direct_handle_reset_complete (GdmSessionDirect *session,
  
  static DBusHandlerResult
  gdm_session_direct_handle_reset_failed (GdmSessionDirect *session,
@@ -3303,7 +3281,7 @@ index 87e38d3..680c0f0 100644
                                          DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -344,7 +363,7 @@ gdm_session_direct_handle_reset_failed (GdmSessionDirect *session,
+@@ -342,7 +361,7 @@ gdm_session_direct_handle_reset_failed (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3312,7 +3290,7 @@ index 87e38d3..680c0f0 100644
          dbus_message_unref (reply);
  
          g_debug ("GdmSessionDirect: Emitting 'reset-failed' signal");
-@@ -356,7 +375,7 @@ gdm_session_direct_handle_reset_failed (GdmSessionDirect *session,
+@@ -354,7 +373,7 @@ gdm_session_direct_handle_reset_failed (GdmSessionDirect *session,
  
  static DBusHandlerResult
  gdm_session_direct_handle_authenticated (GdmSessionDirect *session,
@@ -3321,7 +3299,7 @@ index 87e38d3..680c0f0 100644
                                           DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -364,17 +383,17 @@ gdm_session_direct_handle_authenticated (GdmSessionDirect *session,
+@@ -362,17 +381,17 @@ gdm_session_direct_handle_authenticated (GdmSessionDirect *session,
          g_debug ("GdmSessionDirect: Emitting 'authenticated' signal");
  
          reply = dbus_message_new_method_return (message);
@@ -3342,7 +3320,7 @@ index 87e38d3..680c0f0 100644
                                                   DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -389,19 +408,19 @@ gdm_session_direct_handle_authentication_failed (GdmSessionDirect *session,
+@@ -387,19 +406,19 @@ gdm_session_direct_handle_authentication_failed (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3365,7 +3343,7 @@ index 87e38d3..680c0f0 100644
                                        DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -409,17 +428,17 @@ gdm_session_direct_handle_authorized (GdmSessionDirect *session,
+@@ -407,17 +426,17 @@ gdm_session_direct_handle_authorized (GdmSessionDirect *session,
          g_debug ("GdmSessionDirect: Emitting 'authorized' signal");
  
          reply = dbus_message_new_method_return (message);
@@ -3386,7 +3364,7 @@ index 87e38d3..680c0f0 100644
                                                  DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -434,19 +453,19 @@ gdm_session_direct_handle_authorization_failed (GdmSessionDirect *session,
+@@ -432,19 +451,19 @@ gdm_session_direct_handle_authorization_failed (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3409,7 +3387,7 @@ index 87e38d3..680c0f0 100644
                                        DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -454,17 +473,17 @@ gdm_session_direct_handle_accredited (GdmSessionDirect *session,
+@@ -452,17 +471,17 @@ gdm_session_direct_handle_accredited (GdmSessionDirect *session,
          g_debug ("GdmSessionDirect: Emitting 'accredited' signal");
  
          reply = dbus_message_new_method_return (message);
@@ -3430,7 +3408,7 @@ index 87e38d3..680c0f0 100644
                                                  DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -479,12 +498,12 @@ gdm_session_direct_handle_accreditation_failed (GdmSessionDirect *session,
+@@ -477,12 +496,12 @@ gdm_session_direct_handle_accreditation_failed (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3445,7 +3423,7 @@ index 87e38d3..680c0f0 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -808,7 +827,7 @@ gdm_session_direct_select_user (GdmSession *session,
+@@ -758,7 +777,7 @@ gdm_session_direct_select_user (GdmSession *session,
  
  static DBusHandlerResult
  gdm_session_direct_handle_username_changed (GdmSessionDirect *session,
@@ -3454,7 +3432,7 @@ index 87e38d3..680c0f0 100644
                                              DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -823,7 +842,7 @@ gdm_session_direct_handle_username_changed (GdmSessionDirect *session,
+@@ -773,7 +792,7 @@ gdm_session_direct_handle_username_changed (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3463,7 +3441,7 @@ index 87e38d3..680c0f0 100644
          dbus_message_unref (reply);
  
          g_debug ("GdmSessionDirect: changing username from '%s' to '%s'",
-@@ -890,14 +909,11 @@ set_pending_query (GdmSessionConversation *conversation,
+@@ -840,14 +859,11 @@ set_pending_query (GdmSessionConversation *conversation,
  
  static DBusHandlerResult
  gdm_session_direct_handle_info_query (GdmSessionDirect *session,
@@ -3479,7 +3457,7 @@ index 87e38d3..680c0f0 100644
  
          dbus_error_init (&error);
          if (! dbus_message_get_args (message, &error,
-@@ -909,21 +925,18 @@ gdm_session_direct_handle_info_query (GdmSessionDirect *session,
+@@ -859,21 +875,18 @@ gdm_session_direct_handle_info_query (GdmSessionDirect *session,
          set_pending_query (conversation, message);
  
          g_debug ("GdmSessionDirect: Emitting 'info-query' signal");
@@ -3503,7 +3481,7 @@ index 87e38d3..680c0f0 100644
  
          dbus_error_init (&error);
          if (! dbus_message_get_args (message, &error,
-@@ -935,14 +948,14 @@ gdm_session_direct_handle_secret_info_query (GdmSessionDirect *session,
+@@ -885,14 +898,14 @@ gdm_session_direct_handle_secret_info_query (GdmSessionDirect *session,
          set_pending_query (conversation, message);
  
          g_debug ("GdmSessionDirect: Emitting 'secret-info-query' signal");
@@ -3520,7 +3498,7 @@ index 87e38d3..680c0f0 100644
                                  DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -957,31 +970,28 @@ gdm_session_direct_handle_info (GdmSessionDirect *session,
+@@ -907,31 +920,28 @@ gdm_session_direct_handle_info (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3556,7 +3534,7 @@ index 87e38d3..680c0f0 100644
          dbus_message_unref (reply);
  
          return DBUS_HANDLER_RESULT_HANDLED;
-@@ -989,7 +999,7 @@ gdm_session_direct_handle_cancel_pending_query (GdmSessionDirect *session,
+@@ -939,7 +949,7 @@ gdm_session_direct_handle_cancel_pending_query (GdmSessionDirect *session,
  
  static DBusHandlerResult
  gdm_session_direct_handle_problem (GdmSessionDirect *session,
@@ -3565,7 +3543,7 @@ index 87e38d3..680c0f0 100644
                                     DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -1004,18 +1014,18 @@ gdm_session_direct_handle_problem (GdmSessionDirect *session,
+@@ -954,18 +964,18 @@ gdm_session_direct_handle_problem (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3587,7 +3565,7 @@ index 87e38d3..680c0f0 100644
                                            DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -1030,10 +1040,10 @@ gdm_session_direct_handle_session_opened (GdmSessionDirect *session,
+@@ -980,10 +990,10 @@ gdm_session_direct_handle_session_opened (GdmSessionDirect *session,
  
          g_debug ("GdmSessionDirect: Emitting 'session-opened' signal");
  
@@ -3600,7 +3578,7 @@ index 87e38d3..680c0f0 100644
          dbus_message_unref (reply);
  
          return DBUS_HANDLER_RESULT_HANDLED;
-@@ -1041,7 +1051,7 @@ gdm_session_direct_handle_session_opened (GdmSessionDirect *session,
+@@ -991,7 +1001,7 @@ gdm_session_direct_handle_session_opened (GdmSessionDirect *session,
  
  static DBusHandlerResult
  gdm_session_direct_handle_open_failed (GdmSessionDirect *session,
@@ -3609,7 +3587,7 @@ index 87e38d3..680c0f0 100644
                                         DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -1056,18 +1066,18 @@ gdm_session_direct_handle_open_failed (GdmSessionDirect *session,
+@@ -1006,18 +1016,18 @@ gdm_session_direct_handle_open_failed (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3631,7 +3609,7 @@ index 87e38d3..680c0f0 100644
                                             DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -1086,7 +1096,7 @@ gdm_session_direct_handle_session_started (GdmSessionDirect *session,
+@@ -1036,7 +1046,7 @@ gdm_session_direct_handle_session_started (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3640,7 +3618,7 @@ index 87e38d3..680c0f0 100644
          dbus_message_unref (reply);
  
          g_debug ("GdmSessionDirect: Emitting 'session-started' signal with pid '%d'",
-@@ -1095,14 +1105,14 @@ gdm_session_direct_handle_session_started (GdmSessionDirect *session,
+@@ -1045,14 +1055,14 @@ gdm_session_direct_handle_session_started (GdmSessionDirect *session,
          session->priv->session_pid = pid;
          session->priv->is_running = TRUE;
  
@@ -3657,7 +3635,7 @@ index 87e38d3..680c0f0 100644
                                          DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -1117,18 +1127,18 @@ gdm_session_direct_handle_start_failed (GdmSessionDirect *session,
+@@ -1067,18 +1077,18 @@ gdm_session_direct_handle_start_failed (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3679,7 +3657,7 @@ index 87e38d3..680c0f0 100644
                                            DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -1143,7 +1153,7 @@ gdm_session_direct_handle_session_exited (GdmSessionDirect *session,
+@@ -1093,7 +1103,7 @@ gdm_session_direct_handle_session_exited (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3688,7 +3666,7 @@ index 87e38d3..680c0f0 100644
          dbus_message_unref (reply);
  
          g_debug ("GdmSessionDirect: Emitting 'session-exited' signal with exit code '%d'",
-@@ -1157,7 +1167,7 @@ gdm_session_direct_handle_session_exited (GdmSessionDirect *session,
+@@ -1107,7 +1117,7 @@ gdm_session_direct_handle_session_exited (GdmSessionDirect *session,
  
  static DBusHandlerResult
  gdm_session_direct_handle_session_died (GdmSessionDirect *session,
@@ -3697,7 +3675,7 @@ index 87e38d3..680c0f0 100644
                                          DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -1172,7 +1182,7 @@ gdm_session_direct_handle_session_died (GdmSessionDirect *session,
+@@ -1122,7 +1132,7 @@ gdm_session_direct_handle_session_died (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3706,7 +3684,7 @@ index 87e38d3..680c0f0 100644
          dbus_message_unref (reply);
  
          g_debug ("GdmSessionDirect: Emitting 'session-died' signal with signal number '%d'",
-@@ -1186,7 +1196,7 @@ gdm_session_direct_handle_session_died (GdmSessionDirect *session,
+@@ -1136,7 +1146,7 @@ gdm_session_direct_handle_session_died (GdmSessionDirect *session,
  
  static DBusHandlerResult
  gdm_session_direct_handle_saved_language_name_read (GdmSessionDirect *session,
@@ -3715,7 +3693,7 @@ index 87e38d3..680c0f0 100644
                                                      DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -1201,7 +1211,7 @@ gdm_session_direct_handle_saved_language_name_read (GdmSessionDirect *session,
+@@ -1151,7 +1161,7 @@ gdm_session_direct_handle_saved_language_name_read (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3724,25 +3702,7 @@ index 87e38d3..680c0f0 100644
          dbus_message_unref (reply);
  
          if (strcmp (language_name,
-@@ -1219,7 +1229,7 @@ gdm_session_direct_handle_saved_language_name_read (GdmSessionDirect *session,
- 
- static DBusHandlerResult
- gdm_session_direct_handle_saved_layout_name_read (GdmSessionDirect *session,
--                                                  DBusConnection   *connection,
-+                                                  GdmSessionConversation *conversation,
-                                                   DBusMessage      *message)
- {
-         DBusMessage *reply;
-@@ -1234,7 +1244,7 @@ gdm_session_direct_handle_saved_layout_name_read (GdmSessionDirect *session,
-         }
- 
-         reply = dbus_message_new_method_return (message);
--        dbus_connection_send (connection, reply, NULL);
-+        dbus_connection_send (conversation->worker_connection, reply, NULL);
-         dbus_message_unref (reply);
- 
-         if (strcmp (layout_name,
-@@ -1252,7 +1262,7 @@ gdm_session_direct_handle_saved_layout_name_read (GdmSessionDirect *session,
+@@ -1169,7 +1179,7 @@ gdm_session_direct_handle_saved_language_name_read (GdmSessionDirect *session,
  
  static DBusHandlerResult
  gdm_session_direct_handle_saved_session_name_read (GdmSessionDirect *session,
@@ -3751,7 +3711,7 @@ index 87e38d3..680c0f0 100644
                                                     DBusMessage      *message)
  {
          DBusMessage *reply;
-@@ -1267,7 +1277,7 @@ gdm_session_direct_handle_saved_session_name_read (GdmSessionDirect *session,
+@@ -1184,7 +1194,7 @@ gdm_session_direct_handle_saved_session_name_read (GdmSessionDirect *session,
          }
  
          reply = dbus_message_new_method_return (message);
@@ -3760,7 +3720,7 @@ index 87e38d3..680c0f0 100644
          dbus_message_unref (reply);
  
          if (! get_session_command_for_name (session_name, NULL)) {
-@@ -1295,58 +1305,61 @@ session_worker_message (DBusConnection *connection,
+@@ -1212,56 +1222,59 @@ session_worker_message (DBusConnection *connection,
                          DBusMessage    *message,
                          void           *user_data)
  {
@@ -3839,16 +3799,13 @@ index 87e38d3..680c0f0 100644
          } else if (dbus_message_is_method_call (message, GDM_SESSION_DBUS_INTERFACE, "SavedLanguageNameRead")) {
 -                return gdm_session_direct_handle_saved_language_name_read (session, connection, message);
 +                return gdm_session_direct_handle_saved_language_name_read (session, conversation, message);
-         } else if (dbus_message_is_method_call (message, GDM_SESSION_DBUS_INTERFACE, "SavedLayoutNameRead")) {
--                return gdm_session_direct_handle_saved_layout_name_read (session, connection, message);
-+                return gdm_session_direct_handle_saved_layout_name_read (session, conversation, message);
          } else if (dbus_message_is_method_call (message, GDM_SESSION_DBUS_INTERFACE, "SavedSessionNameRead")) {
 -                return gdm_session_direct_handle_saved_session_name_read (session, connection, message);
 +                return gdm_session_direct_handle_saved_session_name_read (session, conversation, message);
          }
  
          return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-@@ -1580,6 +1593,27 @@ session_unregister_handler (DBusConnection  *connection,
+@@ -1495,6 +1508,27 @@ session_unregister_handler (DBusConnection  *connection,
          g_debug ("session_unregister_handler");
  }
  
@@ -3876,7 +3833,7 @@ index 87e38d3..680c0f0 100644
  static dbus_bool_t
  allow_user_function (DBusConnection *connection,
                       unsigned long   uid,
-@@ -1594,44 +1628,110 @@ allow_user_function (DBusConnection *connection,
+@@ -1509,44 +1543,110 @@ allow_user_function (DBusConnection *connection,
          return FALSE;
  }
  
@@ -3936,12 +3893,15 @@ index 87e38d3..680c0f0 100644
 -                                                      &vtable,
 -                                                      session);
 +        conversation = find_conversation_by_pid (session, (GPid) pid);
-+
+
+-                g_debug ("GdmSessionDirect: Emitting conversation-started signal");
+-                _gdm_session_conversation_started (GDM_SESSION (session),
+-                                                   conversation->service_name);
 +        if (conversation == NULL) {
 +                g_warning ("GdmSessionDirect: New worker connection is from unknown source");
 +                dbus_connection_unref (connection);
 +                return FALSE;
-+        }
+         }
 +
 +        conversation->worker_connection = connection;
 +
@@ -3978,13 +3938,10 @@ index 87e38d3..680c0f0 100644
 +                } else {
 +                        reply = dbus_message_new_error (message, DBUS_ERROR_FAILED, "");
 +                }
- 
--                g_debug ("GdmSessionDirect: Emitting conversation-started signal");
--                _gdm_session_conversation_started (GDM_SESSION (session),
--                                                   conversation->service_name);
++
 +                dbus_connection_send (connection, reply, NULL);
 +                return DBUS_HANDLER_RESULT_HANDLED;
-         }
++        }
 +
 +        return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
 +}
@@ -4015,7 +3972,7 @@ index 87e38d3..680c0f0 100644
  }
  
  static gboolean
-@@ -1677,6 +1777,17 @@ setup_server (GdmSessionDirect *session)
+@@ -1592,6 +1692,17 @@ setup_server (GdmSessionDirect *session)
  }
  
  static void
@@ -4033,7 +3990,7 @@ index 87e38d3..680c0f0 100644
  gdm_session_direct_init (GdmSessionDirect *session)
  {
          session->priv = G_TYPE_INSTANCE_GET_PRIVATE (session,
-@@ -1700,6 +1811,11 @@ gdm_session_direct_init (GdmSessionDirect *session)
+@@ -1615,6 +1726,11 @@ gdm_session_direct_init (GdmSessionDirect *session)
                            G_CALLBACK (on_session_exited),
                            NULL);
  
@@ -4045,7 +4002,7 @@ index 87e38d3..680c0f0 100644
          session->priv->environment = g_hash_table_new_full (g_str_hash,
                                                              g_str_equal,
                                                              (GDestroyNotify) g_free,
-@@ -1723,9 +1839,15 @@ worker_exited (GdmSessionWorkerJob *job,
+@@ -1638,9 +1754,15 @@ worker_exited (GdmSessionWorkerJob *job,
  {
          g_debug ("GdmSessionDirect: Worker job exited: %d", code);
  
@@ -4061,7 +4018,7 @@ index 87e38d3..680c0f0 100644
  }
  
  static void
-@@ -1735,9 +1857,15 @@ worker_died (GdmSessionWorkerJob *job,
+@@ -1650,9 +1772,15 @@ worker_died (GdmSessionWorkerJob *job,
  {
          g_debug ("GdmSessionDirect: Worker job died: %d", signum);
  
@@ -4077,7 +4034,7 @@ index 87e38d3..680c0f0 100644
  }
  
  static GdmSessionConversation *
-@@ -1799,17 +1927,21 @@ stop_conversation (GdmSessionConversation *conversation)
+@@ -1714,17 +1842,21 @@ stop_conversation (GdmSessionConversation *conversation)
                                                G_CALLBACK (worker_died),
                                                conversation);
  
@@ -4103,7 +4060,7 @@ index 87e38d3..680c0f0 100644
  }
  
  static void
-@@ -1817,12 +1949,35 @@ gdm_session_direct_start_conversation (GdmSession *session,
+@@ -1732,12 +1864,35 @@ gdm_session_direct_start_conversation (GdmSession *session,
                                         const char *service_name)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
@@ -4140,7 +4097,7 @@ index 87e38d3..680c0f0 100644
  }
  
  static void
-@@ -1873,8 +2028,8 @@ send_setup (GdmSessionDirect *session,
+@@ -1788,8 +1943,8 @@ send_setup (GdmSessionDirect *session,
          dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_hostname);
          dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_x11_authority_file);
  
@@ -4151,7 +4108,7 @@ index 87e38d3..680c0f0 100644
                  g_debug ("GdmSessionDirect: Could not send %s signal", "Setup");
          }
  
-@@ -1936,8 +2091,8 @@ send_setup_for_user (GdmSessionDirect *session,
+@@ -1851,8 +2006,8 @@ send_setup_for_user (GdmSessionDirect *session,
          dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &display_x11_authority_file);
          dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &selected_user);
  
@@ -4162,7 +4119,7 @@ index 87e38d3..680c0f0 100644
                  g_debug ("GdmSessionDirect: Could not send %s signal", "SetupForUser");
          }
  
-@@ -1951,8 +2106,6 @@ gdm_session_direct_setup (GdmSession *session,
+@@ -1866,8 +2021,6 @@ gdm_session_direct_setup (GdmSession *session,
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
  
          g_return_if_fail (session != NULL);
@@ -4171,7 +4128,7 @@ index 87e38d3..680c0f0 100644
  
          send_setup (impl, service_name);
          gdm_session_direct_defaults_changed (impl);
-@@ -1966,8 +2119,6 @@ gdm_session_direct_setup_for_user (GdmSession *session,
+@@ -1881,8 +2034,6 @@ gdm_session_direct_setup_for_user (GdmSession *session,
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
  
          g_return_if_fail (session != NULL);
@@ -4180,7 +4137,7 @@ index 87e38d3..680c0f0 100644
          g_return_if_fail (username != NULL);
  
          gdm_session_direct_select_user (session, username);
-@@ -1977,45 +2128,50 @@ gdm_session_direct_setup_for_user (GdmSession *session,
+@@ -1892,45 +2043,50 @@ gdm_session_direct_setup_for_user (GdmSession *session,
  }
  
  static void
@@ -4244,7 +4201,7 @@ index 87e38d3..680c0f0 100644
          switch (cred_flag) {
          case GDM_SESSION_CRED_ESTABLISH:
                  send_dbus_void_signal (conversation, "EstablishCredentials");
-@@ -2029,13 +2185,12 @@ gdm_session_direct_accredit (GdmSession *session,
+@@ -1944,13 +2100,12 @@ gdm_session_direct_accredit (GdmSession *session,
  }
  
  static void
@@ -4261,7 +4218,7 @@ index 87e38d3..680c0f0 100644
  
          message = dbus_message_new_signal (GDM_SESSION_DBUS_PATH,
                                             GDM_SESSION_DBUS_INTERFACE,
-@@ -2045,7 +2200,6 @@ send_environment_variable (const char       *key,
+@@ -1960,7 +2115,6 @@ send_environment_variable (const char       *key,
          dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &key);
          dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &value);
  
@@ -4269,7 +4226,7 @@ index 87e38d3..680c0f0 100644
          if (! send_dbus_message (conversation, message)) {
                  g_debug ("GdmSessionDirect: Could not send %s signal", "SetEnvironmentVariable");
          }
-@@ -2054,12 +2208,13 @@ send_environment_variable (const char       *key,
+@@ -1969,12 +2123,13 @@ send_environment_variable (const char       *key,
  }
  
  static void
@@ -4285,7 +4242,7 @@ index 87e38d3..680c0f0 100644
  }
  
  static const char *
-@@ -2181,17 +2336,22 @@ setup_session_environment (GdmSessionDirect *session)
+@@ -2079,17 +2234,22 @@ setup_session_environment (GdmSessionDirect *session)
  }
  
  static void
@@ -4311,7 +4268,7 @@ index 87e38d3..680c0f0 100644
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
          GdmSessionConversation *conversation;
-@@ -2211,15 +2371,38 @@ gdm_session_direct_start_session (GdmSession *session)
+@@ -2109,15 +2269,38 @@ gdm_session_direct_start_session (GdmSession *session)
  
          g_free (command);
  
@@ -4352,7 +4309,7 @@ index 87e38d3..680c0f0 100644
  gdm_session_direct_close (GdmSession *session)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
-@@ -2236,6 +2419,13 @@ gdm_session_direct_close (GdmSession *session)
+@@ -2134,6 +2317,13 @@ gdm_session_direct_close (GdmSession *session)
                                             impl->priv->display_device);
          }
  
@@ -4366,7 +4323,7 @@ index 87e38d3..680c0f0 100644
          g_free (impl->priv->selected_user);
          impl->priv->selected_user = NULL;
  
-@@ -2268,6 +2458,7 @@ gdm_session_direct_close (GdmSession *session)
+@@ -2160,6 +2350,7 @@ gdm_session_direct_close (GdmSession *session)
  
  static void
  gdm_session_direct_answer_query  (GdmSession *session,
@@ -4374,7 +4331,7 @@ index 87e38d3..680c0f0 100644
                                    const char *text)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
-@@ -2275,7 +2466,7 @@ gdm_session_direct_answer_query  (GdmSession *session,
+@@ -2167,7 +2358,7 @@ gdm_session_direct_answer_query  (GdmSession *session,
  
          g_return_if_fail (session != NULL);
  
@@ -4383,7 +4340,7 @@ index 87e38d3..680c0f0 100644
  
          answer_pending_query (conversation, text);
  }
-@@ -2283,11 +2474,9 @@ gdm_session_direct_answer_query  (GdmSession *session,
+@@ -2175,11 +2366,9 @@ gdm_session_direct_answer_query  (GdmSession *session,
  static void
  gdm_session_direct_cancel  (GdmSession *session)
  {
@@ -4396,7 +4353,7 @@ index 87e38d3..680c0f0 100644
  }
  
  char *
-@@ -2359,7 +2548,8 @@ gdm_session_direct_select_session (GdmSession *session,
+@@ -2251,7 +2440,8 @@ gdm_session_direct_select_session (GdmSession *session,
                                     const char *text)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
@@ -4406,7 +4363,7 @@ index 87e38d3..680c0f0 100644
  
          g_free (impl->priv->selected_session);
  
-@@ -2369,9 +2559,15 @@ gdm_session_direct_select_session (GdmSession *session,
+@@ -2261,9 +2451,15 @@ gdm_session_direct_select_session (GdmSession *session,
                  impl->priv->selected_session = g_strdup (text);
          }
  
@@ -4425,7 +4382,7 @@ index 87e38d3..680c0f0 100644
  }
  
  static void
-@@ -2379,7 +2575,8 @@ gdm_session_direct_select_language (GdmSession *session,
+@@ -2271,7 +2467,8 @@ gdm_session_direct_select_language (GdmSession *session,
                                      const char *text)
  {
          GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
@@ -4435,7 +4392,7 @@ index 87e38d3..680c0f0 100644
  
          g_free (impl->priv->selected_language);
  
-@@ -2389,9 +2586,15 @@ gdm_session_direct_select_language (GdmSession *session,
+@@ -2281,9 +2478,15 @@ gdm_session_direct_select_language (GdmSession *session,
                  impl->priv->selected_language = g_strdup (text);
          }
  
@@ -4454,36 +4411,7 @@ index 87e38d3..680c0f0 100644
  }
  
  static void
-@@ -2399,7 +2602,8 @@ gdm_session_direct_select_layout (GdmSession *session,
-                                   const char *text)
- {
-         GdmSessionDirect *impl = GDM_SESSION_DIRECT (session);
--        GdmSessionConversation *conversation;
-+        GHashTableIter iter;
-+        gpointer key, value;
- 
-         g_free (impl->priv->selected_layout);
- 
-@@ -2409,9 +2613,15 @@ gdm_session_direct_select_layout (GdmSession *session,
-                 impl->priv->selected_layout = g_strdup (text);
-         }
- 
--        conversation = impl->priv->conversation;
--        send_dbus_string_signal (conversation, "SetLayoutName",
--                                 get_layout_name (impl));
-+        g_hash_table_iter_init (&iter, impl->priv->conversations);
-+        while (g_hash_table_iter_next (&iter, &key, &value)) {
-+                GdmSessionConversation *conversation;
-+
-+                conversation = (GdmSessionConversation *) value;
-+
-+                send_dbus_string_signal (conversation, "SetLayoutName",
-+                                         get_layout_name (impl));
-+        }
- }
- 
- static void
-@@ -2673,6 +2883,7 @@ static void
+@@ -2543,6 +2746,7 @@ static void
  gdm_session_iface_init (GdmSessionIface *iface)
  {
          iface->start_conversation = gdm_session_direct_start_conversation;
@@ -4492,7 +4420,7 @@ index 87e38d3..680c0f0 100644
          iface->setup_for_user = gdm_session_direct_setup_for_user;
          iface->authenticate = gdm_session_direct_authenticate;
 diff --git a/daemon/gdm-session-private.h b/daemon/gdm-session-private.h
-index 74b6069..36781dd 100644
+index 34adff5..e15b7dd 100644
 --- a/daemon/gdm-session-private.h
 +++ b/daemon/gdm-session-private.h
 @@ -29,27 +29,41 @@ G_BEGIN_DECLS
@@ -4542,7 +4470,7 @@ index 74b6069..36781dd 100644
                                                              const char   *message);
  void             _gdm_session_session_exited               (GdmSession   *session,
                                                              int           exit_code);
-@@ -70,12 +84,16 @@ void             _gdm_session_selected_user_changed        (GdmSession   *sessio
+@@ -68,12 +82,16 @@ void             _gdm_session_selected_user_changed        (GdmSession   *sessio
  
  /* call and response stuff */
  void             _gdm_session_info_query                   (GdmSession   *session,
@@ -4560,7 +4488,7 @@ index 74b6069..36781dd 100644
  
  G_END_DECLS
 diff --git a/daemon/gdm-session-relay.c b/daemon/gdm-session-relay.c
-index a0b4cbf..98ccc51 100644
+index d559c71..50f1140 100644
 --- a/daemon/gdm-session-relay.c
 +++ b/daemon/gdm-session-relay.c
 @@ -212,31 +212,34 @@ gdm_session_relay_setup_for_user (GdmSession *session,
@@ -4628,7 +4556,7 @@ index a0b4cbf..98ccc51 100644
  }
  
  static void
-@@ -299,11 +304,12 @@ gdm_session_relay_cancel (GdmSession *session)
+@@ -291,11 +296,12 @@ gdm_session_relay_cancel (GdmSession *session)
  }
  
  static void
@@ -4643,7 +4571,7 @@ index a0b4cbf..98ccc51 100644
  }
  
  /* Note: Use abstract sockets like dbus does by default on Linux. Abstract
-@@ -341,10 +347,12 @@ handle_info_query (GdmSessionRelay *session_relay,
+@@ -333,10 +339,12 @@ handle_info_query (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4657,7 +4585,7 @@ index a0b4cbf..98ccc51 100644
                                       DBUS_TYPE_STRING, &text,
                                       DBUS_TYPE_INVALID)) {
                  g_warning ("ERROR: %s", error.message);
-@@ -356,7 +364,7 @@ handle_info_query (GdmSessionRelay *session_relay,
+@@ -348,7 +356,7 @@ handle_info_query (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4666,7 +4594,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -368,12 +376,14 @@ handle_secret_info_query (GdmSessionRelay *session_relay,
+@@ -360,12 +368,14 @@ handle_secret_info_query (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4682,7 +4610,7 @@ index a0b4cbf..98ccc51 100644
                                       DBUS_TYPE_STRING, &text,
                                       DBUS_TYPE_INVALID)) {
                  g_warning ("ERROR: %s", error.message);
-@@ -385,7 +395,7 @@ handle_secret_info_query (GdmSessionRelay *session_relay,
+@@ -377,7 +387,7 @@ handle_secret_info_query (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4691,7 +4619,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -397,12 +407,14 @@ handle_info (GdmSessionRelay *session_relay,
+@@ -389,12 +399,14 @@ handle_info (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4707,7 +4635,7 @@ index a0b4cbf..98ccc51 100644
                                       DBUS_TYPE_STRING, &text,
                                       DBUS_TYPE_INVALID)) {
                  g_warning ("ERROR: %s", error.message);
-@@ -414,7 +426,7 @@ handle_info (GdmSessionRelay *session_relay,
+@@ -406,7 +418,7 @@ handle_info (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4716,7 +4644,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -426,12 +438,14 @@ handle_problem (GdmSessionRelay *session_relay,
+@@ -418,12 +430,14 @@ handle_problem (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4732,7 +4660,7 @@ index a0b4cbf..98ccc51 100644
                                       DBUS_TYPE_STRING, &text,
                                       DBUS_TYPE_INVALID)) {
                  g_warning ("ERROR: %s", error.message);
-@@ -443,7 +457,7 @@ handle_problem (GdmSessionRelay *session_relay,
+@@ -435,7 +449,7 @@ handle_problem (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4741,7 +4669,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -455,8 +469,15 @@ handle_setup_complete (GdmSessionRelay *session_relay,
+@@ -447,8 +461,15 @@ handle_setup_complete (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4757,7 +4685,7 @@ index a0b4cbf..98ccc51 100644
  
          g_debug ("GdmSessionRelay: SetupComplete");
  
-@@ -464,7 +485,7 @@ handle_setup_complete (GdmSessionRelay *session_relay,
+@@ -456,7 +477,7 @@ handle_setup_complete (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4766,7 +4694,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -476,8 +497,15 @@ handle_setup_failed (GdmSessionRelay *session_relay,
+@@ -468,8 +489,15 @@ handle_setup_failed (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4782,7 +4710,7 @@ index a0b4cbf..98ccc51 100644
  
          g_debug ("GdmSessionRelay: SetupFailed");
  
-@@ -485,7 +513,7 @@ handle_setup_failed (GdmSessionRelay *session_relay,
+@@ -477,7 +505,7 @@ handle_setup_failed (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4791,7 +4719,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -498,8 +526,15 @@ handle_authenticated (GdmSessionRelay *session_relay,
+@@ -490,8 +518,15 @@ handle_authenticated (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4807,7 +4735,7 @@ index a0b4cbf..98ccc51 100644
  
          g_debug ("GdmSessionRelay: Authenticated");
  
-@@ -507,7 +542,7 @@ handle_authenticated (GdmSessionRelay *session_relay,
+@@ -499,7 +534,7 @@ handle_authenticated (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4816,7 +4744,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -519,8 +554,15 @@ handle_authentication_failed (GdmSessionRelay *session_relay,
+@@ -511,8 +546,15 @@ handle_authentication_failed (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4832,7 +4760,7 @@ index a0b4cbf..98ccc51 100644
  
          g_debug ("GdmSessionRelay: AuthenticationFailed");
  
-@@ -528,7 +570,7 @@ handle_authentication_failed (GdmSessionRelay *session_relay,
+@@ -520,7 +562,7 @@ handle_authentication_failed (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4841,7 +4769,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -540,8 +582,15 @@ handle_authorized (GdmSessionRelay *session_relay,
+@@ -532,8 +574,15 @@ handle_authorized (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4857,7 +4785,7 @@ index a0b4cbf..98ccc51 100644
  
          g_debug ("GdmSessionRelay: Authorized");
  
-@@ -549,7 +598,7 @@ handle_authorized (GdmSessionRelay *session_relay,
+@@ -541,7 +590,7 @@ handle_authorized (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4866,7 +4794,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -561,8 +610,15 @@ handle_authorization_failed (GdmSessionRelay *session_relay,
+@@ -553,8 +602,15 @@ handle_authorization_failed (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4882,7 +4810,7 @@ index a0b4cbf..98ccc51 100644
  
          g_debug ("GdmSessionRelay: AuthorizationFailed");
  
-@@ -570,7 +626,7 @@ handle_authorization_failed (GdmSessionRelay *session_relay,
+@@ -562,7 +618,7 @@ handle_authorization_failed (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4891,7 +4819,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -582,8 +638,15 @@ handle_accredited (GdmSessionRelay *session_relay,
+@@ -574,8 +630,15 @@ handle_accredited (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4907,7 +4835,7 @@ index a0b4cbf..98ccc51 100644
  
          g_debug ("GdmSessionRelay: Accredited");
  
-@@ -591,7 +654,7 @@ handle_accredited (GdmSessionRelay *session_relay,
+@@ -583,7 +646,7 @@ handle_accredited (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4916,7 +4844,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -603,8 +666,15 @@ handle_accreditation_failed (GdmSessionRelay *session_relay,
+@@ -595,8 +658,15 @@ handle_accreditation_failed (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4932,7 +4860,7 @@ index a0b4cbf..98ccc51 100644
  
          g_debug ("GdmSessionRelay: AccreditationFailed");
  
-@@ -612,7 +682,7 @@ handle_accreditation_failed (GdmSessionRelay *session_relay,
+@@ -604,7 +674,7 @@ handle_accreditation_failed (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4941,7 +4869,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -623,9 +693,11 @@ handle_session_opened (GdmSessionRelay *session_relay,
+@@ -615,9 +685,11 @@ handle_session_opened (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4953,7 +4881,7 @@ index a0b4cbf..98ccc51 100644
                                       DBUS_TYPE_INVALID)) {
                  g_warning ("ERROR: %s", error.message);
          }
-@@ -637,7 +709,7 @@ handle_session_opened (GdmSessionRelay *session_relay,
+@@ -629,7 +701,7 @@ handle_session_opened (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4962,7 +4890,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -649,9 +721,11 @@ handle_session_open_failed (GdmSessionRelay *session_relay,
+@@ -641,9 +713,11 @@ handle_session_open_failed (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4974,7 +4902,7 @@ index a0b4cbf..98ccc51 100644
                                       DBUS_TYPE_INVALID)) {
                  g_warning ("ERROR: %s", error.message);
          }
-@@ -663,7 +737,7 @@ handle_session_open_failed (GdmSessionRelay *session_relay,
+@@ -655,7 +729,7 @@ handle_session_open_failed (GdmSessionRelay *session_relay,
          dbus_connection_send (connection, reply, NULL);
          dbus_message_unref (reply);
  
@@ -4983,7 +4911,7 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
  }
-@@ -675,6 +749,7 @@ handle_session_started (GdmSessionRelay *session_relay,
+@@ -667,6 +741,7 @@ handle_session_started (GdmSessionRelay *session_relay,
  {
          DBusMessage *reply;
          DBusError    error;
@@ -4991,7 +4919,7 @@ index a0b4cbf..98ccc51 100644
          int          pid;
  
          dbus_error_init (&error);
-@@ -682,6 +757,7 @@ handle_session_started (GdmSessionRelay *session_relay,
+@@ -674,6 +749,7 @@ handle_session_started (GdmSessionRelay *session_relay,
          pid = 0;
          if (! dbus_message_get_args (message,
                                       &error,
@@ -4999,7 +4927,7 @@ index a0b4cbf..98ccc51 100644
                                       DBUS_TYPE_INT32, &pid,
                                       DBUS_TYPE_INVALID)) {
                  g_warning ("ERROR: %s", error.message);
-@@ -694,6 +770,7 @@ handle_session_started (GdmSessionRelay *session_relay,
+@@ -686,6 +762,7 @@ handle_session_started (GdmSessionRelay *session_relay,
          dbus_message_unref (reply);
  
          _gdm_session_session_started (GDM_SESSION (session_relay),
@@ -5008,10 +4936,10 @@ index a0b4cbf..98ccc51 100644
  
          return DBUS_HANDLER_RESULT_HANDLED;
 diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
-index e8ebc60..f992340 100644
+index 0a0d585..a384fdc 100644
 --- a/daemon/gdm-session-worker.c
 +++ b/daemon/gdm-session-worker.c
-@@ -2855,6 +2855,28 @@ worker_dbus_filter_function (DBusConnection *connection,
+@@ -2800,6 +2800,28 @@ worker_dbus_filter_function (DBusConnection *connection,
          return DBUS_HANDLER_RESULT_HANDLED;
  }
  
@@ -5040,7 +4968,7 @@ index e8ebc60..f992340 100644
  static GObject *
  gdm_session_worker_constructor (GType                  type,
                                  guint                  n_construct_properties,
-@@ -2881,6 +2903,11 @@ gdm_session_worker_constructor (GType                  type,
+@@ -2826,6 +2848,11 @@ gdm_session_worker_constructor (GType                  type,
                  exit (1);
          }
  
@@ -5053,7 +4981,7 @@ index e8ebc60..f992340 100644
          dbus_connection_set_exit_on_disconnect (worker->priv->connection, TRUE);
  
 diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
-index 1820e29..8858071 100644
+index 6a87ddd..4c7f6bc 100644
 --- a/daemon/gdm-session.c
 +++ b/daemon/gdm-session.c
 @@ -24,11 +24,13 @@
@@ -5070,7 +4998,7 @@ index 1820e29..8858071 100644
          SETUP_COMPLETE,
          SETUP_FAILED,
          RESET_COMPLETE,
-@@ -89,6 +91,15 @@ gdm_session_start_conversation (GdmSession *session,
+@@ -88,6 +90,15 @@ gdm_session_start_conversation (GdmSession *session,
  }
  
  void
@@ -5086,7 +5014,7 @@ index 1820e29..8858071 100644
  gdm_session_close (GdmSession *session)
  {
          g_return_if_fail (GDM_IS_SESSION (session));
-@@ -116,37 +127,41 @@ gdm_session_setup_for_user (GdmSession *session,
+@@ -115,37 +126,41 @@ gdm_session_setup_for_user (GdmSession *session,
  }
  
  void
@@ -5134,7 +5062,7 @@ index 1820e29..8858071 100644
  }
  
  void
-@@ -194,19 +209,21 @@ gdm_session_cancel (GdmSession *session)
+@@ -184,19 +199,21 @@ gdm_session_cancel (GdmSession *session)
  }
  
  void
@@ -5160,7 +5088,7 @@ index 1820e29..8858071 100644
  }
  
  static void
-@@ -223,7 +240,17 @@ gdm_session_class_init (gpointer g_iface)
+@@ -213,7 +230,17 @@ gdm_session_class_init (gpointer g_iface)
                                NULL,
                                g_cclosure_marshal_VOID__STRING,
                                G_TYPE_NONE,
@@ -5179,7 +5107,7 @@ index 1820e29..8858071 100644
          signals [SETUP_COMPLETE] =
                  g_signal_new ("setup-complete",
                                iface_type,
-@@ -231,9 +258,10 @@ gdm_session_class_init (gpointer g_iface)
+@@ -221,9 +248,10 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, setup_complete),
                                NULL,
                                NULL,
@@ -5192,7 +5120,7 @@ index 1820e29..8858071 100644
          signals [SETUP_FAILED] =
                  g_signal_new ("setup-failed",
                                iface_type,
-@@ -241,10 +269,10 @@ gdm_session_class_init (gpointer g_iface)
+@@ -231,10 +259,10 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, setup_failed),
                                NULL,
                                NULL,
@@ -5206,7 +5134,7 @@ index 1820e29..8858071 100644
          signals [RESET_COMPLETE] =
                  g_signal_new ("reset-complete",
                                iface_type,
-@@ -273,9 +301,9 @@ gdm_session_class_init (gpointer g_iface)
+@@ -263,9 +291,9 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, authenticated),
                                NULL,
                                NULL,
@@ -5218,7 +5146,7 @@ index 1820e29..8858071 100644
          signals [AUTHENTICATION_FAILED] =
                  g_signal_new ("authentication-failed",
                                iface_type,
-@@ -283,10 +311,10 @@ gdm_session_class_init (gpointer g_iface)
+@@ -273,10 +301,10 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, authentication_failed),
                                NULL,
                                NULL,
@@ -5232,7 +5160,7 @@ index 1820e29..8858071 100644
          signals [AUTHORIZED] =
                  g_signal_new ("authorized",
                                iface_type,
-@@ -294,9 +322,9 @@ gdm_session_class_init (gpointer g_iface)
+@@ -284,9 +312,9 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, authorized),
                                NULL,
                                NULL,
@@ -5244,7 +5172,7 @@ index 1820e29..8858071 100644
          signals [AUTHORIZATION_FAILED] =
                  g_signal_new ("authorization-failed",
                                iface_type,
-@@ -304,10 +332,10 @@ gdm_session_class_init (gpointer g_iface)
+@@ -294,10 +322,10 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, authorization_failed),
                                NULL,
                                NULL,
@@ -5258,7 +5186,7 @@ index 1820e29..8858071 100644
          signals [ACCREDITED] =
                  g_signal_new ("accredited",
                                iface_type,
-@@ -315,9 +343,9 @@ gdm_session_class_init (gpointer g_iface)
+@@ -305,9 +333,9 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, accredited),
                                NULL,
                                NULL,
@@ -5270,7 +5198,7 @@ index 1820e29..8858071 100644
          signals [ACCREDITATION_FAILED] =
                  g_signal_new ("accreditation-failed",
                                iface_type,
-@@ -325,10 +353,10 @@ gdm_session_class_init (gpointer g_iface)
+@@ -315,10 +343,10 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, accreditation_failed),
                                NULL,
                                NULL,
@@ -5284,7 +5212,7 @@ index 1820e29..8858071 100644
  
           signals [INFO_QUERY] =
                  g_signal_new ("info-query",
-@@ -337,10 +365,10 @@ gdm_session_class_init (gpointer g_iface)
+@@ -327,10 +355,10 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, info_query),
                                NULL,
                                NULL,
@@ -5298,7 +5226,7 @@ index 1820e29..8858071 100644
          signals [SECRET_INFO_QUERY] =
                  g_signal_new ("secret-info-query",
                                iface_type,
-@@ -348,10 +376,10 @@ gdm_session_class_init (gpointer g_iface)
+@@ -338,10 +366,10 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, secret_info_query),
                                NULL,
                                NULL,
@@ -5312,7 +5240,7 @@ index 1820e29..8858071 100644
          signals [INFO] =
                  g_signal_new ("info",
                                iface_type,
-@@ -359,10 +387,10 @@ gdm_session_class_init (gpointer g_iface)
+@@ -349,10 +377,10 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, info),
                                NULL,
                                NULL,
@@ -5326,7 +5254,7 @@ index 1820e29..8858071 100644
          signals [PROBLEM] =
                  g_signal_new ("problem",
                                iface_type,
-@@ -370,10 +398,10 @@ gdm_session_class_init (gpointer g_iface)
+@@ -360,10 +388,10 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, problem),
                                NULL,
                                NULL,
@@ -5340,7 +5268,7 @@ index 1820e29..8858071 100644
          signals [SESSION_OPENED] =
                  g_signal_new ("session-opened",
                                iface_type,
-@@ -381,9 +409,10 @@ gdm_session_class_init (gpointer g_iface)
+@@ -371,9 +399,10 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, session_opened),
                                NULL,
                                NULL,
@@ -5353,7 +5281,7 @@ index 1820e29..8858071 100644
          signals [SESSION_OPEN_FAILED] =
                  g_signal_new ("session-open-failed",
                                iface_type,
-@@ -391,10 +420,10 @@ gdm_session_class_init (gpointer g_iface)
+@@ -381,10 +410,10 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, session_open_failed),
                                NULL,
                                NULL,
@@ -5367,7 +5295,7 @@ index 1820e29..8858071 100644
          signals [SESSION_STARTED] =
                  g_signal_new ("session-started",
                                iface_type,
-@@ -402,10 +431,10 @@ gdm_session_class_init (gpointer g_iface)
+@@ -392,10 +421,10 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, session_started),
                                NULL,
                                NULL,
@@ -5381,7 +5309,7 @@ index 1820e29..8858071 100644
          signals [SESSION_START_FAILED] =
                  g_signal_new ("session-start-failed",
                                iface_type,
-@@ -413,10 +442,10 @@ gdm_session_class_init (gpointer g_iface)
+@@ -403,10 +432,10 @@ gdm_session_class_init (gpointer g_iface)
                                G_STRUCT_OFFSET (GdmSessionIface, session_start_failed),
                                NULL,
                                NULL,
@@ -5395,7 +5323,7 @@ index 1820e29..8858071 100644
          signals [SESSION_EXITED] =
                  g_signal_new ("session-exited",
                                iface_type,
-@@ -496,19 +525,21 @@ gdm_session_class_init (gpointer g_iface)
+@@ -475,19 +504,21 @@ gdm_session_class_init (gpointer g_iface)
  }
  
  void
@@ -5420,7 +5348,7 @@ index 1820e29..8858071 100644
  }
  
  void
-@@ -528,114 +559,128 @@ _gdm_session_reset_failed (GdmSession   *session,
+@@ -507,114 +538,128 @@ _gdm_session_reset_failed (GdmSession   *session,
  }
  
  void
@@ -5567,7 +5495,7 @@ index 1820e29..8858071 100644
  }
  
  void
-@@ -663,6 +708,14 @@ _gdm_session_conversation_started (GdmSession   *session,
+@@ -642,6 +687,14 @@ _gdm_session_conversation_started (GdmSession   *session,
  }
  
  void
@@ -5583,7 +5511,7 @@ index 1820e29..8858071 100644
  {
          g_return_if_fail (GDM_IS_SESSION (session));
 diff --git a/daemon/gdm-session.h b/daemon/gdm-session.h
-index 00c2fa4..22c2ccb 100644
+index 202da36..9e72f89 100644
 --- a/daemon/gdm-session.h
 +++ b/daemon/gdm-session.h
 @@ -47,18 +47,25 @@ struct _GdmSessionIface
@@ -5615,7 +5543,7 @@ index 00c2fa4..22c2ccb 100644
                                                const char   *text);
          void (* select_language)             (GdmSession   *session,
                                                const char   *text);
-@@ -68,41 +75,58 @@ struct _GdmSessionIface
+@@ -66,41 +73,58 @@ struct _GdmSessionIface
                                                const char   *text);
          void (* select_user)                 (GdmSession   *session,
                                                const char   *text);
@@ -5680,7 +5608,7 @@ index 00c2fa4..22c2ccb 100644
                                                const char   *message);
          void (* session_exited)              (GdmSession   *session,
                                                int           exit_code);
-@@ -110,6 +134,8 @@ struct _GdmSessionIface
+@@ -108,6 +132,8 @@ struct _GdmSessionIface
                                                int           signal_number);
          void (* conversation_started)        (GdmSession   *session,
                                                const char   *service_name);
@@ -5689,7 +5617,7 @@ index 00c2fa4..22c2ccb 100644
          void (* closed)                      (GdmSession   *session);
          void (* selected_user_changed)       (GdmSession   *session,
                                                const char   *text);
-@@ -126,21 +152,29 @@ GType    gdm_session_get_type                    (void) G_GNUC_CONST;
+@@ -122,21 +148,29 @@ GType    gdm_session_get_type                    (void) G_GNUC_CONST;
  
  void     gdm_session_start_conversation          (GdmSession *session,
                                                    const char *service_name);
@@ -5724,7 +5652,7 @@ index 00c2fa4..22c2ccb 100644
  void     gdm_session_select_session              (GdmSession *session,
                                                    const char *session_name);
 diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
-index 0b60ef7..c45011c 100644
+index a5b6e9c..83ceee8 100644
 --- a/daemon/gdm-simple-slave.c
 +++ b/daemon/gdm-simple-slave.c
 @@ -75,6 +75,8 @@ struct GdmSimpleSlavePrivate
@@ -6020,7 +5948,7 @@ index 0b60ef7..c45011c 100644
  on_session_selected_user_changed (GdmSession     *session,
                                    const char     *text,
                                    GdmSimpleSlave *slave)
-@@ -757,6 +797,10 @@ create_new_session (GdmSimpleSlave *slave)
+@@ -745,6 +785,10 @@ create_new_session (GdmSimpleSlave *slave)
                            G_CALLBACK (on_session_conversation_started),
                            slave);
          g_signal_connect (slave->priv->session,
@@ -6031,7 +5959,7 @@ index 0b60ef7..c45011c 100644
                            "setup-complete",
                            G_CALLBACK (on_session_setup_complete),
                            slave);
-@@ -872,6 +916,9 @@ destroy_session (GdmSimpleSlave *slave)
+@@ -855,6 +899,9 @@ destroy_session (GdmSimpleSlave *slave)
                                                G_CALLBACK (on_session_conversation_started),
                                                slave);
          g_signal_handlers_disconnect_by_func (slave->priv->session,
@@ -6041,7 +5969,7 @@ index 0b60ef7..c45011c 100644
                                                G_CALLBACK (on_session_setup_complete),
                                                slave);
          g_signal_handlers_disconnect_by_func (slave->priv->session,
-@@ -999,11 +1046,12 @@ on_greeter_start_conversation (GdmGreeterServer *greeter_server,
+@@ -978,11 +1025,12 @@ on_greeter_start_conversation (GdmGreeterServer *greeter_server,
  
  static void
  on_greeter_begin_verification (GdmGreeterServer *greeter_server,
@@ -6055,7 +5983,7 @@ index 0b60ef7..c45011c 100644
  }
  
  static void
-@@ -1019,21 +1067,23 @@ on_greeter_begin_auto_login (GdmGreeterServer *greeter_server,
+@@ -998,21 +1046,23 @@ on_greeter_begin_auto_login (GdmGreeterServer *greeter_server,
  
  static void
  on_greeter_begin_verification_for_user (GdmGreeterServer *greeter_server,
@@ -6081,7 +6009,7 @@ index 0b60ef7..c45011c 100644
  }
  
  static void
-@@ -1096,18 +1146,20 @@ on_greeter_connected (GdmGreeterServer *greeter_server,
+@@ -1067,18 +1117,20 @@ on_greeter_connected (GdmGreeterServer *greeter_server,
  
  static void
  on_start_session_when_ready (GdmGreeterServer *session,
@@ -6223,10 +6151,10 @@ index 9bfda86..fe78230 100644
  
  static void
 diff --git a/gui/simple-greeter/gdm-greeter-client.c b/gui/simple-greeter/gdm-greeter-client.c
-index b175fc9..e42ab1e 100644
+index ae61eb1..90bbb4d 100644
 --- a/gui/simple-greeter/gdm-greeter-client.c
 +++ b/gui/simple-greeter/gdm-greeter-client.c
-@@ -135,6 +135,37 @@ emit_string_and_int_signal_for_message (GdmGreeterClient *client,
+@@ -134,6 +134,37 @@ emit_string_and_int_signal_for_message (GdmGreeterClient *client,
  }
  
  static void
@@ -6264,7 +6192,7 @@ index b175fc9..e42ab1e 100644
  emit_string_signal_for_message (GdmGreeterClient *client,
                                  const char       *name,
                                  DBusMessage      *message,
-@@ -201,37 +232,35 @@ static void
+@@ -193,37 +224,35 @@ static void
  on_user_authorized (GdmGreeterClient *client,
                      DBusMessage      *message)
  {
@@ -6307,7 +6235,7 @@ index b175fc9..e42ab1e 100644
  }
  
  static void
-@@ -319,14 +348,22 @@ send_dbus_string_method (DBusConnection *connection,
+@@ -311,14 +340,22 @@ send_dbus_string_method (DBusConnection *connection,
  }
  
  static gboolean
@@ -6333,7 +6261,7 @@ index b175fc9..e42ab1e 100644
  
          g_debug ("GdmGreeterClient: Calling %s", method);
          message = dbus_message_new_method_call (NULL,
-@@ -340,8 +377,77 @@ send_dbus_bool_method (DBusConnection *connection,
+@@ -332,8 +369,77 @@ send_dbus_bool_method (DBusConnection *connection,
  
          dbus_message_iter_init_append (message, &iter);
          dbus_message_iter_append_basic (&iter,
@@ -6412,7 +6340,7 @@ index b175fc9..e42ab1e 100644
  
          dbus_error_init (&error);
          reply = dbus_connection_send_with_reply_and_block (connection,
-@@ -424,37 +530,44 @@ gdm_greeter_client_call_begin_auto_login (GdmGreeterClient *client,
+@@ -416,37 +522,44 @@ gdm_greeter_client_call_begin_auto_login (GdmGreeterClient *client,
  }
  
  void
@@ -6469,7 +6397,7 @@ index b175fc9..e42ab1e 100644
  }
  
  void
-@@ -849,10 +962,10 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
+@@ -831,10 +944,10 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterClientClass, info_query),
                                NULL,
                                NULL,
@@ -6483,7 +6411,7 @@ index b175fc9..e42ab1e 100644
  
          gdm_greeter_client_signals[SECRET_INFO_QUERY] =
                  g_signal_new ("secret-info-query",
-@@ -861,10 +974,10 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
+@@ -843,10 +956,10 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterClientClass, secret_info_query),
                                NULL,
                                NULL,
@@ -6497,7 +6425,7 @@ index b175fc9..e42ab1e 100644
  
          gdm_greeter_client_signals[INFO] =
                  g_signal_new ("info",
-@@ -873,10 +986,10 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
+@@ -855,10 +968,10 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterClientClass, info),
                                NULL,
                                NULL,
@@ -6511,7 +6439,7 @@ index b175fc9..e42ab1e 100644
  
          gdm_greeter_client_signals[PROBLEM] =
                  g_signal_new ("problem",
-@@ -885,10 +998,10 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
+@@ -867,10 +980,10 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterClientClass, problem),
                                NULL,
                                NULL,
@@ -6525,7 +6453,7 @@ index b175fc9..e42ab1e 100644
  
          gdm_greeter_client_signals[READY] =
                  g_signal_new ("ready",
-@@ -980,8 +1093,9 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
+@@ -952,8 +1065,9 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterClientClass, user_authorized),
                                NULL,
                                NULL,
@@ -6538,7 +6466,7 @@ index b175fc9..e42ab1e 100644
  
  static void
 diff --git a/gui/simple-greeter/gdm-greeter-client.h b/gui/simple-greeter/gdm-greeter-client.h
-index e08aaa5..2f27503 100644
+index 5f92abe..868b496 100644
 --- a/gui/simple-greeter/gdm-greeter-client.h
 +++ b/gui/simple-greeter/gdm-greeter-client.h
 @@ -45,17 +45,22 @@ typedef struct
@@ -6565,7 +6493,7 @@ index e08aaa5..2f27503 100644
          void (* reset)                   (GdmGreeterClient  *client);
          void (* authentication_failed)   (GdmGreeterClient  *client);
          void (* selected_user_changed)   (GdmGreeterClient  *client,
-@@ -70,7 +75,8 @@ typedef struct
+@@ -68,7 +73,8 @@ typedef struct
          void (* timed_login_requested)   (GdmGreeterClient  *client,
                                            const char        *username,
                                            int                delay);
@@ -6575,7 +6503,7 @@ index e08aaa5..2f27503 100644
  } GdmGreeterClientClass;
  
  #define GDM_GREETER_CLIENT_ERROR (gdm_greeter_client_error_quark ())
-@@ -96,8 +102,10 @@ void               gdm_greeter_client_call_start_conversation        (GdmGreeter
+@@ -94,8 +100,10 @@ void               gdm_greeter_client_call_start_conversation        (GdmGreeter
                                                                        const char       *service_name);
  void               gdm_greeter_client_call_begin_auto_login          (GdmGreeterClient *client,
                                                                        const char       *username);
@@ -6587,7 +6515,7 @@ index e08aaa5..2f27503 100644
                                                                          const char       *username);
  void               gdm_greeter_client_call_cancel                    (GdmGreeterClient *client);
  void               gdm_greeter_client_call_disconnect                (GdmGreeterClient *client);
-@@ -112,9 +120,11 @@ void               gdm_greeter_client_call_select_layout             (GdmGreeter
+@@ -108,9 +116,11 @@ void               gdm_greeter_client_call_select_language           (GdmGreeter
  void               gdm_greeter_client_call_select_session            (GdmGreeterClient *client,
                                                                        const char       *text);
  void               gdm_greeter_client_call_answer_query              (GdmGreeterClient *client,
@@ -6600,7 +6528,7 @@ index e08aaa5..2f27503 100644
  
  
 diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c
-index 63de620..b7e7f1c 100644
+index d1d2341..fa2d8e6 100644
 --- a/gui/simple-greeter/gdm-greeter-session.c
 +++ b/gui/simple-greeter/gdm-greeter-session.c
 @@ -69,6 +69,7 @@ static gpointer session_object = NULL;
@@ -6619,7 +6547,7 @@ index 63de620..b7e7f1c 100644
              const char        *text,
              GdmGreeterSession *session)
  {
-@@ -202,6 +204,7 @@ on_user_authorized (GdmGreeterClient  *client,
+@@ -186,6 +188,7 @@ on_user_authorized (GdmGreeterClient  *client,
  
  static void
  on_info_query (GdmGreeterClient  *client,
@@ -6627,7 +6555,7 @@ index 63de620..b7e7f1c 100644
                 const char        *text,
                 GdmGreeterSession *session)
  {
-@@ -212,6 +215,7 @@ on_info_query (GdmGreeterClient  *client,
+@@ -196,6 +199,7 @@ on_info_query (GdmGreeterClient  *client,
  
  static void
  on_secret_info_query (GdmGreeterClient  *client,
@@ -6635,7 +6563,7 @@ index 63de620..b7e7f1c 100644
                        const char        *text,
                        GdmGreeterSession *session)
  {
-@@ -233,7 +237,8 @@ static void
+@@ -217,7 +221,8 @@ static void
  on_begin_verification (GdmGreeterLoginWindow *login_window,
                         GdmGreeterSession     *session)
  {
@@ -6645,7 +6573,7 @@ index 63de620..b7e7f1c 100644
  }
  
  static void
-@@ -242,6 +247,7 @@ on_begin_verification_for_user (GdmGreeterLoginWindow *login_window,
+@@ -226,6 +231,7 @@ on_begin_verification_for_user (GdmGreeterLoginWindow *login_window,
                                  GdmGreeterSession     *session)
  {
          gdm_greeter_client_call_begin_verification_for_user (session->priv->client,
@@ -6653,7 +6581,7 @@ index 63de620..b7e7f1c 100644
                                                               username);
  }
  
-@@ -251,6 +257,7 @@ on_query_answer (GdmGreeterLoginWindow *login_window,
+@@ -235,6 +241,7 @@ on_query_answer (GdmGreeterLoginWindow *login_window,
                   GdmGreeterSession     *session)
  {
          gdm_greeter_client_call_answer_query (session->priv->client,
@@ -6661,7 +6589,7 @@ index 63de620..b7e7f1c 100644
                                                text);
  }
  
-@@ -308,7 +315,7 @@ static void
+@@ -283,7 +290,7 @@ static void
  on_start_session (GdmGreeterLoginWindow *login_window,
                    GdmGreeterSession     *session)
  {
@@ -6671,10 +6599,10 @@ index 63de620..b7e7f1c 100644
  
  static int
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From afa1b73fec6699efbf0fe2fa7a592cb0c844d751 Mon Sep 17 00:00:00 2001
+From 201ce0918dad83249cd726dcb336dc0ad267cbc0 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Wed, 28 Oct 2009 16:05:14 -0400
 Subject: [PATCH 11/35] Return a different error code for "service won't work" than "auth failed"
@@ -6687,10 +6615,10 @@ a more sensible UI when e.g. fingerprinting isn't enabled.
  2 files changed, 12 insertions(+), 3 deletions(-)
 
 diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
-index f992340..fc2ec21 100644
+index a384fdc..71f1a1c 100644
 --- a/daemon/gdm-session-worker.c
 +++ b/daemon/gdm-session-worker.c
-@@ -1286,8 +1286,8 @@ gdm_session_worker_initialize_pam (GdmSessionWorker *worker,
+@@ -1285,8 +1285,8 @@ gdm_session_worker_initialize_pam (GdmSessionWorker *worker,
                   */
                  g_set_error (error,
                               GDM_SESSION_WORKER_ERROR,
@@ -6701,7 +6629,7 @@ index f992340..fc2ec21 100644
                               error_code == PAM_ABORT? _("general failure") :
                               error_code == PAM_BUF_ERR? _("out of memory") :
                               error_code == PAM_SYSTEM_ERR? _("application programmer error") :
-@@ -1398,7 +1398,15 @@ gdm_session_worker_authenticate_user (GdmSessionWorker *worker,
+@@ -1397,7 +1397,15 @@ gdm_session_worker_authenticate_user (GdmSessionWorker *worker,
          /* blocking call, does the actual conversation */
          error_code = pam_authenticate (worker->priv->pam_handle, authentication_flags);
  
@@ -6731,10 +6659,10 @@ index ee5465a..b1c8285 100644
          GDM_SESSION_WORKER_ERROR_AUTHORIZING,
          GDM_SESSION_WORKER_ERROR_OPENING_LOG_FILE,
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 6d6dfbd6f97c4adab7fafb233ece88567fbe8ff0 Mon Sep 17 00:00:00 2001
+From aa3b9a352ffe59ae03703a02fda2fc020603f195 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Wed, 28 Oct 2009 21:32:00 -0400
 Subject: [PATCH 12/35] Emit "service-unavailable" from session when pam service refuses to work
@@ -6749,10 +6677,10 @@ Subject: [PATCH 12/35] Emit "service-unavailable" from session when pam service
  6 files changed, 103 insertions(+), 10 deletions(-)
 
 diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c
-index 680c0f0..832b870 100644
+index f91eff3..9268bc5 100644
 --- a/daemon/gdm-session-direct.c
 +++ b/daemon/gdm-session-direct.c
-@@ -283,9 +283,27 @@ on_session_exited (GdmSession *session,
+@@ -281,9 +281,27 @@ on_session_exited (GdmSession *session,
  }
  
  static DBusHandlerResult
@@ -6783,7 +6711,7 @@ index 680c0f0..832b870 100644
  {
          DBusMessage *reply;
  
-@@ -1320,6 +1338,8 @@ session_worker_message (DBusConnection *connection,
+@@ -1237,6 +1255,8 @@ session_worker_message (DBusConnection *connection,
                  return gdm_session_direct_handle_problem (session, conversation, message);
          } else if (dbus_message_is_method_call (message, GDM_SESSION_DBUS_INTERFACE, "CancelPendingQuery")) {
                  return gdm_session_direct_handle_cancel_pending_query (session, conversation, message);
@@ -6793,7 +6721,7 @@ index 680c0f0..832b870 100644
                  return gdm_session_direct_handle_setup_complete (session, conversation, message);
          } else if (dbus_message_is_method_call (message, GDM_SESSION_DBUS_INTERFACE, "SetupFailed")) {
 diff --git a/daemon/gdm-session-private.h b/daemon/gdm-session-private.h
-index 36781dd..e0a810e 100644
+index e15b7dd..fb1f972 100644
 --- a/daemon/gdm-session-private.h
 +++ b/daemon/gdm-session-private.h
 @@ -31,6 +31,8 @@ void             _gdm_session_conversation_started         (GdmSession   *sessio
@@ -6806,10 +6734,10 @@ index 36781dd..e0a810e 100644
                                                              const char   *service_name);
  void             _gdm_session_setup_failed                 (GdmSession   *session,
 diff --git a/daemon/gdm-session-relay.c b/daemon/gdm-session-relay.c
-index 98ccc51..88aee14 100644
+index 50f1140..f76fa6f 100644
 --- a/daemon/gdm-session-relay.c
 +++ b/daemon/gdm-session-relay.c
-@@ -463,6 +463,34 @@ handle_problem (GdmSessionRelay *session_relay,
+@@ -455,6 +455,34 @@ handle_problem (GdmSessionRelay *session_relay,
  }
  
  static DBusHandlerResult
@@ -6844,7 +6772,7 @@ index 98ccc51..88aee14 100644
  handle_setup_complete (GdmSessionRelay *session_relay,
                         DBusConnection  *connection,
                         DBusMessage     *message)
-@@ -841,6 +869,8 @@ session_handle_child_message (DBusConnection *connection,
+@@ -833,6 +861,8 @@ session_handle_child_message (DBusConnection *connection,
                  return handle_info (session_relay, connection, message);
          } else if (dbus_message_is_method_call (message, GDM_SESSION_RELAY_DBUS_INTERFACE, "Problem")) {
                  return handle_problem (session_relay, connection, message);
@@ -6853,7 +6781,7 @@ index 98ccc51..88aee14 100644
          } else if (dbus_message_is_method_call (message, GDM_SESSION_RELAY_DBUS_INTERFACE, "SetupComplete")) {
                  return handle_setup_complete (session_relay, connection, message);
          } else if (dbus_message_is_method_call (message, GDM_SESSION_RELAY_DBUS_INTERFACE, "SetupFailed")) {
-@@ -898,6 +928,9 @@ do_introspect (DBusConnection *connection,
+@@ -890,6 +920,9 @@ do_introspect (DBusConnection *connection,
                                 "    <method name=\"ConversationStarted\">\n"
                                 "      <arg name=\"service_name\" direction=\"in\" type=\"s\"/>\n"
                                 "    </method>\n"
@@ -6864,10 +6792,10 @@ index 98ccc51..88aee14 100644
                                 "    </method>\n"
                                 "    <method name=\"SetupFailed\">\n"
 diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c
-index fc2ec21..64055e7 100644
+index 71f1a1c..c6f5c33 100644
 --- a/daemon/gdm-session-worker.c
 +++ b/daemon/gdm-session-worker.c
-@@ -2345,9 +2345,16 @@ do_setup (GdmSessionWorker *worker)
+@@ -2292,9 +2292,16 @@ do_setup (GdmSessionWorker *worker)
                                                   worker->priv->display_device,
                                                   &error);
          if (! res) {
@@ -6887,7 +6815,7 @@ index fc2ec21..64055e7 100644
                  g_error_free (error);
                  return;
          }
-@@ -2368,10 +2375,18 @@ do_authenticate (GdmSessionWorker *worker)
+@@ -2315,10 +2322,18 @@ do_authenticate (GdmSessionWorker *worker)
                                                      worker->priv->password_is_required,
                                                      &error);
          if (! res) {
@@ -6911,7 +6839,7 @@ index fc2ec21..64055e7 100644
                  return;
          }
 diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
-index 8858071..8c4548a 100644
+index 4c7f6bc..bf7c878 100644
 --- a/daemon/gdm-session.c
 +++ b/daemon/gdm-session.c
 @@ -31,6 +31,7 @@
@@ -6922,7 +6850,7 @@ index 8858071..8c4548a 100644
          SETUP_COMPLETE,
          SETUP_FAILED,
          RESET_COMPLETE,
-@@ -251,6 +252,17 @@ gdm_session_class_init (gpointer g_iface)
+@@ -241,6 +242,17 @@ gdm_session_class_init (gpointer g_iface)
                                g_cclosure_marshal_VOID__STRING,
                                G_TYPE_NONE,
                                1, G_TYPE_STRING);
@@ -6940,7 +6868,7 @@ index 8858071..8c4548a 100644
          signals [SETUP_COMPLETE] =
                  g_signal_new ("setup-complete",
                                iface_type,
-@@ -525,6 +537,15 @@ gdm_session_class_init (gpointer g_iface)
+@@ -504,6 +516,15 @@ gdm_session_class_init (gpointer g_iface)
  }
  
  void
@@ -6957,7 +6885,7 @@ index 8858071..8c4548a 100644
                               const char   *service_name)
  {
 diff --git a/daemon/gdm-session.h b/daemon/gdm-session.h
-index 22c2ccb..9636b92 100644
+index 9e72f89..ab16031 100644
 --- a/daemon/gdm-session.h
 +++ b/daemon/gdm-session.h
 @@ -49,6 +49,8 @@ struct _GdmSessionIface
@@ -6970,10 +6898,10 @@ index 22c2ccb..9636b92 100644
                                                const char   *service_name);
          void (* setup_for_user)              (GdmSession   *session,
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From d828346081eb0a4fc7451237d79e584b327134d0 Mon Sep 17 00:00:00 2001
+From 7e5d5c65f6b796d5c4a2d80f0b94ce71298717c3 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Wed, 28 Oct 2009 21:38:52 -0400
 Subject: [PATCH 13/35] Bubble service-unavailable up to greeter
@@ -6985,10 +6913,10 @@ Subject: [PATCH 13/35] Bubble service-unavailable up to greeter
  3 files changed, 29 insertions(+), 25 deletions(-)
 
 diff --git a/daemon/gdm-greeter-server.c b/daemon/gdm-greeter-server.c
-index 50e4193..4a011da 100644
+index d9ecb1f..6e300a0 100644
 --- a/daemon/gdm-greeter-server.c
 +++ b/daemon/gdm-greeter-server.c
-@@ -286,9 +286,18 @@ gdm_greeter_server_problem (GdmGreeterServer *greeter_server,
+@@ -285,9 +285,18 @@ gdm_greeter_server_problem (GdmGreeterServer *greeter_server,
  }
  
  gboolean
@@ -7010,10 +6938,10 @@ index 50e4193..4a011da 100644
  }
  
 diff --git a/daemon/gdm-greeter-server.h b/daemon/gdm-greeter-server.h
-index 5af32fd..ff1ff5d 100644
+index 9015c26..52ce9fc 100644
 --- a/daemon/gdm-greeter-server.h
 +++ b/daemon/gdm-greeter-server.h
-@@ -93,7 +93,10 @@ gboolean            gdm_greeter_server_info                  (GdmGreeterServer *
+@@ -91,7 +91,10 @@ gboolean            gdm_greeter_server_info                  (GdmGreeterServer *
  gboolean            gdm_greeter_server_problem               (GdmGreeterServer *greeter_server,
                                                                const char       *service_name,
                                                                const char       *text);
@@ -7026,7 +6954,7 @@ index 5af32fd..ff1ff5d 100644
  gboolean            gdm_greeter_server_ready                 (GdmGreeterServer *greeter_server,
                                                                const char       *service_name);
 diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
-index c45011c..7a1da63 100644
+index 83ceee8..d01b17f 100644
 --- a/daemon/gdm-simple-slave.c
 +++ b/daemon/gdm-simple-slave.c
 @@ -264,22 +264,6 @@ greeter_reset_timeout (GdmSimpleSlave *slave)
@@ -7082,7 +7010,7 @@ index c45011c..7a1da63 100644
  }
  
  static void
-@@ -801,6 +786,10 @@ create_new_session (GdmSimpleSlave *slave)
+@@ -789,6 +774,10 @@ create_new_session (GdmSimpleSlave *slave)
                            G_CALLBACK (on_session_conversation_stopped),
                            slave);
          g_signal_connect (slave->priv->session,
@@ -7093,7 +7021,7 @@ index c45011c..7a1da63 100644
                            "setup-complete",
                            G_CALLBACK (on_session_setup_complete),
                            slave);
-@@ -919,6 +908,9 @@ destroy_session (GdmSimpleSlave *slave)
+@@ -902,6 +891,9 @@ destroy_session (GdmSimpleSlave *slave)
                                                G_CALLBACK (on_session_conversation_stopped),
                                                slave);
          g_signal_handlers_disconnect_by_func (slave->priv->session,
@@ -7104,10 +7032,10 @@ index c45011c..7a1da63 100644
                                                slave);
          g_signal_handlers_disconnect_by_func (slave->priv->session,
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 330592f0c533f711aae7efa58245794551e691cd Mon Sep 17 00:00:00 2001
+From 8c47f191044e73ed423d73f9d87eda88b92f0944 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Wed, 28 Oct 2009 21:46:39 -0400
 Subject: [PATCH 14/35] Catch service-unavailable from server in client and propagate it
@@ -7118,7 +7046,7 @@ Subject: [PATCH 14/35] Catch service-unavailable from server in client and propa
  2 files changed, 22 insertions(+), 0 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-greeter-client.c b/gui/simple-greeter/gdm-greeter-client.c
-index e42ab1e..ad3ec7e 100644
+index 90bbb4d..7171741 100644
 --- a/gui/simple-greeter/gdm-greeter-client.c
 +++ b/gui/simple-greeter/gdm-greeter-client.c
 @@ -63,6 +63,7 @@ enum {
@@ -7129,7 +7057,7 @@ index e42ab1e..ad3ec7e 100644
          READY,
          RESET,
          AUTHENTICATION_FAILED,
-@@ -264,6 +265,13 @@ on_problem (GdmGreeterClient *client,
+@@ -256,6 +257,13 @@ on_problem (GdmGreeterClient *client,
  }
  
  static void
@@ -7143,7 +7071,7 @@ index e42ab1e..ad3ec7e 100644
  on_ready (GdmGreeterClient *client,
            DBusMessage      *message)
  {
-@@ -770,6 +778,8 @@ client_dbus_handle_message (DBusConnection *connection,
+@@ -754,6 +762,8 @@ client_dbus_handle_message (DBusConnection *connection,
                  on_info (client, message);
          } else if (dbus_message_is_signal (message, GREETER_SERVER_DBUS_INTERFACE, "Problem")) {
                  on_problem (client, message);
@@ -7152,7 +7080,7 @@ index e42ab1e..ad3ec7e 100644
          } else if (dbus_message_is_signal (message, GREETER_SERVER_DBUS_INTERFACE, "Ready")) {
                  on_ready (client, message);
          } else if (dbus_message_is_signal (message, GREETER_SERVER_DBUS_INTERFACE, "Reset")) {
-@@ -1003,6 +1013,16 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
+@@ -985,6 +995,16 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
                                2,
                                G_TYPE_STRING, G_TYPE_STRING);
  
@@ -7170,7 +7098,7 @@ index e42ab1e..ad3ec7e 100644
                  g_signal_new ("ready",
                                G_OBJECT_CLASS_TYPE (object_class),
 diff --git a/gui/simple-greeter/gdm-greeter-client.h b/gui/simple-greeter/gdm-greeter-client.h
-index 2f27503..917ca9c 100644
+index 868b496..63bd4b5 100644
 --- a/gui/simple-greeter/gdm-greeter-client.h
 +++ b/gui/simple-greeter/gdm-greeter-client.h
 @@ -59,6 +59,8 @@ typedef struct
@@ -7183,23 +7111,23 @@ index 2f27503..917ca9c 100644
                                            const char        *service_name);
          void (* reset)                   (GdmGreeterClient  *client);
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 7768021af7f0a00bb5caacf834f440a08e462e4e Mon Sep 17 00:00:00 2001
+From 30e4b74873d823a478f6ccf8eb60f88eb8ef1573 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Thu, 5 Feb 2009 15:20:25 -0500
 Subject: [PATCH 15/35] Queue a greeter reset when the user clicks cancel
 
 ---
- daemon/gdm-simple-slave.c |   34 ++++++++++++++++++++++++++++++++++
- 1 files changed, 34 insertions(+), 0 deletions(-)
+ daemon/gdm-simple-slave.c |   31 +++++++++++++++++++++++++++++++
+ 1 files changed, 31 insertions(+), 0 deletions(-)
 
 diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
-index 7a1da63..c49e6c7 100644
+index d01b17f..b77f0c7 100644
 --- a/daemon/gdm-simple-slave.c
 +++ b/daemon/gdm-simple-slave.c
-@@ -1032,6 +1032,9 @@ on_greeter_start_conversation (GdmGreeterServer *greeter_server,
+@@ -1011,6 +1011,9 @@ on_greeter_start_conversation (GdmGreeterServer *greeter_server,
                                 GdmSimpleSlave   *slave)
  {
          g_debug ("GdmSimpleSlave: starting conversation with '%s' pam service'", service_name);
@@ -7209,7 +7137,7 @@ index 7a1da63..c49e6c7 100644
          gdm_session_start_conversation (GDM_SESSION (slave->priv->session),
                                          service_name);
  }
-@@ -1042,6 +1045,9 @@ on_greeter_begin_verification (GdmGreeterServer *greeter_server,
+@@ -1021,6 +1024,9 @@ on_greeter_begin_verification (GdmGreeterServer *greeter_server,
                                 GdmSimpleSlave   *slave)
  {
          g_debug ("GdmSimpleSlave: begin verification");
@@ -7219,7 +7147,7 @@ index 7a1da63..c49e6c7 100644
          gdm_session_setup (GDM_SESSION (slave->priv->session),
                             service_name);
  }
-@@ -1052,6 +1058,9 @@ on_greeter_begin_auto_login (GdmGreeterServer *greeter_server,
+@@ -1031,6 +1037,9 @@ on_greeter_begin_auto_login (GdmGreeterServer *greeter_server,
                               GdmSimpleSlave   *slave)
  {
          g_debug ("GdmSimpleSlave: begin auto login for user '%s'", username);
@@ -7229,7 +7157,7 @@ index 7a1da63..c49e6c7 100644
          gdm_session_setup_for_user (GDM_SESSION (slave->priv->session),
                                      "gdm-autologin",
                                      username);
-@@ -1064,6 +1073,9 @@ on_greeter_begin_verification_for_user (GdmGreeterServer *greeter_server,
+@@ -1043,6 +1052,9 @@ on_greeter_begin_verification_for_user (GdmGreeterServer *greeter_server,
                                          GdmSimpleSlave   *slave)
  {
          g_debug ("GdmSimpleSlave: begin verification");
@@ -7239,7 +7167,7 @@ index 7a1da63..c49e6c7 100644
          gdm_session_setup_for_user (GDM_SESSION (slave->priv->session),
                                      service_name,
                                      username);
-@@ -1075,6 +1087,9 @@ on_greeter_answer (GdmGreeterServer *greeter_server,
+@@ -1054,6 +1066,9 @@ on_greeter_answer (GdmGreeterServer *greeter_server,
                     const char       *text,
                     GdmSimpleSlave   *slave)
  {
@@ -7249,7 +7177,7 @@ index 7a1da63..c49e6c7 100644
          gdm_session_answer_query (GDM_SESSION (slave->priv->session), service_name, text);
  }
  
-@@ -1083,6 +1098,9 @@ on_greeter_session_selected (GdmGreeterServer *greeter_server,
+@@ -1062,6 +1077,9 @@ on_greeter_session_selected (GdmGreeterServer *greeter_server,
                               const char       *text,
                               GdmSimpleSlave   *slave)
  {
@@ -7259,7 +7187,7 @@ index 7a1da63..c49e6c7 100644
          gdm_session_select_session (GDM_SESSION (slave->priv->session), text);
  }
  
-@@ -1091,6 +1109,9 @@ on_greeter_language_selected (GdmGreeterServer *greeter_server,
+@@ -1070,6 +1088,9 @@ on_greeter_language_selected (GdmGreeterServer *greeter_server,
                                const char       *text,
                                GdmSimpleSlave   *slave)
  {
@@ -7269,17 +7197,7 @@ index 7a1da63..c49e6c7 100644
          gdm_session_select_language (GDM_SESSION (slave->priv->session), text);
  }
  
-@@ -1099,6 +1120,9 @@ on_greeter_layout_selected (GdmGreeterServer *greeter_server,
-                             const char       *text,
-                             GdmSimpleSlave   *slave)
- {
-+        if (slave->priv->greeter_reset_id > 0) {
-+                return;
-+        }
-         gdm_session_select_layout (GDM_SESSION (slave->priv->session), text);
- }
- 
-@@ -1115,6 +1139,7 @@ on_greeter_cancel (GdmGreeterServer *greeter_server,
+@@ -1086,6 +1107,7 @@ on_greeter_cancel (GdmGreeterServer *greeter_server,
                     GdmSimpleSlave   *slave)
  {
          g_debug ("GdmSimpleSlave: Greeter cancelled");
@@ -7287,7 +7205,7 @@ index 7a1da63..c49e6c7 100644
          queue_greeter_reset (slave);
  }
  
-@@ -1125,6 +1150,9 @@ on_greeter_connected (GdmGreeterServer *greeter_server,
+@@ -1096,6 +1118,9 @@ on_greeter_connected (GdmGreeterServer *greeter_server,
          gboolean display_is_local;
  
          g_debug ("GdmSimpleSlave: Greeter connected");
@@ -7297,7 +7215,7 @@ index 7a1da63..c49e6c7 100644
  
          g_object_get (slave,
                        "display-is-local", &display_is_local,
-@@ -1142,6 +1170,9 @@ on_start_session_when_ready (GdmGreeterServer *session,
+@@ -1113,6 +1138,9 @@ on_start_session_when_ready (GdmGreeterServer *session,
                               GdmSimpleSlave   *slave)
  {
          g_debug ("GdmSimpleSlave: Will start session when ready");
@@ -7307,7 +7225,7 @@ index 7a1da63..c49e6c7 100644
          slave->priv->start_session_when_ready = TRUE;
  
          if (slave->priv->waiting_to_start_session) {
-@@ -1155,6 +1186,9 @@ on_start_session_later (GdmGreeterServer *session,
+@@ -1126,6 +1154,9 @@ on_start_session_later (GdmGreeterServer *session,
                          GdmSimpleSlave   *slave)
  {
          g_debug ("GdmSimpleSlave: Will start session when ready and told");
@@ -7318,10 +7236,10 @@ index 7a1da63..c49e6c7 100644
  }
  
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 4874b7a931e0e050cc5f4678a2b3ed287462126c Mon Sep 17 00:00:00 2001
+From e9b0ca2b1b44859074f501394277e0557e7172b1 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Fri, 6 Nov 2009 13:35:26 -0500
 Subject: [PATCH 16/35] Don't delay login for passwd -d users
@@ -7334,10 +7252,10 @@ was happening.
  1 files changed, 1 insertions(+), 1 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
-index b7ee893..1d66c73 100644
+index 9249906..47dcaa9 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.c
 +++ b/gui/simple-greeter/gdm-greeter-login-window.c
-@@ -846,7 +846,7 @@ gdm_greeter_login_window_start_session_when_ready (GdmGreeterLoginWindow *login_
+@@ -845,7 +845,7 @@ gdm_greeter_login_window_start_session_when_ready (GdmGreeterLoginWindow *login_
                   * so they can pick language/session.  Will need to refactor things
                   * a bit so we can share code with timed login.
                   */
@@ -7347,10 +7265,10 @@ index b7ee893..1d66c73 100644
                          g_debug ("GdmGreeterLoginWindow: Okay, we'll start the session anyway,"
                                   "because the user isn't ever going to get an opportunity to"
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 55d49cc15eb49fbe69d83287238cabcaa8b566ab Mon Sep 17 00:00:00 2001
+From 6ca9088d13716a083ecfb7bfecac93e9225dc95b Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Fri, 30 Jan 2009 23:57:31 -0500
 Subject: [PATCH 17/35] Add a plugin based extension system to greeter
@@ -7362,15 +7280,15 @@ run.
 ---
  common/gdm-marshal.list                            |    1 +
  configure.ac                                       |   44 +
- gui/simple-greeter/Makefile.am                     |   19 +
+ gui/simple-greeter/Makefile.am                     |   21 +
  gui/simple-greeter/gdm-greeter-client.c            |   21 +
  gui/simple-greeter/gdm-greeter-client.h            |    2 +
- gui/simple-greeter/gdm-greeter-login-window.c      | 1061 +++++++++++++++++---
+ gui/simple-greeter/gdm-greeter-login-window.c      | 1058 +++++++++++++++++---
  gui/simple-greeter/gdm-greeter-login-window.h      |   36 +-
  gui/simple-greeter/gdm-greeter-login-window.ui     |   67 +-
  gui/simple-greeter/gdm-greeter-plugin.c            |  254 +++++
  gui/simple-greeter/gdm-greeter-plugin.h            |   61 ++
- gui/simple-greeter/gdm-greeter-session.c           |  161 +++-
+ gui/simple-greeter/gdm-greeter-session.c           |  160 +++-
  gui/simple-greeter/gdm-plugin-manager.c            |  478 +++++++++
  gui/simple-greeter/gdm-plugin-manager.h            |   66 ++
  gui/simple-greeter/gdm-task-list.c                 |  385 +++++++
@@ -7385,14 +7303,14 @@ run.
  gui/simple-greeter/libgdmsimplegreeter/gdm-task.h  |   66 ++
  .../libgdmsimplegreeter/gdmsimplegreeter.pc.in     |   11 +
  gui/simple-greeter/plugins/Makefile.am             |    1 +
- gui/simple-greeter/plugins/password/Makefile.am    |   53 +
+ gui/simple-greeter/plugins/password/Makefile.am    |   52 +
  .../plugins/password/gdm-password-extension.c      |  328 ++++++
  .../plugins/password/gdm-password-extension.h      |   56 +
  .../plugins/password/gdm-password.pam              |   19 +
  gui/simple-greeter/plugins/password/page.ui        |   57 ++
  gui/simple-greeter/plugins/password/plugin.c       |   40 +
  po/POTFILES.in                                     |    1 +
- 32 files changed, 3745 insertions(+), 255 deletions(-)
+ 32 files changed, 3745 insertions(+), 252 deletions(-)
  create mode 100644 gui/simple-greeter/gdm-greeter-plugin.c
  create mode 100644 gui/simple-greeter/gdm-greeter-plugin.h
  create mode 100644 gui/simple-greeter/gdm-plugin-manager.c
@@ -7425,7 +7343,7 @@ index d5455e1..d8a9e72 100644
  VOID:DOUBLE
 +BOOLEAN:STRING
 diff --git a/configure.ac b/configure.ac
-index 3a12767..8c8b74d 100644
+index fe612e7..8a423bb 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -18,6 +18,22 @@ AC_PROG_CXX
@@ -7451,7 +7369,7 @@ index 3a12767..8c8b74d 100644
  AC_HEADER_STDC
  
  AC_SUBST(VERSION)
-@@ -197,6 +213,15 @@ AC_ARG_WITH(dmconfdir,
+@@ -192,6 +208,15 @@ AC_ARG_WITH(dmconfdir,
  AC_SUBST(dmconfdir)
  
  dnl ---------------------------------------------------------------------------
@@ -7467,7 +7385,7 @@ index 3a12767..8c8b74d 100644
  dnl - Configure arguments
  dnl ---------------------------------------------------------------------------
  
-@@ -1273,6 +1298,21 @@ fi
+@@ -1268,6 +1293,21 @@ fi
  
  AC_SUBST(GDM_SCREENSHOT_DIR)
  
@@ -7489,38 +7407,36 @@ index 3a12767..8c8b74d 100644
  
  dnl ---------------------------------------------------------------------------
  dnl - Finish
-@@ -1401,6 +1441,10 @@ docs/Makefile
+@@ -1395,6 +1435,10 @@ daemon/Makefile
+ docs/Makefile
  gui/Makefile
  gui/simple-greeter/Makefile
- gui/simple-greeter/libnotificationarea/Makefile
 +gui/simple-greeter/libgdmsimplegreeter/Makefile
 +gui/simple-greeter/libgdmsimplegreeter/gdmsimplegreeter.pc
 +gui/simple-greeter/plugins/Makefile
 +gui/simple-greeter/plugins/password/Makefile
  gui/simple-chooser/Makefile
- gui/user-switch-applet/Makefile
  utils/Makefile
+ data/gdm.conf
 diff --git a/gui/simple-greeter/Makefile.am b/gui/simple-greeter/Makefile.am
-index 6f7f3ee..b987de4 100644
+index 74edd01..927bb64 100644
 --- a/gui/simple-greeter/Makefile.am
 +++ b/gui/simple-greeter/Makefile.am
-@@ -2,12 +2,15 @@ NULL =
- 
- SUBDIRS = 				\
- 	libnotificationarea		\
+@@ -1,8 +1,13 @@
+ NULL =
++SUBDIRS = 				\
 +	libgdmsimplegreeter		\
 +	plugins				\
- 	$(NULL)
++	$(NULL)
  
  AM_CPPFLAGS = \
  	-I$(top_srcdir)/common				\
  	-I$(top_builddir)/common			\
- 	-I$(top_srcdir)/gui/simple-greeter/libnotificationarea	\
 +	-I$(top_srcdir)/gui/simple-greeter/libgdmsimplegreeter	\
  	-DDMCONFDIR=\""$(dmconfdir)"\"			\
  	-DGDMCONFDIR=\"$(gdmconfdir)\"                  \
  	-DDATADIR=\""$(datadir)"\"		 	\
-@@ -20,6 +23,7 @@ AM_CPPFLAGS = \
+@@ -15,6 +20,7 @@ AM_CPPFLAGS = \
  	-DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\"	\
  	-DAT_SPI_REGISTRYD_DIR="\"$(AT_SPI_REGISTRYD_DIR)\""	\
  	$(UPOWER_CFLAGS)				\
@@ -7528,7 +7444,7 @@ index 6f7f3ee..b987de4 100644
  	$(DISABLE_DEPRECATED_CFLAGS)			\
  	$(GTK_CFLAGS)					\
  	$(SIMPLE_GREETER_CFLAGS)			\
-@@ -85,10 +89,17 @@ test_greeter_login_window_SOURCES = 	\
+@@ -79,10 +85,17 @@ test_greeter_login_window_SOURCES = 	\
  	gdm-user-chooser-widget.c	\
  	gdm-user-chooser-dialog.h	\
  	gdm-user-chooser-dialog.c	\
@@ -7546,15 +7462,15 @@ index 6f7f3ee..b987de4 100644
  	libgdmuser.la			\
  	$(COMMON_LIBS)			\
  	$(SIMPLE_GREETER_LIBS)		\
-@@ -139,6 +150,7 @@ test_greeter_panel_SOURCES = 	\
+@@ -124,6 +137,7 @@ test_greeter_panel_SOURCES = 	\
+
  test_greeter_panel_LDADD =	\
  	$(top_builddir)/common/libgdmcommon.la	\
- 	$(top_builddir)/gui/simple-greeter/libnotificationarea/libnotificationarea.la	\
 +	$(top_builddir)/gui/simple-greeter/libgdmsimplegreeter/libgdmsimplegreeter.la	\
  	$(SIMPLE_GREETER_LIBS)		\
  	$(GTK_LIBS)			\
  	$(GCONF_LIBS)			\
-@@ -314,18 +326,25 @@ gdm_simple_greeter_SOURCES =  		\
+@@ -267,17 +281,24 @@ gdm_simple_greeter_SOURCES =  		\
  	gdm-language-chooser-dialog.c	\
  	gdm-language-option-widget.h	\
  	gdm-language-option-widget.c	\
@@ -7575,13 +7491,12 @@ index 6f7f3ee..b987de4 100644
  gdm_simple_greeter_LDADD = 		\
  	$(top_builddir)/common/libgdmcommon.la	\
  	libgdmuser.la			\
- 	$(top_builddir)/gui/simple-greeter/libnotificationarea/libnotificationarea.la	\
 +	$(top_builddir)/gui/simple-greeter/libgdmsimplegreeter/libgdmsimplegreeter.la	\
  	$(COMMON_LIBS)			\
  	$(EXTRA_GREETER_LIBS)   	\
  	$(SIMPLE_GREETER_LIBS)		\
 diff --git a/gui/simple-greeter/gdm-greeter-client.c b/gui/simple-greeter/gdm-greeter-client.c
-index ad3ec7e..ef6fb43 100644
+index 7171741..198b566 100644
 --- a/gui/simple-greeter/gdm-greeter-client.c
 +++ b/gui/simple-greeter/gdm-greeter-client.c
 @@ -65,6 +65,7 @@ enum {
@@ -7592,7 +7507,7 @@ index ad3ec7e..ef6fb43 100644
          RESET,
          AUTHENTICATION_FAILED,
          SELECTED_USER_CHANGED,
-@@ -279,6 +280,13 @@ on_ready (GdmGreeterClient *client,
+@@ -271,6 +272,13 @@ on_ready (GdmGreeterClient *client,
  }
  
  static void
@@ -7606,7 +7521,7 @@ index ad3ec7e..ef6fb43 100644
  on_reset (GdmGreeterClient *client,
            DBusMessage      *message)
  {
-@@ -782,6 +790,8 @@ client_dbus_handle_message (DBusConnection *connection,
+@@ -766,6 +774,8 @@ client_dbus_handle_message (DBusConnection *connection,
                  on_service_unavailable (client, message);
          } else if (dbus_message_is_signal (message, GREETER_SERVER_DBUS_INTERFACE, "Ready")) {
                  on_ready (client, message);
@@ -7615,7 +7530,7 @@ index ad3ec7e..ef6fb43 100644
          } else if (dbus_message_is_signal (message, GREETER_SERVER_DBUS_INTERFACE, "Reset")) {
                  on_reset (client, message);
          } else if (dbus_message_is_signal (message, GREETER_SERVER_DBUS_INTERFACE, "AuthenticationFailed")) {
-@@ -1034,6 +1044,17 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
+@@ -1016,6 +1026,17 @@ gdm_greeter_client_class_init (GdmGreeterClientClass *klass)
                                G_TYPE_NONE,
                                1, G_TYPE_STRING);
  
@@ -7634,7 +7549,7 @@ index ad3ec7e..ef6fb43 100644
                  g_signal_new ("reset",
                                G_OBJECT_CLASS_TYPE (object_class),
 diff --git a/gui/simple-greeter/gdm-greeter-client.h b/gui/simple-greeter/gdm-greeter-client.h
-index 917ca9c..3fd62d4 100644
+index 63bd4b5..8ff559c 100644
 --- a/gui/simple-greeter/gdm-greeter-client.h
 +++ b/gui/simple-greeter/gdm-greeter-client.h
 @@ -63,6 +63,8 @@ typedef struct
@@ -7647,7 +7562,7 @@ index 917ca9c..3fd62d4 100644
          void (* authentication_failed)   (GdmGreeterClient  *client);
          void (* selected_user_changed)   (GdmGreeterClient  *client,
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
-index 1d66c73..c01b9cb 100644
+index 47dcaa9..73a9918 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.c
 +++ b/gui/simple-greeter/gdm-greeter-login-window.c
 @@ -1,7 +1,7 @@
@@ -7833,8 +7748,8 @@ index 1d66c73..c01b9cb 100644
 +
 +                widget = GTK_WIDGET (node->data);
 +
-+                if (GTK_WIDGET_CAN_DEFAULT (widget) &&
-+                    GTK_WIDGET_VISIBLE (widget)) {
++                if (gtk_widget_get_can_default (widget) &&
++                    gtk_widget_get_visible (widget)) {
 +                        gtk_widget_grab_default (widget);
 +                        break;
 +                }
@@ -8090,9 +8005,9 @@ index 1d66c73..c01b9cb 100644
  {
 -        GtkWidget  *entry;
          GtkWidget  *label;
-         guint       mode;
  
-@@ -655,11 +808,10 @@ reset_dialog (GdmGreeterLoginWindow *login_window,
+         g_debug ("GdmGreeterLoginWindow: Resetting dialog to mode %u", dialog_mode);
+@@ -654,11 +807,10 @@ reset_dialog (GdmGreeterLoginWindow *login_window,
                  set_message (login_window, "");
          }
  
@@ -8108,7 +8023,7 @@ index 1d66c73..c01b9cb 100644
  
          label = GTK_WIDGET (gtk_builder_get_object (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->builder, "auth-prompt-label"));
          gtk_label_set_text (GTK_LABEL (label), "");
-@@ -667,12 +819,9 @@ reset_dialog (GdmGreeterLoginWindow *login_window,
+@@ -666,12 +818,9 @@ reset_dialog (GdmGreeterLoginWindow *login_window,
          if (can_jump_to_authenticate (login_window)) {
                  /* If we don't have a user list jump straight to authenticate */
                  g_debug ("GdmGreeterLoginWindow: jumping straight to authenticate");
@@ -8122,7 +8037,7 @@ index 1d66c73..c01b9cb 100644
          } else {
                  switch_mode (login_window, dialog_mode);
          }
-@@ -688,89 +837,178 @@ reset_dialog (GdmGreeterLoginWindow *login_window,
+@@ -687,88 +836,177 @@ reset_dialog (GdmGreeterLoginWindow *login_window,
  }
  
  static void
@@ -8314,7 +8229,6 @@ index 1d66c73..c01b9cb 100644
          g_debug ("GdmGreeterLoginWindow: problem: %s", text);
  
 -        set_message (GDM_GREETER_LOGIN_WINDOW (login_window), text);
--        gdk_window_beep (gtk_widget_get_window (GTK_WIDGET (login_window)));
 +        task = find_task_with_service_name (login_window, service_name);
 +
 +        if (task != NULL) {
@@ -8324,11 +8238,10 @@ index 1d66c73..c01b9cb 100644
 +                g_object_unref (task);
 +        }
 +
-+        gdk_window_beep (GTK_WIDGET (login_window)->window);
+         gdk_window_beep (gtk_widget_get_window (GTK_WIDGET (login_window)));
  
          return TRUE;
- }
-@@ -794,6 +1032,26 @@ request_timed_login (GdmGreeterLoginWindow *login_window)
+@@ -793,6 +1031,26 @@ request_timed_login (GdmGreeterLoginWindow *login_window)
          login_window->priv->timed_login_already_enabled = TRUE;
  }
  
@@ -8355,7 +8268,7 @@ index 1d66c73..c01b9cb 100644
  void
  gdm_greeter_login_window_request_timed_login (GdmGreeterLoginWindow *login_window,
                                                const char            *username,
-@@ -821,11 +1079,21 @@ gdm_greeter_login_window_request_timed_login (GdmGreeterLoginWindow *login_windo
+@@ -820,11 +1078,21 @@ gdm_greeter_login_window_request_timed_login (GdmGreeterLoginWindow *login_windo
  }
  
  static void
@@ -8379,7 +8292,7 @@ index 1d66c73..c01b9cb 100644
          } else {
                  g_debug ("GdmGreeterLoginWindow: not starting session since "
                           "user hasn't had an opportunity to pick language "
-@@ -835,8 +1103,8 @@ gdm_greeter_login_window_start_session_when_ready (GdmGreeterLoginWindow *login_
+@@ -834,8 +1102,8 @@ gdm_greeter_login_window_start_session_when_ready (GdmGreeterLoginWindow *login_
                   */
                  login_window->priv->start_session_handler_id =
                      g_signal_connect (login_window, "notify::is-interactive",
@@ -8390,7 +8303,7 @@ index 1d66c73..c01b9cb 100644
  
                  /* FIXME: If the user wasn't asked any questions by pam but
                   * pam still authorized them (passwd -d, or the questions got
-@@ -859,10 +1127,10 @@ gdm_greeter_login_window_start_session_when_ready (GdmGreeterLoginWindow *login_
+@@ -858,10 +1126,10 @@ gdm_greeter_login_window_start_session_when_ready (GdmGreeterLoginWindow *login_
  
  gboolean
  gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window,
@@ -8403,7 +8316,7 @@ index 1d66c73..c01b9cb 100644
  
          g_return_val_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window), FALSE);
  
-@@ -871,15 +1139,15 @@ gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window,
+@@ -870,15 +1138,15 @@ gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window,
  
          g_debug ("GdmGreeterLoginWindow: info query: %s", text);
  
@@ -8426,7 +8339,7 @@ index 1d66c73..c01b9cb 100644
          set_sensitive (GDM_GREETER_LOGIN_WINDOW (login_window), TRUE);
          set_ready (GDM_GREETER_LOGIN_WINDOW (login_window));
          set_focus (GDM_GREETER_LOGIN_WINDOW (login_window));
-@@ -891,25 +1159,26 @@ gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window,
+@@ -890,25 +1158,26 @@ gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window,
  
  gboolean
  gdm_greeter_login_window_secret_info_query (GdmGreeterLoginWindow *login_window,
@@ -8462,7 +8375,7 @@ index 1d66c73..c01b9cb 100644
          set_sensitive (GDM_GREETER_LOGIN_WINDOW (login_window), TRUE);
          set_ready (GDM_GREETER_LOGIN_WINDOW (login_window));
          set_focus (GDM_GREETER_LOGIN_WINDOW (login_window));
-@@ -920,13 +1189,16 @@ gdm_greeter_login_window_secret_info_query (GdmGreeterLoginWindow *login_window,
+@@ -919,13 +1188,16 @@ gdm_greeter_login_window_secret_info_query (GdmGreeterLoginWindow *login_window,
  }
  
  void
@@ -8482,7 +8395,7 @@ index 1d66c73..c01b9cb 100644
  }
  
  static void
-@@ -997,6 +1269,49 @@ on_user_chooser_visibility_changed (GdmGreeterLoginWindow *login_window)
+@@ -996,6 +1268,49 @@ on_user_chooser_visibility_changed (GdmGreeterLoginWindow *login_window)
          update_banner_message (login_window);
  }
  
@@ -8532,7 +8445,7 @@ index 1d66c73..c01b9cb 100644
  static void
  on_users_loaded (GdmUserChooserWidget  *user_chooser,
                   GdmGreeterLoginWindow *login_window)
-@@ -1010,38 +1325,153 @@ on_users_loaded (GdmUserChooserWidget  *user_chooser,
+@@ -1009,37 +1324,153 @@ on_users_loaded (GdmUserChooserWidget  *user_chooser,
                  gtk_widget_show (login_window->priv->user_chooser);
          }
  
@@ -8655,7 +8568,6 @@ index 1d66c73..c01b9cb 100644
 +                           GdmGreeterLoginWindow *login_window)
  {
          char *user_name;
--        guint mode;
 +        char *item_id;
  
          user_name = gdm_user_chooser_widget_get_chosen_user_name (GDM_USER_CHOOSER_WIDGET (login_window->priv->user_chooser));
@@ -8698,7 +8610,7 @@ index 1d66c73..c01b9cb 100644
  }
  
  static void
-@@ -1222,11 +1652,74 @@ create_computer_info (GdmGreeterLoginWindow *login_window)
+@@ -1220,11 +1651,74 @@ create_computer_info (GdmGreeterLoginWindow *login_window)
  #define INVISIBLE_CHAR_BULLET        0x2022
  #define INVISIBLE_CHAR_NONE          0
  
@@ -8774,7 +8686,7 @@ index 1d66c73..c01b9cb 100644
          int i;
  
          for (i = 0; i < G_N_ELEMENTS (types); i++) {
-@@ -1237,7 +1730,6 @@ register_custom_types (GdmGreeterLoginWindow *login_window)
+@@ -1235,7 +1729,6 @@ register_custom_types (GdmGreeterLoginWindow *login_window)
  static void
  load_theme (GdmGreeterLoginWindow *login_window)
  {
@@ -8782,7 +8694,7 @@ index 1d66c73..c01b9cb 100644
          GtkWidget *button;
          GtkWidget *box;
          GtkWidget *image;
-@@ -1290,7 +1782,7 @@ load_theme (GdmGreeterLoginWindow *login_window)
+@@ -1288,7 +1781,7 @@ load_theme (GdmGreeterLoginWindow *login_window)
                            login_window);
          g_signal_connect (login_window->priv->user_chooser,
                            "activated",
@@ -8791,7 +8703,7 @@ index 1d66c73..c01b9cb 100644
                            login_window);
          g_signal_connect (login_window->priv->user_chooser,
                            "deactivated",
-@@ -1302,30 +1794,30 @@ load_theme (GdmGreeterLoginWindow *login_window)
+@@ -1300,30 +1793,30 @@ load_theme (GdmGreeterLoginWindow *login_window)
                                   G_CALLBACK (on_user_chooser_visibility_changed),
                                   login_window);
  
@@ -8835,9 +8747,9 @@ index 1d66c73..c01b9cb 100644
  
          gdm_profile_end (NULL);
  }
-@@ -1481,6 +1973,15 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass)
-         widget_class->key_press_event = gdm_greeter_login_window_key_press_event;
-         widget_class->size_request = gdm_greeter_login_window_size_request;
+@@ -1520,6 +2013,15 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass)
+
+         gtk_container_class_handle_border_width (container_class);
  
 +        signals [START_CONVERSATION] =
 +                g_signal_new ("start-conversation",
@@ -8851,7 +8763,7 @@ index 1d66c73..c01b9cb 100644
          signals [BEGIN_AUTO_LOGIN] =
                  g_signal_new ("begin-auto-login",
                                G_TYPE_FROM_CLASS (object_class),
-@@ -1497,9 +1998,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass)
+@@ -1536,9 +2038,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterLoginWindowClass, begin_verification),
                                NULL,
                                NULL,
@@ -8863,7 +8775,7 @@ index 1d66c73..c01b9cb 100644
          signals [BEGIN_VERIFICATION_FOR_USER] =
                  g_signal_new ("begin-verification-for-user",
                                G_TYPE_FROM_CLASS (object_class),
-@@ -1507,9 +2008,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass)
+@@ -1546,9 +2048,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterLoginWindowClass, begin_verification_for_user),
                                NULL,
                                NULL,
@@ -8875,7 +8787,7 @@ index 1d66c73..c01b9cb 100644
          signals [QUERY_ANSWER] =
                  g_signal_new ("query-answer",
                                G_TYPE_FROM_CLASS (object_class),
-@@ -1517,9 +2018,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass)
+@@ -1556,9 +2058,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterLoginWindowClass, query_answer),
                                NULL,
                                NULL,
@@ -8887,7 +8799,7 @@ index 1d66c73..c01b9cb 100644
          signals [USER_SELECTED] =
                  g_signal_new ("user-selected",
                                G_TYPE_FROM_CLASS (object_class),
-@@ -1557,9 +2058,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass)
+@@ -1596,9 +2098,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass)
                                G_STRUCT_OFFSET (GdmGreeterLoginWindowClass, start_session),
                                NULL,
                                NULL,
@@ -8899,7 +8811,7 @@ index 1d66c73..c01b9cb 100644
  
          g_object_class_install_property (object_class,
                                           PROP_DISPLAY_IS_LOCAL,
-@@ -1612,6 +2113,246 @@ on_gconf_key_changed (GConfClient           *client,
+@@ -1651,6 +2153,246 @@ on_gconf_key_changed (GConfClient           *client,
          }
  }
  
@@ -8976,7 +8888,7 @@ index 1d66c73..c01b9cb 100644
 +        GtkAction *action;
 +        char *text;
 +
-+        action = gtk_widget_get_action (button);
++        action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (button));
 +
 +        g_object_get (G_OBJECT (action), "label", &text, NULL);
 +
@@ -8990,7 +8902,7 @@ index 1d66c73..c01b9cb 100644
 +        GtkAction *action;
 +        GtkWidget *image;
 +
-+        action = gtk_widget_get_action (button);
++        action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (button));
 +
 +        if (gtk_action_get_is_important (action)) {
 +                image = gtk_action_create_icon (GTK_ACTION (action), GTK_ICON_SIZE_BUTTON);
@@ -9008,7 +8920,7 @@ index 1d66c73..c01b9cb 100644
 +        GtkAction *action;
 +        char *text;
 +
-+        action = gtk_widget_get_action (button);
++        action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (button));
 +
 +        g_object_get (G_OBJECT (action), "tooltip", &text, NULL);
 +
@@ -9023,7 +8935,7 @@ index 1d66c73..c01b9cb 100644
 +
 +        button = gtk_button_new ();
 +
-+        gtk_action_connect_proxy (GTK_ACTION (action), button);
++        gtk_activatable_set_related_action (GTK_ACTIVATABLE (button), action);
 +
 +        g_signal_connect_swapped (action,
 +                                  "notify::label",
@@ -9044,7 +8956,7 @@ index 1d66c73..c01b9cb 100644
 +
 +        if (strcmp (gtk_action_get_name (action),
 +                    GDM_CONVERSATION_DEFAULT_ACTION) == 0) {
-+                GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
++                gtk_widget_set_can_default (button, TRUE);
 +        }
 +
 +        return button;
@@ -9237,7 +9149,7 @@ index 504b075..041cbc4 100644
  G_END_DECLS
  
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.ui b/gui/simple-greeter/gdm-greeter-login-window.ui
-index 83375ed..35195d8 100644
+index 946ec6b..2c181a3 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.ui
 +++ b/gui/simple-greeter/gdm-greeter-login-window.ui
 @@ -158,69 +158,40 @@
@@ -9657,7 +9569,7 @@ index 0000000..904c231
 +
 +#endif
 diff --git a/gui/simple-greeter/gdm-greeter-session.c b/gui/simple-greeter/gdm-greeter-session.c
-index b7e7f1c..051a5cc 100644
+index fa2d8e6..2598283 100644
 --- a/gui/simple-greeter/gdm-greeter-session.c
 +++ b/gui/simple-greeter/gdm-greeter-session.c
 @@ -39,6 +39,8 @@
@@ -9705,34 +9617,38 @@ index b7e7f1c..051a5cc 100644
  }
  
  static void
-@@ -96,7 +109,19 @@ on_ready (GdmGreeterClient  *client,
+@@ -96,40 +109,30 @@ on_ready (GdmGreeterClient  *client,
  {
          g_debug ("GdmGreeterSession: Ready");
  
 -        gdm_greeter_login_window_ready (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window));
 +        gdm_greeter_login_window_ready (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window),
 +                                        service_name);
-+}
-+
-+static void
+ }
+
+ static void
+-on_reset (GdmGreeterClient  *client,
+-          GdmGreeterSession *session)
 +on_conversation_stopped (GdmGreeterClient  *client,
 +                         const char        *service_name,
 +                         GdmGreeterSession *session)
-+{
+ {
+-        g_debug ("GdmGreeterSession: Reset");
 +        g_debug ("GdmGreeterSession: Conversation '%s' stopped", service_name);
-+
+
+-        session->priv->num_tries = 0;
+-
+-        gdm_greeter_login_window_reset (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window));
 +        gdm_greeter_login_window_conversation_stopped (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window),
 +                                                       service_name);
  }
  
  static void
-@@ -112,29 +137,6 @@ on_reset (GdmGreeterClient  *client,
- }
- 
- static void
 -on_authentication_failed (GdmGreeterClient  *client,
 -                          GdmGreeterSession *session)
--{
++on_reset (GdmGreeterClient  *client,
++          GdmGreeterSession *session)
+ {
 -        g_debug ("GdmGreeterSession: Authentication failed");
 -
 -        session->priv->num_tries++;
@@ -9740,23 +9656,22 @@ index b7e7f1c..051a5cc 100644
 -        if (session->priv->num_tries < MAX_LOGIN_TRIES) {
 -                g_debug ("GdmGreeterSession: Retrying login (%d)",
 -                         session->priv->num_tries);
--
++        g_debug ("GdmGreeterSession: Reset");
+
 -                gdm_greeter_login_window_authentication_failed (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window));
 -        } else {
 -                g_debug ("GdmGreeterSession: Maximum number of login tries exceeded (%d) - resetting",
 -                         session->priv->num_tries - 1);
 -                session->priv->num_tries = 0;
--
--                gdm_greeter_panel_reset (GDM_GREETER_PANEL (session->priv->panel));
++        session->priv->num_tries = 0;
+
 -                gdm_greeter_login_window_reset (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window));
 -        }
--}
--
--static void
- show_or_hide_user_options (GdmGreeterSession *session,
-                            const char        *username)
- {
-@@ -196,10 +198,11 @@ on_timed_login_requested (GdmGreeterClient  *client,
++        gdm_greeter_login_window_reset (GDM_GREETER_LOGIN_WINDOW (session->priv->login_window));
+ }
+
+ static void
+@@ -180,10 +183,11 @@ on_timed_login_requested (GdmGreeterClient  *client,
  
  static void
  on_user_authorized (GdmGreeterClient  *client,
@@ -9769,7 +9684,7 @@ index b7e7f1c..051a5cc 100644
  }
  
  static void
-@@ -210,7 +213,7 @@ on_info_query (GdmGreeterClient  *client,
+@@ -194,7 +198,7 @@ on_info_query (GdmGreeterClient  *client,
  {
          g_debug ("GdmGreeterSession: Info query: %s", text);
  
@@ -9778,7 +9693,7 @@ index b7e7f1c..051a5cc 100644
  }
  
  static void
-@@ -221,10 +224,18 @@ on_secret_info_query (GdmGreeterClient  *client,
+@@ -205,10 +209,18 @@ on_secret_info_query (GdmGreeterClient  *client,
  {
          g_debug ("GdmGreeterSession: Secret info query: %s", text);
  
@@ -9798,7 +9713,7 @@ index b7e7f1c..051a5cc 100644
  on_begin_auto_login (GdmGreeterLoginWindow *login_window,
                       const char            *username,
                       GdmGreeterSession     *session)
-@@ -235,29 +246,32 @@ on_begin_auto_login (GdmGreeterLoginWindow *login_window,
+@@ -219,29 +231,32 @@ on_begin_auto_login (GdmGreeterLoginWindow *login_window,
  
  static void
  on_begin_verification (GdmGreeterLoginWindow *login_window,
@@ -9834,15 +9749,15 @@ index b7e7f1c..051a5cc 100644
                                                text);
  }
  
-@@ -301,7 +315,6 @@ on_cancelled (GdmGreeterLoginWindow *login_window,
+@@ -276,7 +291,6 @@ on_cancelled (GdmGreeterLoginWindow *login_window,
+               GdmGreeterSession     *session)
  {
-         gdm_greeter_panel_hide_user_options (GDM_GREETER_PANEL (session->priv->panel));
          gdm_greeter_client_call_cancel (session->priv->client);
 -        gdm_greeter_client_call_start_conversation (session->priv->client, "gdm");
  }
  
  static void
-@@ -313,9 +326,10 @@ on_disconnected (GdmGreeterLoginWindow *login_window,
+@@ -288,9 +302,10 @@ on_disconnected (GdmGreeterLoginWindow *login_window,
  
  static void
  on_start_session (GdmGreeterLoginWindow *login_window,
@@ -9854,7 +9769,7 @@ index b7e7f1c..051a5cc 100644
  }
  
  static int
-@@ -410,7 +424,10 @@ toggle_login_window (GdmGreeterSession *session,
+@@ -380,7 +395,10 @@ toggle_login_window (GdmGreeterSession *session,
                  is_local = gdm_greeter_client_get_display_is_local (session->priv->client);
                  g_debug ("GdmGreeterSession: Starting a login window local:%d", is_local);
                  session->priv->login_window = gdm_greeter_login_window_new (is_local);
@@ -9866,7 +9781,7 @@ index b7e7f1c..051a5cc 100644
                  g_signal_connect (session->priv->login_window,
                                    "begin-auto-login",
                                    G_CALLBACK (on_begin_auto_login),
-@@ -466,8 +483,6 @@ gdm_greeter_session_start (GdmGreeterSession *session,
+@@ -436,8 +454,6 @@ gdm_greeter_session_start (GdmGreeterSession *session,
          toggle_panel (session, TRUE);
          toggle_login_window (session, TRUE);
  
@@ -9875,7 +9790,7 @@ index b7e7f1c..051a5cc 100644
          gdm_profile_end (NULL);
  
          return res;
-@@ -577,6 +592,64 @@ gdm_greeter_session_event_handler (GdkEvent          *event,
+@@ -547,6 +563,64 @@ gdm_greeter_session_event_handler (GdkEvent          *event,
  }
  
  static void
@@ -9940,7 +9855,7 @@ index b7e7f1c..051a5cc 100644
  gdm_greeter_session_init (GdmGreeterSession *session)
  {
          gdm_profile_start (NULL);
-@@ -601,16 +674,20 @@ gdm_greeter_session_init (GdmGreeterSession *session)
+@@ -571,16 +645,20 @@ gdm_greeter_session_init (GdmGreeterSession *session)
                            G_CALLBACK (on_problem),
                            session);
          g_signal_connect (session->priv->client,
@@ -9965,7 +9880,7 @@ index b7e7f1c..051a5cc 100644
                            session);
          g_signal_connect (session->priv->client,
                            "selected-user-changed",
-@@ -643,6 +720,8 @@ gdm_greeter_session_init (GdmGreeterSession *session)
+@@ -609,6 +687,8 @@ gdm_greeter_session_init (GdmGreeterSession *session)
          gdk_event_handler_set ((GdkEventFunc) gdm_greeter_session_event_handler,
                                 session, NULL);
  
@@ -10532,7 +10447,7 @@ index 0000000..f181140
 +#endif /* __GDM_PLUGIN_MANAGER_H */
 diff --git a/gui/simple-greeter/gdm-task-list.c b/gui/simple-greeter/gdm-task-list.c
 new file mode 100644
-index 0000000..a7f8c74
+index 0000000..5fdc2b8
 --- /dev/null
 +++ b/gui/simple-greeter/gdm-task-list.c
 @@ -0,0 +1,385 @@
@@ -10879,14 +10794,14 @@ index 0000000..a7f8c74
 +                return FALSE;
 +        }
 +
-+        was_sensitive = GTK_WIDGET_SENSITIVE (widget);
++        was_sensitive = gtk_widget_get_sensitive (GTK_WIDGET (widget));
 +        gtk_widget_set_sensitive (GTK_WIDGET (widget), TRUE);
 +
 +        button = GTK_WIDGET (g_object_get_data (G_OBJECT (task),
 +                             "gdm-task-list-button"));
 +
 +        was_activated = FALSE;
-+        if (GTK_WIDGET_IS_SENSITIVE (button)) {
++        if (gtk_widget_is_sensitive (button)) {
 +                if (gtk_widget_activate (button)) {
 +                        was_activated = TRUE;
 +                }
@@ -10923,7 +10838,7 @@ index 0000000..a7f8c74
 +}
 diff --git a/gui/simple-greeter/gdm-task-list.h b/gui/simple-greeter/gdm-task-list.h
 new file mode 100644
-index 0000000..1c15168
+index 0000000..cc377bd
 --- /dev/null
 +++ b/gui/simple-greeter/gdm-task-list.h
 @@ -0,0 +1,85 @@
@@ -10952,7 +10867,7 @@ index 0000000..1c15168
 +
 +#include <glib-object.h>
 +#include <gio/gio.h>
-+#include <gtk/gtkalignment.h>
++#include <gtk/gtk.h>
 +
 +#include "gdm-task.h"
 +
@@ -11013,7 +10928,7 @@ index 0000000..1c15168
 +
 +#endif /* __GDM_TASK_LIST_H */
 diff --git a/gui/simple-greeter/gdm-user-chooser-widget.c b/gui/simple-greeter/gdm-user-chooser-widget.c
-index 19a7922..daa55fc 100644
+index 9447e59..136194a 100644
 --- a/gui/simple-greeter/gdm-user-chooser-widget.c
 +++ b/gui/simple-greeter/gdm-user-chooser-widget.c
 @@ -371,9 +371,30 @@ gdm_user_chooser_widget_set_show_user_auto (GdmUserChooserWidget *widget,
@@ -11786,10 +11701,10 @@ index 0000000..c0390db
 +SUBDIRS = password
 diff --git a/gui/simple-greeter/plugins/password/Makefile.am b/gui/simple-greeter/plugins/password/Makefile.am
 new file mode 100644
-index 0000000..764904d
+index 0000000..5a81499
 --- /dev/null
 +++ b/gui/simple-greeter/plugins/password/Makefile.am
-@@ -0,0 +1,53 @@
+@@ -0,0 +1,52 @@
 +NULL =
 +PAM_SERVICE_NAME = gdm-password
 +
@@ -11798,7 +11713,6 @@ index 0000000..764904d
 +
 +AM_CPPFLAGS = \
 +	-I$(top_srcdir)/common				\
-+	-I$(top_srcdir)/gui/simple-greeter/libnotificationarea	\
 +	-I$(top_srcdir)/gui/simple-greeter/libgdmsimplegreeter	\
 +	-DDMCONFDIR=\""$(dmconfdir)"\"			\
 +	-DGDMCONFDIR=\"$(gdmconfdir)\"                  \
@@ -12374,22 +12288,22 @@ index 0000000..9b87c67
 +        return GDM_GREETER_EXTENSION (extension);
 +}
 diff --git a/po/POTFILES.in b/po/POTFILES.in
-index 1fccb90..7c344c9 100644
+index 8a4997a..2f9af97 100644
 --- a/po/POTFILES.in
 +++ b/po/POTFILES.in
-@@ -84,6 +84,7 @@ gui/simple-greeter/gdm-timer.c
+@@ -81,6 +81,7 @@ gui/simple-greeter/gdm-timer.c
  gui/simple-greeter/gdm-user.c
  gui/simple-greeter/gdm-user-chooser-widget.c
  gui/simple-greeter/greeter-main.c
 +gui/simple-greeter/plugins/password/gdm-password-extension.c
- gui/user-switch-applet/applet.c
- gui/user-switch-applet/gdm-entry-menu-item.c
- gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in
+ utils/gdmflexiserver.c
+ utils/gdm-screenshot.c
+
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 8550523cb6c1cfed48de6260b3da659e0842fa85 Mon Sep 17 00:00:00 2001
+From 217e0220c15422aab41cdfad5d989de074010730 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Wed, 4 Aug 2010 18:25:50 -0400
 Subject: [PATCH 18/35] squash with password
@@ -12451,10 +12365,10 @@ index 255283e..11a171c 100644
  
  static void
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From bb31f1696b0875d6d8e6e81acf11f51900d1dacd Mon Sep 17 00:00:00 2001
+From 99c3dbfc20ff02993608f69af6095a3043185a9d Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Fri, 6 Aug 2010 11:13:10 -0400
 Subject: [PATCH 19/35] task list fix
@@ -12464,7 +12378,7 @@ Subject: [PATCH 19/35] task list fix
  1 files changed, 8 insertions(+), 3 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-task-list.c b/gui/simple-greeter/gdm-task-list.c
-index a7f8c74..906938d 100644
+index 5fdc2b8..3e49fb7 100644
 --- a/gui/simple-greeter/gdm-task-list.c
 +++ b/gui/simple-greeter/gdm-task-list.c
 @@ -68,7 +68,6 @@ on_task_toggled (GdmTaskList    *widget,
@@ -12501,10 +12415,10 @@ index a7f8c74..906938d 100644
          button = g_object_get_data (G_OBJECT (task), "gdm-task-list-button");
  
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 4902b18b3eb6fb6cbf820909f33987473928fe29 Mon Sep 17 00:00:00 2001
+From dab8b62d3ec1a7c041e87106488a0b3d4661bcf8 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Tue, 29 Jun 2010 14:13:35 -0400
 Subject: [PATCH 20/35] Show cancel button after first message
@@ -12517,10 +12431,10 @@ that message isn't asking for input.
  1 files changed, 3 insertions(+), 0 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
-index c01b9cb..a0e8936 100644
+index 73a9918..3fcfcce 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.c
 +++ b/gui/simple-greeter/gdm-greeter-login-window.c
-@@ -826,6 +826,7 @@ reset_dialog (GdmGreeterLoginWindow *login_window,
+@@ -825,6 +825,7 @@ reset_dialog (GdmGreeterLoginWindow *login_window,
                  switch_mode (login_window, dialog_mode);
          }
  
@@ -12528,7 +12442,7 @@ index c01b9cb..a0e8936 100644
          set_sensitive (login_window, TRUE);
          set_ready (login_window);
          set_focus (GDM_GREETER_LOGIN_WINDOW (login_window));
-@@ -977,6 +978,7 @@ gdm_greeter_login_window_info (GdmGreeterLoginWindow *login_window,
+@@ -976,6 +977,7 @@ gdm_greeter_login_window_info (GdmGreeterLoginWindow *login_window,
          g_return_val_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window), FALSE);
          g_debug ("GdmGreeterLoginWindow: info: %s", text);
  
@@ -12536,7 +12450,7 @@ index c01b9cb..a0e8936 100644
          task = find_task_with_service_name (login_window, service_name);
  
          if (task != NULL) {
-@@ -999,6 +1001,7 @@ gdm_greeter_login_window_problem (GdmGreeterLoginWindow *login_window,
+@@ -998,6 +1000,7 @@ gdm_greeter_login_window_problem (GdmGreeterLoginWindow *login_window,
          g_return_val_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window), FALSE);
          g_debug ("GdmGreeterLoginWindow: problem: %s", text);
  
@@ -12545,10 +12459,10 @@ index c01b9cb..a0e8936 100644
  
          if (task != NULL) {
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 626e4b4bd340b961713b32258828ac8d602e01c7 Mon Sep 17 00:00:00 2001
+From 2b0d305e443e92d36850c95f680c355eb6b5e0cb Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Wed, 28 Oct 2009 11:13:10 -0400
 Subject: [PATCH 21/35] Prevent start session signal handler from getting called multiple times
@@ -12559,10 +12473,10 @@ It was causing a double free.
  1 files changed, 9 insertions(+), 0 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
-index a0e8936..151164e 100644
+index 3fcfcce..c3725e5 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.c
 +++ b/gui/simple-greeter/gdm-greeter-login-window.c
-@@ -1086,8 +1086,17 @@ on_ready_to_start_session (GdmGreeterLoginWindow *login_window,
+@@ -1085,8 +1085,17 @@ on_ready_to_start_session (GdmGreeterLoginWindow *login_window,
                             GParamSpec            *param_spec,
                             char                  *service_name)
  {
@@ -12581,10 +12495,10 @@ index a0e8936..151164e 100644
  
  static void
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From fecee605d0eeeafbefc768cb3e463c3eb5beed19 Mon Sep 17 00:00:00 2001
+From 2c6efe87539d7b2d2542829093a3cb5f6ed4b916 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Fri, 6 Feb 2009 16:25:47 -0500
 Subject: [PATCH 22/35] Add fingerprint plugin
@@ -12594,7 +12508,7 @@ fingerprint scans.
 ---
  configure.ac                                       |    4 +
  gui/simple-greeter/plugins/Makefile.am             |    2 +-
- gui/simple-greeter/plugins/fingerprint/Makefile.am |   56 ++++
+ gui/simple-greeter/plugins/fingerprint/Makefile.am |   55 +++
  .../fingerprint/gdm-fingerprint-extension.c        |  347 ++++++++++++++++++++
  .../fingerprint/gdm-fingerprint-extension.h        |   56 ++++
  .../plugins/fingerprint/gdm-fingerprint.pam        |   17 +
@@ -12606,7 +12520,7 @@ fingerprint scans.
  gui/simple-greeter/plugins/fingerprint/page.ui     |   57 ++++
  gui/simple-greeter/plugins/fingerprint/plugin.c    |   40 +++
  po/POTFILES.in                                     |    1 +
- 14 files changed, 590 insertions(+), 1 deletions(-)
+ 14 files changed, 589 insertions(+), 1 deletions(-)
  create mode 100644 gui/simple-greeter/plugins/fingerprint/Makefile.am
  create mode 100644 gui/simple-greeter/plugins/fingerprint/gdm-fingerprint-extension.c
  create mode 100644 gui/simple-greeter/plugins/fingerprint/gdm-fingerprint-extension.h
@@ -12620,10 +12534,10 @@ fingerprint scans.
  create mode 100644 gui/simple-greeter/plugins/fingerprint/plugin.c
 
 diff --git a/configure.ac b/configure.ac
-index 8c8b74d..911864e 100644
+index 8a423bb..be1ff01 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1445,6 +1445,10 @@ gui/simple-greeter/libgdmsimplegreeter/Makefile
+@@ -1439,6 +1439,10 @@ gui/simple-greeter/libgdmsimplegreeter/Makefile
  gui/simple-greeter/libgdmsimplegreeter/gdmsimplegreeter.pc
  gui/simple-greeter/plugins/Makefile
  gui/simple-greeter/plugins/password/Makefile
@@ -12632,8 +12546,8 @@ index 8c8b74d..911864e 100644
 +gui/simple-greeter/plugins/fingerprint/icons/16x16/Makefile
 +gui/simple-greeter/plugins/fingerprint/icons/48x48/Makefile
  gui/simple-chooser/Makefile
- gui/user-switch-applet/Makefile
  utils/Makefile
+ data/gdm.conf
 diff --git a/gui/simple-greeter/plugins/Makefile.am b/gui/simple-greeter/plugins/Makefile.am
 index c0390db..9811a68 100644
 --- a/gui/simple-greeter/plugins/Makefile.am
@@ -12643,10 +12557,10 @@ index c0390db..9811a68 100644
 +SUBDIRS = password fingerprint
 diff --git a/gui/simple-greeter/plugins/fingerprint/Makefile.am b/gui/simple-greeter/plugins/fingerprint/Makefile.am
 new file mode 100644
-index 0000000..25fb6e8
+index 0000000..ec8b326
 --- /dev/null
 +++ b/gui/simple-greeter/plugins/fingerprint/Makefile.am
-@@ -0,0 +1,56 @@
+@@ -0,0 +1,55 @@
 +SUBDIRS = icons
 +
 +NULL =
@@ -12657,7 +12571,6 @@ index 0000000..25fb6e8
 +
 +AM_CPPFLAGS = \
 +	-I$(top_srcdir)/common				\
-+	-I$(top_srcdir)/gui/simple-greeter/libnotificationarea	\
 +	-I$(top_srcdir)/gui/simple-greeter/libgdmsimplegreeter	\
 +	-DDMCONFDIR=\""$(dmconfdir)"\"			\
 +	-DGDMCONFDIR=\"$(gdmconfdir)\"                  \
@@ -13340,22 +13253,22 @@ index 0000000..5ea9925
 +        return GDM_GREETER_EXTENSION (extension);
 +}
 diff --git a/po/POTFILES.in b/po/POTFILES.in
-index 7c344c9..dd08b21 100644
+index 2f9af97..4f5b317 100644
 --- a/po/POTFILES.in
 +++ b/po/POTFILES.in
-@@ -85,6 +85,7 @@ gui/simple-greeter/gdm-user.c
+@@ -82,6 +82,7 @@ gui/simple-greeter/gdm-user.c
  gui/simple-greeter/gdm-user-chooser-widget.c
  gui/simple-greeter/greeter-main.c
  gui/simple-greeter/plugins/password/gdm-password-extension.c
 +gui/simple-greeter/plugins/fingerprint/gdm-fingerprint-extension.c
- gui/user-switch-applet/applet.c
- gui/user-switch-applet/gdm-entry-menu-item.c
- gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in
+ utils/gdmflexiserver.c
+ utils/gdm-screenshot.c
+
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 440055f84d48b8ccbffb054f02250a3e1be74e3f Mon Sep 17 00:00:00 2001
+From 425aedf9e39847eaaa73accd19de5f548c4b580f Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Fri, 6 Feb 2009 16:25:47 -0500
 Subject: [PATCH 23/35] Add smartcard plugin
@@ -13365,7 +13278,7 @@ smartcards are inserted.
 ---
  configure.ac                                       |   11 +
  gui/simple-greeter/plugins/Makefile.am             |    2 +-
- gui/simple-greeter/plugins/smartcard/Makefile.am   |   77 +
+ gui/simple-greeter/plugins/smartcard/Makefile.am   |   76 +
  .../plugins/smartcard/gdm-smartcard-extension.c    |  510 +++++++
  .../plugins/smartcard/gdm-smartcard-extension.h    |   56 +
  .../plugins/smartcard/gdm-smartcard-manager.c      | 1521 ++++++++++++++++++++
@@ -13382,7 +13295,7 @@ smartcards are inserted.
  gui/simple-greeter/plugins/smartcard/page.ui       |   57 +
  gui/simple-greeter/plugins/smartcard/plugin.c      |   40 +
  po/POTFILES.in                                     |    3 +
- 19 files changed, 3225 insertions(+), 1 deletions(-)
+ 19 files changed, 3224 insertions(+), 1 deletions(-)
  create mode 100644 gui/simple-greeter/plugins/smartcard/Makefile.am
  create mode 100644 gui/simple-greeter/plugins/smartcard/gdm-smartcard-extension.c
  create mode 100644 gui/simple-greeter/plugins/smartcard/gdm-smartcard-extension.h
@@ -13401,18 +13314,18 @@ smartcards are inserted.
  create mode 100644 gui/simple-greeter/plugins/smartcard/plugin.c
 
 diff --git a/configure.ac b/configure.ac
-index 911864e..95c623d 100644
+index be1ff01..1048e3c 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -67,6 +67,7 @@ LIBCANBERRA_GTK_REQUIRED_VERSION=0.4
- #FONTCONFIG_REQUIRED_VERSION=2.6.0
+@@ -68,6 +68,7 @@ LIBCANBERRA_GTK_REQUIRED_VERSION=0.4
  FONTCONFIG_REQUIRED_VERSION=2.5.0
  UPOWER_REQUIRED_VERSION=0.9.0
+ ACCOUNTS_SERVICE_REQUIRED_VERSION=0.6.3
 +NSS_REQUIRED_VERSION=3.11.1
  
  EXTRA_COMPILE_WARNINGS(yes)
  
-@@ -90,6 +91,12 @@ PKG_CHECK_MODULES(DAEMON,
+@@ -92,6 +93,12 @@ PKG_CHECK_MODULES(DAEMON,
  AC_SUBST(DAEMON_CFLAGS)
  AC_SUBST(DAEMON_LIBS)
  
@@ -13425,7 +13338,7 @@ index 911864e..95c623d 100644
  PKG_CHECK_MODULES(XLIB, x11 xau, ,
    [AC_PATH_XTRA
      if test "x$no_x" = xyes; then
-@@ -1449,6 +1456,10 @@ gui/simple-greeter/plugins/fingerprint/Makefile
+@@ -1443,6 +1450,10 @@ gui/simple-greeter/plugins/fingerprint/Makefile
  gui/simple-greeter/plugins/fingerprint/icons/Makefile
  gui/simple-greeter/plugins/fingerprint/icons/16x16/Makefile
  gui/simple-greeter/plugins/fingerprint/icons/48x48/Makefile
@@ -13434,8 +13347,8 @@ index 911864e..95c623d 100644
 +gui/simple-greeter/plugins/smartcard/icons/16x16/Makefile
 +gui/simple-greeter/plugins/smartcard/icons/48x48/Makefile
  gui/simple-chooser/Makefile
- gui/user-switch-applet/Makefile
  utils/Makefile
+ data/gdm.conf
 diff --git a/gui/simple-greeter/plugins/Makefile.am b/gui/simple-greeter/plugins/Makefile.am
 index 9811a68..3dd336f 100644
 --- a/gui/simple-greeter/plugins/Makefile.am
@@ -13445,10 +13358,10 @@ index 9811a68..3dd336f 100644
 +SUBDIRS = password fingerprint smartcard
 diff --git a/gui/simple-greeter/plugins/smartcard/Makefile.am b/gui/simple-greeter/plugins/smartcard/Makefile.am
 new file mode 100644
-index 0000000..1ccebda
+index 0000000..e43e424
 --- /dev/null
 +++ b/gui/simple-greeter/plugins/smartcard/Makefile.am
-@@ -0,0 +1,77 @@
+@@ -0,0 +1,76 @@
 +SUBDIRS = icons
 +
 +NULL =
@@ -13459,7 +13372,6 @@ index 0000000..1ccebda
 +
 +AM_CPPFLAGS = \
 +	-I$(top_srcdir)/common				\
-+	-I$(top_srcdir)/gui/simple-greeter/libnotificationarea	\
 +	-I$(top_srcdir)/gui/simple-greeter/libgdmsimplegreeter	\
 +	-DDMCONFDIR=\""$(dmconfdir)"\"			\
 +	-DGDMCONFDIR=\"$(gdmconfdir)\"                  \
@@ -16855,24 +16767,24 @@ index 0000000..fffbd50
 +        return GDM_GREETER_EXTENSION (extension);
 +}
 diff --git a/po/POTFILES.in b/po/POTFILES.in
-index dd08b21..ed922a5 100644
+index 4f5b317..48634f1 100644
 --- a/po/POTFILES.in
 +++ b/po/POTFILES.in
-@@ -86,6 +86,9 @@ gui/simple-greeter/gdm-user-chooser-widget.c
+@@ -83,6 +83,9 @@ gui/simple-greeter/gdm-user-chooser-widget.c
  gui/simple-greeter/greeter-main.c
  gui/simple-greeter/plugins/password/gdm-password-extension.c
  gui/simple-greeter/plugins/fingerprint/gdm-fingerprint-extension.c
 +gui/simple-greeter/plugins/smartcard/gdm-smartcard-extension.c
 +gui/simple-greeter/plugins/smartcard/gdm-smartcard-manager.c
 +gui/simple-greeter/plugins/smartcard/gdm-smartcard.c
- gui/user-switch-applet/applet.c
- gui/user-switch-applet/gdm-entry-menu-item.c
- gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in
+ utils/gdmflexiserver.c
+ utils/gdm-screenshot.c
+
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From b7f8fa13fab5be9c3832bdf2c0d0c6f06d78adb8 Mon Sep 17 00:00:00 2001
+From 2b331280871f3c0d56fa46eae3c20940bda1ed5d Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Wed, 4 Aug 2010 18:26:01 -0400
 Subject: [PATCH 24/35] squash with smartcard
@@ -16910,10 +16822,10 @@ index b925f5e..b40a21c 100644
  
  static void
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 96db16e70a1614a7857b99b1e3f3dda11b725490 Mon Sep 17 00:00:00 2001
+From 07882809ff1b9dc0df7d2cf95b5f290894527135 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Tue, 21 Apr 2009 10:25:18 -0400
 Subject: [PATCH 25/35] When one PAM conversation wins, stop the others
@@ -16926,10 +16838,10 @@ e.g. two factor authentication.
  2 files changed, 53 insertions(+), 20 deletions(-)
 
 diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c
-index 832b870..3c512c0 100644
+index 9268bc5..0f0c053 100644
 --- a/daemon/gdm-session-direct.c
 +++ b/daemon/gdm-session-direct.c
-@@ -2370,6 +2370,47 @@ gdm_session_direct_open_session (GdmSession *session,
+@@ -2268,6 +2268,47 @@ gdm_session_direct_open_session (GdmSession *session,
  }
  
  static void
@@ -16977,7 +16889,7 @@ index 832b870..3c512c0 100644
  gdm_session_direct_start_session (GdmSession *session,
                                    const char *service_name)
  {
-@@ -2381,6 +2422,16 @@ gdm_session_direct_start_session (GdmSession *session,
+@@ -2279,6 +2320,16 @@ gdm_session_direct_start_session (GdmSession *session,
          g_return_if_fail (session != NULL);
          g_return_if_fail (impl->priv->is_running == FALSE);
  
@@ -16994,7 +16906,7 @@ index 832b870..3c512c0 100644
          command = get_session_command (impl);
  
          if (gdm_session_direct_bypasses_xsession (impl)) {
-@@ -2391,8 +2442,6 @@ gdm_session_direct_start_session (GdmSession *session,
+@@ -2289,8 +2340,6 @@ gdm_session_direct_start_session (GdmSession *session,
  
          g_free (command);
  
@@ -17003,7 +16915,7 @@ index 832b870..3c512c0 100644
          setup_session_environment (impl);
          send_environment (impl, conversation);
  
-@@ -2403,23 +2452,7 @@ gdm_session_direct_start_session (GdmSession *session,
+@@ -2301,23 +2350,7 @@ gdm_session_direct_start_session (GdmSession *session,
  static void
  stop_all_conversations (GdmSessionDirect *session)
  {
@@ -17029,7 +16941,7 @@ index 832b870..3c512c0 100644
  
  static void
 diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
-index c49e6c7..16ae9c8 100644
+index b77f0c7..ce7a28a 100644
 --- a/daemon/gdm-simple-slave.c
 +++ b/daemon/gdm-simple-slave.c
 @@ -669,7 +669,7 @@ on_session_conversation_stopped (GdmSession     *session,
@@ -17042,10 +16954,10 @@ index c49e6c7..16ae9c8 100644
                                                                 service_name);
                  if (! res) {
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 920d71b3af3731e5177105cf31be2ee139ad9426 Mon Sep 17 00:00:00 2001
+From b5f27adffed1a3aed6515db9eaa8349076a33df0 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Fri, 24 Jul 2009 14:41:48 -0400
 Subject: [PATCH 26/35] KILL stuck processes if they don't die on TERM
@@ -17166,10 +17078,10 @@ index be85f30..8b93663 100644
          if (WIFEXITED (exit_status) && (WEXITSTATUS (exit_status) != 0)) {
                  g_debug ("GdmSessionWorkerJob: Wait on child process failed");
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 34dc9718c517688df3bb60d2ee8c50417bf0fc5d Mon Sep 17 00:00:00 2001
+From ceb37ad333855ebdf460447165ef098a7f9e8142 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Tue, 13 Jul 2010 22:36:19 -0400
 Subject: [PATCH 27/35] add better debug spew (needs squash)
@@ -17179,10 +17091,10 @@ Subject: [PATCH 27/35] add better debug spew (needs squash)
  1 files changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c
-index 3c512c0..53d26df 100644
+index 0f0c053..23812d2 100644
 --- a/daemon/gdm-session-direct.c
 +++ b/daemon/gdm-session-direct.c
-@@ -210,7 +210,7 @@ find_conversation_by_name (GdmSessionDirect *session,
+@@ -208,7 +208,7 @@ find_conversation_by_name (GdmSessionDirect *session,
          conversation = g_hash_table_lookup (session->priv->conversations, service_name);
  
          if (conversation == NULL) {
@@ -17191,7 +17103,7 @@ index 3c512c0..53d26df 100644
          }
  
          return conversation;
-@@ -1800,7 +1800,7 @@ static void
+@@ -1715,7 +1715,7 @@ static void
  free_conversation (GdmSessionConversation *conversation)
  {
          if (conversation->job != NULL) {
@@ -17200,7 +17112,7 @@ index 3c512c0..53d26df 100644
          }
  
          g_free (conversation->service_name);
-@@ -1973,7 +1973,7 @@ gdm_session_direct_start_conversation (GdmSession *session,
+@@ -1888,7 +1888,7 @@ gdm_session_direct_start_conversation (GdmSession *session,
  
          g_return_if_fail (session != NULL);
  
@@ -17209,7 +17121,7 @@ index 3c512c0..53d26df 100644
  
          conversation = start_conversation (impl, service_name);
  
-@@ -1990,7 +1990,7 @@ gdm_session_direct_stop_conversation (GdmSession *session,
+@@ -1905,7 +1905,7 @@ gdm_session_direct_stop_conversation (GdmSession *session,
  
          g_return_if_fail (session != NULL);
  
@@ -17219,10 +17131,10 @@ index 3c512c0..53d26df 100644
          conversation = find_conversation_by_name (impl, service_name);
  
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From c6e70b135f6dae4faeb522145b4e0eb94cafb551 Mon Sep 17 00:00:00 2001
+From f0e6178772a8baaac7a07a3197dd42933130a76c Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Tue, 13 Jul 2010 22:37:35 -0400
 Subject: [PATCH 28/35] switch to proper mode when going to timed login
@@ -17232,10 +17144,10 @@ Subject: [PATCH 28/35] switch to proper mode when going to timed login
  1 files changed, 1 insertions(+), 1 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
-index 151164e..b741977 100644
+index c3725e5..badafd4 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.c
 +++ b/gui/simple-greeter/gdm-greeter-login-window.c
-@@ -1384,7 +1384,7 @@ begin_auto_login (GdmGreeterLoginWindow *login_window)
+@@ -1383,7 +1383,7 @@ begin_auto_login (GdmGreeterLoginWindow *login_window)
          /* just wait for the user to select language and stuff */
          set_message (login_window, _("Select language and click Log In"));
  
@@ -17245,10 +17157,10 @@ index 151164e..b741977 100644
          show_widget (login_window, "conversation-list", FALSE);
          gdm_task_list_foreach_task (GDM_TASK_LIST (login_window->priv->conversation_list),
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From c49e4e49d5121bd254ba3fb6a3de0dedb7cfaaa8 Mon Sep 17 00:00:00 2001
+From 9b3dc6be1460e9bf11333afe83fdd5709934f09a Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Tue, 3 Aug 2010 15:21:26 -0400
 Subject: [PATCH 29/35] Drop "Cancelling" message for plugin initiated cancels
@@ -17261,10 +17173,10 @@ but for now just drop the message.
  1 files changed, 1 insertions(+), 1 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
-index b741977..c33b871 100644
+index badafd4..ddb35a9 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.c
 +++ b/gui/simple-greeter/gdm-greeter-login-window.c
-@@ -2148,7 +2148,7 @@ static void
+@@ -2188,7 +2188,7 @@ static void
  on_conversation_cancel (GdmGreeterLoginWindow *login_window,
                          GdmConversation       *conversation)
  {
@@ -17274,33 +17186,32 @@ index b741977..c33b871 100644
  
  static gboolean
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 7c67d095efda02e9ebee00ad93d99d8de54d334e Mon Sep 17 00:00:00 2001
+From 410b4c9c3398b835548b67ec89881ec44b7cd941 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Wed, 4 Aug 2010 18:11:27 -0400
 Subject: [PATCH 30/35] drop code for label that doesn't exist anymore
 
 ---
- gui/simple-greeter/gdm-greeter-login-window.c |    6 ------
- 1 files changed, 0 insertions(+), 6 deletions(-)
+ gui/simple-greeter/gdm-greeter-login-window.c |    5 -----
+ 1 files changed, 0 insertions(+), 5 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
-index c33b871..05e06bc 100644
+index ddb35a9..7d63761 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.c
 +++ b/gui/simple-greeter/gdm-greeter-login-window.c
-@@ -776,9 +776,6 @@ static void
+@@ -776,8 +776,6 @@ static void
  reset_dialog (GdmGreeterLoginWindow *login_window,
                guint                  dialog_mode)
  {
 -        GtkWidget  *label;
--        guint       mode;
 -
          g_debug ("GdmGreeterLoginWindow: Resetting dialog to mode %u", dialog_mode);
          set_busy (login_window);
          set_sensitive (login_window, FALSE);
-@@ -813,9 +810,6 @@ reset_dialog (GdmGreeterLoginWindow *login_window,
+@@ -812,9 +810,6 @@ reset_dialog (GdmGreeterLoginWindow *login_window,
                                      reset_task,
                                      login_window);
  
@@ -17311,10 +17222,10 @@ index c33b871..05e06bc 100644
                  /* If we don't have a user list jump straight to authenticate */
                  g_debug ("GdmGreeterLoginWindow: jumping straight to authenticate");
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From 2ad1e9e4ea17d5428c87028c1a2b52560b06f57f Mon Sep 17 00:00:00 2001
+From 26e4410292beca92834144f538f8b425b1a66888 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Wed, 4 Aug 2010 18:03:52 -0400
 Subject: [PATCH 31/35] Add delay when showing messages (needs split)
@@ -17335,7 +17246,7 @@ screen for a sufficient amount of time.
  6 files changed, 187 insertions(+), 10 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
-index 05e06bc..57e2251 100644
+index 7d63761..8db6a55 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.c
 +++ b/gui/simple-greeter/gdm-greeter-login-window.c
 @@ -137,6 +137,9 @@ struct GdmGreeterLoginWindowPrivate
@@ -17514,7 +17425,7 @@ index 05e06bc..57e2251 100644
          } else {
                  g_debug ("GdmGreeterLoginWindow: not starting session since "
                           "user hasn't had an opportunity to pick language "
-@@ -2174,6 +2240,35 @@ on_conversation_chose_user (GdmGreeterLoginWindow *login_window,
+@@ -2215,6 +2281,35 @@ on_conversation_chose_user (GdmGreeterLoginWindow *login_window,
          return TRUE;
  }
  
@@ -17550,7 +17461,7 @@ index 05e06bc..57e2251 100644
  void
  gdm_greeter_login_window_remove_extension (GdmGreeterLoginWindow *login_window,
   GdmGreeterExtension *extension)
-@@ -2336,6 +2431,10 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window,
+@@ -2377,6 +2472,10 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window,
                                    "user-chosen",
                                    G_CALLBACK (on_conversation_chose_user),
                                    login_window);
@@ -17776,10 +17687,10 @@ index b40a21c..5e234b9 100644
  
  static void
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From bdc3b20af9aaa433c90c7e094bba3099f8eb544d Mon Sep 17 00:00:00 2001
+From 2c745601fc2d70698c82222268b7cea3056ba294 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Wed, 4 Aug 2010 19:27:14 -0400
 Subject: [PATCH 32/35] Drop cancelling message
@@ -17790,7 +17701,7 @@ We cancel very quickly in most cases now, so the message isn't useful
  1 files changed, 1 insertions(+), 1 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
-index 57e2251..d9e14f0 100644
+index 8db6a55..513b024 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.c
 +++ b/gui/simple-greeter/gdm-greeter-login-window.c
 @@ -849,7 +849,7 @@ static void
@@ -17803,10 +17714,10 @@ index 57e2251..d9e14f0 100644
  }
  
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From b893801e9f3bed81fcc3c21ceb291251b9b88279 Mon Sep 17 00:00:00 2001
+From 04203d4383f8a6e263bd6893aa1540207b34a875 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Fri, 6 Aug 2010 11:14:23 -0400
 Subject: [PATCH 33/35] manage tasks outside of task list
@@ -17826,7 +17737,7 @@ when we don't need to.
  1 files changed, 206 insertions(+), 190 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
-index d9e14f0..406107e 100644
+index 513b024..9219202 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.c
 +++ b/gui/simple-greeter/gdm-greeter-login-window.c
 @@ -98,6 +98,7 @@ enum {
@@ -18310,7 +18221,7 @@ index d9e14f0..406107e 100644
 -                g_object_unref (task);
          }
  
-         gdk_window_beep (GTK_WIDGET (login_window)->window);
+         gdk_window_beep (gtk_widget_get_window (GTK_WIDGET (login_window)));
 @@ -1079,9 +1126,19 @@ gdm_greeter_login_window_service_unavailable (GdmGreeterLoginWindow *login_windo
          task = find_task_with_service_name (login_window, service_name);
  
@@ -18560,7 +18471,7 @@ index d9e14f0..406107e 100644
          switch_mode (login_window, MODE_SELECTION);
  
          gdm_profile_end (NULL);
-@@ -2227,15 +2252,12 @@ on_conversation_chose_user (GdmGreeterLoginWindow *login_window,
+@@ -2268,15 +2293,12 @@ on_conversation_chose_user (GdmGreeterLoginWindow *login_window,
  
          /* If we're already authenticating then we can't pick a user
           */
@@ -18579,7 +18490,7 @@ index d9e14f0..406107e 100644
  
          return TRUE;
  }
-@@ -2259,11 +2281,7 @@ on_conversation_message_set (GdmGreeterLoginWindow *login_window,
+@@ -2300,11 +2322,7 @@ on_conversation_message_set (GdmGreeterLoginWindow *login_window,
          }
  
          if (login_window->priv->service_name_of_session_ready_to_start != NULL ) {
@@ -18592,7 +18503,7 @@ index d9e14f0..406107e 100644
                          gdm_greeter_login_window_start_session (login_window);
                  }
          }
-@@ -2439,9 +2457,7 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window,
+@@ -2480,9 +2498,7 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window,
          g_debug ("GdmGreeterLoginWindow: new extension '%s - %s' added",
                  name, description);
  
@@ -18604,10 +18515,10 @@ index d9e14f0..406107e 100644
  
          if (gdm_task_is_choosable (GDM_TASK (extension))) {
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From bed394c6f270f77d4b7d76030bf7dcb0c6759ef4 Mon Sep 17 00:00:00 2001
+From 6ca468c1f146b079a834d4dcf1b4047e078a1f37 Mon Sep 17 00:00:00 2001
 From: Ray Strode <rstrode at redhat.com>
 Date: Mon, 9 Aug 2010 18:09:19 -0400
 Subject: [PATCH 34/35] hide task actions more aggressively
@@ -18618,7 +18529,7 @@ This fixes "dual login buttons" after the user hits cancel.
  1 files changed, 3 insertions(+), 0 deletions(-)
 
 diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c
-index 406107e..c8d56c5 100644
+index 9219202..0aa392d 100644
 --- a/gui/simple-greeter/gdm-greeter-login-window.c
 +++ b/gui/simple-greeter/gdm-greeter-login-window.c
 @@ -492,6 +492,8 @@ set_log_in_button_mode (GdmGreeterLoginWindow *login_window,
@@ -18639,10 +18550,10 @@ index 406107e..c8d56c5 100644
          return FALSE;
  }
 -- 
-1.7.3.3
+1.7.3.5
 
 
-From d9197164a4ed20c645753cc4275644eb1050cdae Mon Sep 17 00:00:00 2001
+From 4f0f372eaae52b5d0e6de09597c1efd7b420d35f Mon Sep 17 00:00:00 2001
 From: Gal Hammer <ghammer at redhat.com>
 Date: Thu, 21 Oct 2010 10:14:32 -0400
 Subject: [PATCH 35/35] smartcard: don't show extension if disabled in authconfig
@@ -18667,5 +18578,5 @@ index 5e234b9..ef79c28 100644
  
  static void
 -- 
-1.7.3.3
+1.7.3.5
 
diff --git a/gdm.spec b/gdm.spec
index 970a256..d747be5 100644
--- a/gdm.spec
+++ b/gdm.spec
@@ -1,6 +1,6 @@
 %define libauditver 1.0.6
 %define pango_version 1.2.0
-%define gtk2_version 2.6.0
+%define gtk3_version 2.99.2
 %define libglade2_version 2.0.0
 %define libgnomeui_version 2.2.0
 %define scrollkeeper_version 0.3.4
@@ -14,8 +14,8 @@
 
 Summary: The GNOME Display Manager
 Name: gdm
-Version: 2.91.4
-Release: 6%{?dist}
+Version: 2.91.6
+Release: 1%{?dist}
 Epoch: 1
 License: GPLv2+
 Group: User Interface/X
@@ -55,7 +55,7 @@ Requires: libXau >= 1.0.4-4
 BuildRequires: pkgconfig(libcanberra-gtk)
 BuildRequires: scrollkeeper >= 0:%{scrollkeeper_version}
 BuildRequires: pango-devel >= 0:%{pango_version}
-BuildRequires: gtk2-devel >= 0:%{gtk2_version}
+BuildRequires: gtk3-devel >= 0:%{gtk3_version}
 BuildRequires: libglade2-devel >= 0:%{libglade2_version}
 BuildRequires: libgnomeui-devel >= 0:%{libgnomeui_version}
 BuildRequires: pam-devel >= 0:%{pam_version}
@@ -89,8 +89,6 @@ Provides: service(graphical-login) = %{name}
 Requires: audit-libs >= %{libauditver}
 
 Patch2: plymouth.patch
-Patch3: icon-fix.patch
-Patch4: icon-ref-issue.patch
 
 Patch96: gdm-multistack.patch
 # Fedora-specific
@@ -98,13 +96,6 @@ Patch97: gdm-bubble-location.patch
 Patch98: tray-padding.patch
 Patch99: gdm-2.23.1-fedora-logo.patch
 
-%package user-switch-applet
-Summary:   GDM User Switcher Panel Applet
-Group:     User Interface/Desktops
-Requires:  gdm >= 0:2.21.9-0
-Obsoletes: fast-user-switch-applet
-Provides:  fast-user-switch-applet = %{epoch}:%{version}-%{release}
-
 %package plugin-smartcard
 Summary:   GDM smartcard plugin
 Group:     User Interface/Desktops
@@ -121,10 +112,6 @@ Requires:  fprintd-pam
 GDM provides the graphical login screen, shown shortly after boot up,
 log out, and when user-switching.
 
-%description user-switch-applet
-The GDM user switcher applet provides a mechanism for changing among
-multiple simulanteous logged in users.
-
 %description plugin-smartcard
 The GDM smartcard plugin provides functionality necessary to use a smart card with GDM.
 
@@ -134,8 +121,6 @@ The GDM fingerprint plugin provides functionality necessary to use a fingerprint
 %prep
 %setup -q
 %patch2 -p1 -b .plymouth
-%patch3 -p1 -b .icon-fix
-%patch4 -p1 -b .icon-ref-issue
 %patch96 -p1 -b .multistack
 %patch97 -p1 -b .bubble-location
 %patch98 -p1 -b .tray-padding
@@ -347,7 +332,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor >&/dev/ull || :
 %dir %{_datadir}/gdm
 %dir %{_datadir}/gdm/autostart
 %dir %{_datadir}/gdm/autostart/LoginWindow
-%config %{_datadir}/gdm/autostart/LoginWindow/*
+%{_datadir}/gdm/autostart/LoginWindow/*
 %dir %{_localstatedir}/log/gdm
 %dir %{_localstatedir}/spool/gdm
 %attr(1770, gdm, gdm) %dir %{_localstatedir}/lib/gdm
@@ -361,13 +346,6 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor >&/dev/ull || :
 %{_sysconfdir}/dconf/profile/gdm
 %{_sysconfdir}/dconf/db/gdm
 
-
-%files user-switch-applet
-%defattr(-, root, root)
-%{_libexecdir}/gdm-user-switch-applet
-%{_libdir}/bonobo/servers/GNOME_FastUserSwitchApplet.server
-%{_datadir}/gnome-2.0/ui/GNOME_FastUserSwitchApplet.xml
-
 %files plugin-smartcard
 %defattr(-, root, root)
 %config %{_sysconfdir}/pam.d/gdm-smartcard
@@ -384,6 +362,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor >&/dev/ull || :
 %{_libdir}/gdm/simple-greeter/plugins/fingerprint.so
 
 %changelog
+* Wed Feb 02 2011 Ray Strode <rstrode at redhat.com> 2.91.6-1
+- Update to 2.91.6
+
 * Sat Jan 29 2011 Ville Skyttä <ville.skytta at iki.fi> - 1:2.91.4-6
 - Dir ownership fixes.
 


More information about the scm-commits mailing list