From 1df2df1b70d8be16ad9ab8ea45565f9924b79e1a Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 27 Jan 2010 02:09:59 +0000 Subject: [PATCH] - Update to 2.29.5 --- fix-boot.patch | 74 +- gdm-multistack.patch | 2100 +++++++++++++----------------------------- gdm.spec | 20 +- xklavier-fix.patch | 62 ++ 4 files changed, 780 insertions(+), 1476 deletions(-) create mode 100644 xklavier-fix.patch diff --git a/fix-boot.patch b/fix-boot.patch index 9818c78..b94eec1 100644 --- a/fix-boot.patch +++ b/fix-boot.patch @@ -1,6 +1,7 @@ -diff -up gdm-2.29.4/daemon/gdm-simple-slave.c.fix-boot gdm-2.29.4/daemon/gdm-simple-slave.c ---- gdm-2.29.4/daemon/gdm-simple-slave.c.fix-boot 2010-01-14 16:10:58.507800165 -0500 -+++ gdm-2.29.4/daemon/gdm-simple-slave.c 2010-01-14 16:10:58.543800532 -0500 + +diff -up gdm-2.29.5/daemon/gdm-simple-slave.c.fix-boot gdm-2.29.5/daemon/gdm-simple-slave.c +--- gdm-2.29.5/daemon/gdm-simple-slave.c.fix-boot 2010-01-26 17:34:33.980834884 -0500 ++++ gdm-2.29.5/daemon/gdm-simple-slave.c 2010-01-26 17:34:34.027782630 -0500 @@ -91,6 +91,7 @@ struct GdmSimpleSlavePrivate enum { @@ -9,7 +10,7 @@ diff -up gdm-2.29.4/daemon/gdm-simple-slave.c.fix-boot gdm-2.29.4/daemon/gdm-sim }; static void gdm_simple_slave_class_init (GdmSimpleSlaveClass *klass); -@@ -1321,11 +1322,13 @@ gdm_simple_slave_run (GdmSimpleSlave *sl +@@ -1327,11 +1328,13 @@ gdm_simple_slave_run (GdmSimpleSlave *sl char *display_name; char *auth_file; gboolean display_is_local; @@ -23,7 +24,7 @@ diff -up gdm-2.29.4/daemon/gdm-simple-slave.c.fix-boot gdm-2.29.4/daemon/gdm-sim NULL); /* if this is local display start a server if one doesn't -@@ -1363,7 +1366,11 @@ gdm_simple_slave_run (GdmSimpleSlave *sl +@@ -1369,7 +1372,11 @@ gdm_simple_slave_run (GdmSimpleSlave *sl plymouth_prepare_for_transition (slave); res = gdm_server_start_on_active_vt (slave->priv->server); } else { @@ -36,7 +37,7 @@ diff -up gdm-2.29.4/daemon/gdm-simple-slave.c.fix-boot gdm-2.29.4/daemon/gdm-sim } if (! res) { g_warning (_("Could not start the X " -@@ -1515,12 +1522,14 @@ gdm_simple_slave_finalize (GObject *obje +@@ -1521,12 +1528,14 @@ gdm_simple_slave_finalize (GObject *obje } GdmSlave * @@ -52,9 +53,9 @@ diff -up gdm-2.29.4/daemon/gdm-simple-slave.c.fix-boot gdm-2.29.4/daemon/gdm-sim NULL); return GDM_SLAVE (object); -diff -up gdm-2.29.4/daemon/gdm-simple-slave.h.fix-boot gdm-2.29.4/daemon/gdm-simple-slave.h ---- gdm-2.29.4/daemon/gdm-simple-slave.h.fix-boot 2009-12-08 10:20:18.000000000 -0500 -+++ gdm-2.29.4/daemon/gdm-simple-slave.h 2010-01-14 16:10:58.543800532 -0500 +diff -up gdm-2.29.5/daemon/gdm-simple-slave.h.fix-boot gdm-2.29.5/daemon/gdm-simple-slave.h +--- gdm-2.29.5/daemon/gdm-simple-slave.h.fix-boot 2009-12-08 10:20:18.000000000 -0500 ++++ gdm-2.29.5/daemon/gdm-simple-slave.h 2010-01-26 17:34:34.027782630 -0500 @@ -48,7 +48,8 @@ typedef struct } GdmSimpleSlaveClass; @@ -65,9 +66,9 @@ diff -up gdm-2.29.4/daemon/gdm-simple-slave.h.fix-boot gdm-2.29.4/daemon/gdm-sim G_END_DECLS -diff -up gdm-2.29.4/daemon/gdm-slave.c.fix-boot gdm-2.29.4/daemon/gdm-slave.c ---- gdm-2.29.4/daemon/gdm-slave.c.fix-boot 2010-01-14 16:10:58.280770006 -0500 -+++ gdm-2.29.4/daemon/gdm-slave.c 2010-01-14 16:10:58.544770030 -0500 +diff -up gdm-2.29.5/daemon/gdm-slave.c.fix-boot gdm-2.29.5/daemon/gdm-slave.c +--- gdm-2.29.5/daemon/gdm-slave.c.fix-boot 2010-01-26 17:34:33.777750861 -0500 ++++ gdm-2.29.5/daemon/gdm-slave.c 2010-01-26 17:46:49.256752923 -0500 @@ -84,6 +84,7 @@ struct GdmSlavePrivate char *display_hostname; gboolean display_is_local; @@ -84,7 +85,7 @@ diff -up gdm-2.29.4/daemon/gdm-slave.c.fix-boot gdm-2.29.4/daemon/gdm-slave.c PROP_DISPLAY_SEAT_ID, PROP_DISPLAY_X11_AUTHORITY_FILE }; -@@ -1404,6 +1406,13 @@ _gdm_slave_set_display_is_local (GdmSlav +@@ -1402,6 +1404,13 @@ _gdm_slave_set_display_is_local (GdmSlav } static void @@ -98,7 +99,7 @@ diff -up gdm-2.29.4/daemon/gdm-slave.c.fix-boot gdm-2.29.4/daemon/gdm-slave.c gdm_slave_set_property (GObject *object, guint prop_id, const GValue *value, -@@ -1435,6 +1444,9 @@ gdm_slave_set_property (GObject *ob +@@ -1433,6 +1442,9 @@ gdm_slave_set_property (GObject *ob case PROP_DISPLAY_IS_LOCAL: _gdm_slave_set_display_is_local (self, g_value_get_boolean (value)); break; @@ -108,7 +109,7 @@ diff -up gdm-2.29.4/daemon/gdm-slave.c.fix-boot gdm-2.29.4/daemon/gdm-slave.c default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; -@@ -1473,6 +1485,9 @@ gdm_slave_get_property (GObject *obje +@@ -1471,6 +1483,9 @@ gdm_slave_get_property (GObject *obje case PROP_DISPLAY_IS_LOCAL: g_value_set_boolean (value, self->priv->display_is_local); break; @@ -118,9 +119,24 @@ diff -up gdm-2.29.4/daemon/gdm-slave.c.fix-boot gdm-2.29.4/daemon/gdm-slave.c default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; -diff -up gdm-2.29.4/daemon/gdm-static-display.c.fix-boot gdm-2.29.4/daemon/gdm-static-display.c ---- gdm-2.29.4/daemon/gdm-static-display.c.fix-boot 2009-12-17 09:20:42.000000000 -0500 -+++ gdm-2.29.4/daemon/gdm-static-display.c 2010-01-14 16:10:58.545800295 -0500 +@@ -1595,6 +1610,14 @@ gdm_slave_class_init (GdmSlaveClass *kla + "display is local", + TRUE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); ++ g_object_class_install_property (object_class, ++ PROP_FORCE_ACTIVE_VT, ++ g_param_spec_boolean ("force-active-vt", ++ "Force Active VT", ++ "Force display to active VT", ++ TRUE, ++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); ++ + + signals [STOPPED] = + g_signal_new ("stopped", +diff -up gdm-2.29.5/daemon/gdm-static-display.c.fix-boot gdm-2.29.5/daemon/gdm-static-display.c +--- gdm-2.29.5/daemon/gdm-static-display.c.fix-boot 2009-12-17 09:20:42.000000000 -0500 ++++ gdm-2.29.5/daemon/gdm-static-display.c 2010-01-26 17:34:34.029750726 -0500 @@ -86,10 +86,27 @@ gdm_static_display_remove_user_authoriza } @@ -149,9 +165,9 @@ diff -up gdm-2.29.4/daemon/gdm-static-display.c.fix-boot gdm-2.29.4/daemon/gdm-s GDM_DISPLAY_CLASS (gdm_static_display_parent_class)->manage (display); return TRUE; -diff -up gdm-2.29.4/daemon/Makefile.am.fix-boot gdm-2.29.4/daemon/Makefile.am ---- gdm-2.29.4/daemon/Makefile.am.fix-boot 2010-01-14 16:16:26.262770051 -0500 -+++ gdm-2.29.4/daemon/Makefile.am 2010-01-14 16:17:35.998771692 -0500 +diff -up gdm-2.29.5/daemon/Makefile.am.fix-boot gdm-2.29.5/daemon/Makefile.am +--- gdm-2.29.5/daemon/Makefile.am.fix-boot 2010-01-12 15:30:45.000000000 -0500 ++++ gdm-2.29.5/daemon/Makefile.am 2010-01-26 17:34:34.029750726 -0500 @@ -14,6 +14,7 @@ AM_CPPFLAGS = \ -DLOGDIR=\"$(logdir)\" \ -DSBINDIR=\"$(sbindir)\" \ @@ -160,9 +176,9 @@ diff -up gdm-2.29.4/daemon/Makefile.am.fix-boot gdm-2.29.4/daemon/Makefile.am -DGDM_XAUTH_DIR=\"$(GDM_XAUTH_DIR)\" \ -DGDM_SCREENSHOT_DIR=\"$(GDM_SCREENSHOT_DIR)\" \ -DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\" \ -diff -up gdm-2.29.4/daemon/simple-slave-main.c.fix-boot gdm-2.29.4/daemon/simple-slave-main.c ---- gdm-2.29.4/daemon/simple-slave-main.c.fix-boot 2009-12-21 11:36:30.000000000 -0500 -+++ gdm-2.29.4/daemon/simple-slave-main.c 2010-01-14 16:10:58.545800295 -0500 +diff -up gdm-2.29.5/daemon/simple-slave-main.c.fix-boot gdm-2.29.5/daemon/simple-slave-main.c +--- gdm-2.29.5/daemon/simple-slave-main.c.fix-boot 2010-01-12 11:36:37.000000000 -0500 ++++ gdm-2.29.5/daemon/simple-slave-main.c 2010-01-26 17:34:34.029750726 -0500 @@ -178,9 +178,11 @@ main (int argc, DBusGConnection *connection; GdmSlave *slave; @@ -184,9 +200,9 @@ diff -up gdm-2.29.4/daemon/simple-slave-main.c.fix-boot gdm-2.29.4/daemon/simple if (slave == NULL) { goto out; } -diff -up gdm-2.29.4/data/Makefile.am.fix-boot gdm-2.29.4/data/Makefile.am ---- gdm-2.29.4/data/Makefile.am.fix-boot 2009-12-21 11:36:30.000000000 -0500 -+++ gdm-2.29.4/data/Makefile.am 2010-01-14 16:10:58.546769600 -0500 +diff -up gdm-2.29.5/data/Makefile.am.fix-boot gdm-2.29.5/data/Makefile.am +--- gdm-2.29.5/data/Makefile.am.fix-boot 2010-01-13 09:44:40.000000000 -0500 ++++ gdm-2.29.5/data/Makefile.am 2010-01-26 17:34:34.030752200 -0500 @@ -13,6 +13,7 @@ predir = $(gdmconfdir)/PreSession postlogindir = $(gdmconfdir)/PostLogin workingdir = $(GDM_WORKING_DIR) @@ -195,7 +211,7 @@ diff -up gdm-2.29.4/data/Makefile.am.fix-boot gdm-2.29.4/data/Makefile.am screenshotdir = $(GDM_SCREENSHOT_DIR) cachedir = $(localstatedir)/cache/gdm -@@ -125,6 +126,7 @@ uninstall-hook: +@@ -129,6 +130,7 @@ uninstall-hook: $(DESTDIR)$(workingdir)/.gconf.mandatory \ $(DESTDIR)$(screenshotdir) \ $(DESTDIR)$(xauthdir) @@ -203,7 +219,7 @@ diff -up gdm-2.29.4/data/Makefile.am.fix-boot gdm-2.29.4/data/Makefile.am install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.path if test '!' -d $(DESTDIR)$(gdmconfdir); then \ -@@ -217,6 +219,11 @@ install-data-hook: gdm.conf-custom Xsess +@@ -221,6 +223,11 @@ install-data-hook: gdm.conf-custom Xsess chmod 1770 $(DESTDIR)$(workingdir); \ chown root:gdm $(DESTDIR)$(workingdir) || : ; \ fi diff --git a/gdm-multistack.patch b/gdm-multistack.patch index daf8266..efb88d3 100644 --- a/gdm-multistack.patch +++ b/gdm-multistack.patch @@ -1,7 +1,7 @@ -From fd73f04cae7990b317c9ee434e4c9dfd12a11732 Mon Sep 17 00:00:00 2001 +From 61fb36fe30a4781e4b4fce7d11fa8eec567463ac Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 16 Jan 2009 11:00:08 -0500 -Subject: [PATCH 01/51] Drop session "Open" in favor of "StartConversation" +Subject: [PATCH 01/50] Drop session "Open" in favor of "StartConversation" We want to eventually support having multiple simultaneous PAM conversations in one login @@ -154,10 +154,10 @@ index 9adcb09..15a2820 100644 on_relay_cancelled (slave, message); } else { diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c -index 2d711b1..5edbfeb 100644 +index bb85393..ba7a90e 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c -@@ -61,6 +61,16 @@ +@@ -66,6 +66,16 @@ #define GDM_SESSION_DEFAULT_PATH "/usr/local/bin:/usr/bin:/bin" #endif @@ -174,7 +174,7 @@ index 2d711b1..5edbfeb 100644 struct _GdmSessionDirectPrivate { /* per open scope */ -@@ -73,8 +83,7 @@ struct _GdmSessionDirectPrivate +@@ -78,8 +88,7 @@ struct _GdmSessionDirectPrivate char *selected_user; char *user_x11_authority_file; @@ -184,7 +184,7 @@ index 2d711b1..5edbfeb 100644 GdmSessionWorkerJob *job; GPid session_pid; -@@ -115,39 +124,39 @@ G_DEFINE_TYPE_WITH_CODE (GdmSessionDirect, +@@ -120,39 +129,39 @@ G_DEFINE_TYPE_WITH_CODE (GdmSessionDirect, gdm_session_iface_init)) static gboolean @@ -231,7 +231,7 @@ index 2d711b1..5edbfeb 100644 message = dbus_message_new_signal (GDM_SESSION_DBUS_PATH, GDM_SESSION_DBUS_INTERFACE, -@@ -156,7 +165,7 @@ send_dbus_string_signal (GdmSessionDirect *session, +@@ -161,7 +170,7 @@ send_dbus_string_signal (GdmSessionDirect *session, dbus_message_iter_init_append (message, &iter); dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &text); @@ -240,7 +240,7 @@ index 2d711b1..5edbfeb 100644 g_debug ("GdmSessionDirect: Could not send %s signal", name ? name : "(null)"); } -@@ -165,18 +174,18 @@ send_dbus_string_signal (GdmSessionDirect *session, +@@ -170,18 +179,18 @@ send_dbus_string_signal (GdmSessionDirect *session, } static void @@ -263,7 +263,7 @@ index 2d711b1..5edbfeb 100644 g_debug ("GdmSessionDirect: Could not send %s signal", name); } -@@ -188,22 +197,32 @@ on_authentication_failed (GdmSession *session, +@@ -193,22 +202,32 @@ on_authentication_failed (GdmSession *session, const char *message) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -306,7 +306,7 @@ index 2d711b1..5edbfeb 100644 } static void -@@ -211,11 +230,16 @@ on_session_start_failed (GdmSession *session, +@@ -216,11 +235,16 @@ on_session_start_failed (GdmSession *session, const char *message) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -328,7 +328,7 @@ index 2d711b1..5edbfeb 100644 } static void -@@ -223,6 +247,7 @@ on_session_exited (GdmSession *session, +@@ -228,6 +252,7 @@ on_session_exited (GdmSession *session, int exit_code) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -336,7 +336,7 @@ index 2d711b1..5edbfeb 100644 gdm_session_record_logout (impl->priv->session_pid, impl->priv->selected_user, impl->priv->display_hostname, -@@ -731,54 +756,52 @@ gdm_session_direct_handle_username_changed (GdmSessionDirect *session, +@@ -770,54 +795,52 @@ gdm_session_direct_handle_username_changed (GdmSessionDirect *session, } static void @@ -408,7 +408,7 @@ index 2d711b1..5edbfeb 100644 } static DBusHandlerResult -@@ -788,6 +811,9 @@ gdm_session_direct_handle_info_query (GdmSessionDirect *session, +@@ -827,6 +850,9 @@ gdm_session_direct_handle_info_query (GdmSessionDirect *session, { DBusError error; const char *text; @@ -418,7 +418,7 @@ index 2d711b1..5edbfeb 100644 dbus_error_init (&error); if (! dbus_message_get_args (message, &error, -@@ -796,7 +822,7 @@ gdm_session_direct_handle_info_query (GdmSessionDirect *session, +@@ -835,7 +861,7 @@ gdm_session_direct_handle_info_query (GdmSessionDirect *session, g_warning ("ERROR: %s", error.message); } @@ -427,7 +427,7 @@ index 2d711b1..5edbfeb 100644 g_debug ("GdmSessionDirect: Emitting 'info-query' signal"); _gdm_session_info_query (GDM_SESSION (session), text); -@@ -811,6 +837,9 @@ gdm_session_direct_handle_secret_info_query (GdmSessionDirect *session, +@@ -850,6 +876,9 @@ gdm_session_direct_handle_secret_info_query (GdmSessionDirect *session, { DBusError error; const char *text; @@ -437,7 +437,7 @@ index 2d711b1..5edbfeb 100644 dbus_error_init (&error); if (! dbus_message_get_args (message, &error, -@@ -819,7 +848,7 @@ gdm_session_direct_handle_secret_info_query (GdmSessionDirect *session, +@@ -858,7 +887,7 @@ gdm_session_direct_handle_secret_info_query (GdmSessionDirect *session, g_warning ("ERROR: %s", error.message); } @@ -446,7 +446,7 @@ index 2d711b1..5edbfeb 100644 g_debug ("GdmSessionDirect: Emitting 'secret-info-query' signal"); _gdm_session_secret_info_query (GDM_SESSION (session), text); -@@ -859,9 +888,13 @@ gdm_session_direct_handle_cancel_pending_query (GdmSessionDirect *session, +@@ -898,9 +927,13 @@ gdm_session_direct_handle_cancel_pending_query (GdmSessionDirect *session, DBusMessage *message) { DBusMessage *reply; @@ -461,7 +461,7 @@ index 2d711b1..5edbfeb 100644 reply = dbus_message_new_method_return (message); dbus_connection_send (connection, reply, NULL); -@@ -1427,16 +1460,18 @@ handle_connection (DBusServer *server, +@@ -1466,16 +1499,18 @@ handle_connection (DBusServer *server, void *user_data) { GdmSessionDirect *session = GDM_SESSION_DIRECT (user_data); @@ -482,7 +482,7 @@ index 2d711b1..5edbfeb 100644 dbus_connection_ref (new_connection); dbus_connection_setup_with_g_main (new_connection, NULL); -@@ -1453,8 +1488,9 @@ handle_connection (DBusServer *server, +@@ -1492,8 +1527,9 @@ handle_connection (DBusServer *server, &vtable, session); @@ -494,7 +494,7 @@ index 2d711b1..5edbfeb 100644 } } -@@ -1524,8 +1560,6 @@ gdm_session_direct_init (GdmSessionDirect *session) +@@ -1563,8 +1599,6 @@ gdm_session_direct_init (GdmSessionDirect *session) G_CALLBACK (on_session_exited), NULL); @@ -503,7 +503,7 @@ index 2d711b1..5edbfeb 100644 session->priv->environment = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free, -@@ -1537,7 +1571,7 @@ gdm_session_direct_init (GdmSessionDirect *session) +@@ -1576,7 +1610,7 @@ gdm_session_direct_init (GdmSessionDirect *session) static void worker_started (GdmSessionWorkerJob *job, @@ -512,7 +512,7 @@ index 2d711b1..5edbfeb 100644 { g_debug ("GdmSessionDirect: Worker job started"); } -@@ -1545,87 +1579,105 @@ worker_started (GdmSessionWorkerJob *job, +@@ -1584,87 +1618,105 @@ worker_started (GdmSessionWorkerJob *job, static void worker_exited (GdmSessionWorkerJob *job, int code, @@ -654,7 +654,7 @@ index 2d711b1..5edbfeb 100644 } static void -@@ -1638,6 +1690,7 @@ send_setup (GdmSessionDirect *session, +@@ -1677,6 +1729,7 @@ send_setup (GdmSessionDirect *session, const char *display_device; const char *display_hostname; const char *display_x11_authority_file; @@ -662,7 +662,7 @@ index 2d711b1..5edbfeb 100644 g_assert (service_name != NULL); -@@ -1675,7 +1728,8 @@ send_setup (GdmSessionDirect *session, +@@ -1714,7 +1767,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); @@ -672,7 +672,7 @@ index 2d711b1..5edbfeb 100644 g_debug ("GdmSessionDirect: Could not send %s signal", "Setup"); } -@@ -1693,6 +1747,7 @@ send_setup_for_user (GdmSessionDirect *session, +@@ -1732,6 +1786,7 @@ send_setup_for_user (GdmSessionDirect *session, const char *display_hostname; const char *display_x11_authority_file; const char *selected_user; @@ -680,7 +680,7 @@ index 2d711b1..5edbfeb 100644 g_assert (service_name != NULL); -@@ -1736,7 +1791,8 @@ send_setup_for_user (GdmSessionDirect *session, +@@ -1775,7 +1830,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); @@ -690,7 +690,7 @@ index 2d711b1..5edbfeb 100644 g_debug ("GdmSessionDirect: Could not send %s signal", "SetupForUser"); } -@@ -1750,7 +1806,8 @@ gdm_session_direct_setup (GdmSession *session, +@@ -1789,7 +1845,8 @@ gdm_session_direct_setup (GdmSession *session, GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); g_return_if_fail (session != NULL); @@ -700,7 +700,7 @@ index 2d711b1..5edbfeb 100644 send_setup (impl, service_name); gdm_session_direct_defaults_changed (impl); -@@ -1764,7 +1821,8 @@ gdm_session_direct_setup_for_user (GdmSession *session, +@@ -1803,7 +1860,8 @@ gdm_session_direct_setup_for_user (GdmSession *session, GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); g_return_if_fail (session != NULL); @@ -710,7 +710,7 @@ index 2d711b1..5edbfeb 100644 g_return_if_fail (username != NULL); gdm_session_direct_select_user (session, username); -@@ -1777,22 +1835,28 @@ static void +@@ -1816,22 +1874,28 @@ static void gdm_session_direct_authenticate (GdmSession *session) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -743,7 +743,7 @@ index 2d711b1..5edbfeb 100644 } static void -@@ -1800,16 +1864,19 @@ gdm_session_direct_accredit (GdmSession *session, +@@ -1839,16 +1903,19 @@ gdm_session_direct_accredit (GdmSession *session, int cred_flag) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -766,7 +766,7 @@ index 2d711b1..5edbfeb 100644 break; default: g_assert_not_reached (); -@@ -1823,6 +1890,7 @@ send_environment_variable (const char *key, +@@ -1862,6 +1929,7 @@ send_environment_variable (const char *key, { DBusMessage *message; DBusMessageIter iter; @@ -774,7 +774,7 @@ index 2d711b1..5edbfeb 100644 message = dbus_message_new_signal (GDM_SESSION_DBUS_PATH, GDM_SESSION_DBUS_INTERFACE, -@@ -1832,7 +1900,8 @@ send_environment_variable (const char *key, +@@ -1871,7 +1939,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); @@ -784,7 +784,7 @@ index 2d711b1..5edbfeb 100644 g_debug ("GdmSessionDirect: Could not send %s signal", "SetEnvironmentVariable"); } -@@ -1965,6 +2034,7 @@ static void +@@ -2004,6 +2073,7 @@ static void gdm_session_direct_start_session (GdmSession *session) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -792,7 +792,7 @@ index 2d711b1..5edbfeb 100644 char *command; char *program; -@@ -1984,7 +2054,8 @@ gdm_session_direct_start_session (GdmSession *session) +@@ -2023,7 +2093,8 @@ gdm_session_direct_start_session (GdmSession *session) setup_session_environment (impl); send_environment (impl); @@ -802,7 +802,7 @@ index 2d711b1..5edbfeb 100644 g_free (program); } -@@ -1997,16 +2068,12 @@ gdm_session_direct_close (GdmSession *session) +@@ -2036,16 +2107,12 @@ gdm_session_direct_close (GdmSession *session) g_debug ("GdmSessionDirect: Closing session"); @@ -825,7 +825,7 @@ index 2d711b1..5edbfeb 100644 } g_free (impl->priv->selected_user); -@@ -2044,10 +2111,13 @@ gdm_session_direct_answer_query (GdmSession *session, +@@ -2083,10 +2150,13 @@ gdm_session_direct_answer_query (GdmSession *session, const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -840,7 +840,7 @@ index 2d711b1..5edbfeb 100644 } static void -@@ -2057,7 +2127,7 @@ gdm_session_direct_cancel (GdmSession *session) +@@ -2096,7 +2166,7 @@ gdm_session_direct_cancel (GdmSession *session) g_return_if_fail (session != NULL); @@ -849,7 +849,7 @@ index 2d711b1..5edbfeb 100644 } char * -@@ -2122,6 +2192,7 @@ gdm_session_direct_select_session (GdmSession *session, +@@ -2161,6 +2231,7 @@ gdm_session_direct_select_session (GdmSession *session, const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -857,7 +857,7 @@ index 2d711b1..5edbfeb 100644 g_free (impl->priv->selected_session); -@@ -2131,7 +2202,8 @@ gdm_session_direct_select_session (GdmSession *session, +@@ -2170,7 +2241,8 @@ gdm_session_direct_select_session (GdmSession *session, impl->priv->selected_session = g_strdup (text); } @@ -867,7 +867,7 @@ index 2d711b1..5edbfeb 100644 get_session_name (impl)); } -@@ -2140,6 +2212,7 @@ gdm_session_direct_select_language (GdmSession *session, +@@ -2179,6 +2251,7 @@ gdm_session_direct_select_language (GdmSession *session, const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -875,7 +875,7 @@ index 2d711b1..5edbfeb 100644 g_free (impl->priv->selected_language); -@@ -2149,7 +2222,8 @@ gdm_session_direct_select_language (GdmSession *session, +@@ -2188,7 +2261,8 @@ gdm_session_direct_select_language (GdmSession *session, impl->priv->selected_language = g_strdup (text); } @@ -885,7 +885,7 @@ index 2d711b1..5edbfeb 100644 get_language_name (impl)); } -@@ -2158,6 +2232,7 @@ gdm_session_direct_select_layout (GdmSession *session, +@@ -2197,6 +2271,7 @@ gdm_session_direct_select_layout (GdmSession *session, const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -893,7 +893,7 @@ index 2d711b1..5edbfeb 100644 g_free (impl->priv->selected_layout); -@@ -2167,7 +2242,8 @@ gdm_session_direct_select_layout (GdmSession *session, +@@ -2206,7 +2281,8 @@ gdm_session_direct_select_layout (GdmSession *session, impl->priv->selected_layout = g_strdup (text); } @@ -903,7 +903,7 @@ index 2d711b1..5edbfeb 100644 get_layout_name (impl)); } -@@ -2427,7 +2503,7 @@ gdm_session_direct_constructor (GType type, +@@ -2466,7 +2542,7 @@ gdm_session_direct_constructor (GType type, static void gdm_session_iface_init (GdmSessionIface *iface) { @@ -1143,7 +1143,7 @@ index dfb7e27..77e0cf6 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 463b2b3..2ba778c 100644 +index 3bf3835..5179f51 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c @@ -179,7 +179,6 @@ reset_session (GdmSimpleSlave *slave) @@ -1154,7 +1154,7 @@ index 463b2b3..2ba778c 100644 } static gboolean -@@ -827,8 +826,6 @@ on_greeter_connected (GdmGreeterServer *greeter_server, +@@ -833,8 +832,6 @@ on_greeter_connected (GdmGreeterServer *greeter_server, g_debug ("GdmSimpleSlave: Greeter connected"); @@ -1200,13 +1200,13 @@ index c6a158c..d9fa26e 100644 g_signal_connect (session, "setup-complete", -- -1.6.5.2 +1.6.6 -From 0318b3041042e0a0f96d9c9092dd926c3273abdf Mon Sep 17 00:00:00 2001 +From 150d2f09141849042c62a1be96b40a0fe51a3eed Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 4 Feb 2009 10:55:03 -0500 -Subject: [PATCH 02/51] Rename session worker to the service it's managing +Subject: [PATCH 02/50] Rename session worker to the service it's managing This way when we're running multiple PAM conversations at once it will be obvious which worker is managing which conversation. @@ -1217,10 +1217,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 5edbfeb..0ca0149 100644 +index ba7a90e..fbb6fea 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c -@@ -1605,6 +1605,7 @@ start_conversation (GdmSessionDirect *session, +@@ -1644,6 +1644,7 @@ start_conversation (GdmSessionDirect *session, const char *service_name) { GdmSessionConversation *conversation; @@ -1228,7 +1228,7 @@ index 5edbfeb..0ca0149 100644 conversation = g_new0 (GdmSessionConversation, 1); conversation->session = session; -@@ -1625,12 +1626,16 @@ start_conversation (GdmSessionDirect *session, +@@ -1664,12 +1665,16 @@ start_conversation (GdmSessionDirect *session, G_CALLBACK (worker_died), conversation); @@ -1389,13 +1389,13 @@ index d24f025..4833f23 100644 GPid gdm_session_worker_job_get_pid (GdmSessionWorkerJob *session_worker_job); -- -1.6.5.2 +1.6.6 -From 48d8b4e8c505e22a2af35d543239f16bcb70226f Mon Sep 17 00:00:00 2001 +From 5a7f392f5e82171e06be87aedd4a728fbfc3ce44 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 16 Jan 2009 13:01:48 -0500 -Subject: [PATCH 03/51] Make greeter explicitly request PAM conversation +Subject: [PATCH 03/50] Make greeter explicitly request PAM conversation Now the greeter has to say what PAM stack it wants the slave to run. When that stack is ready, we emit the Ready signal as @@ -1562,10 +1562,10 @@ index 6e92100..7333db1 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 2ba778c..dbbc23c 100644 +index 5179f51..4144536 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -489,17 +489,19 @@ on_session_secret_info_query (GdmSession *session, +@@ -495,17 +495,19 @@ on_session_secret_info_query (GdmSession *session, } static void @@ -1589,7 +1589,7 @@ index 2ba778c..dbbc23c 100644 if (! res) { g_warning ("Unable to send ready"); } -@@ -515,8 +517,10 @@ on_session_opened (GdmSession *session, +@@ -521,8 +523,10 @@ on_session_opened (GdmSession *session, gdm_greeter_server_request_timed_login (slave->priv->greeter_server, username, delay); } else { g_debug ("GdmSimpleSlave: begin auto login for user '%s'", username); @@ -1601,7 +1601,7 @@ index 2ba778c..dbbc23c 100644 username); } -@@ -608,8 +612,8 @@ create_new_session (GdmSimpleSlave *slave) +@@ -614,8 +618,8 @@ create_new_session (GdmSimpleSlave *slave) g_free (display_hostname); g_signal_connect (slave->priv->session, @@ -1612,7 +1612,7 @@ index 2ba778c..dbbc23c 100644 slave); g_signal_connect (slave->priv->session, "setup-complete", -@@ -740,6 +744,16 @@ on_greeter_session_died (GdmGreeterSession *greeter, +@@ -746,6 +750,16 @@ on_greeter_session_died (GdmGreeterSession *greeter, } static void @@ -1629,7 +1629,7 @@ index 2ba778c..dbbc23c 100644 on_greeter_begin_verification (GdmGreeterServer *greeter_server, GdmSimpleSlave *slave) { -@@ -914,6 +928,10 @@ start_greeter (GdmSimpleSlave *slave) +@@ -920,6 +934,10 @@ start_greeter (GdmSimpleSlave *slave) slave->priv->greeter_server = gdm_greeter_server_new (display_id); g_signal_connect (slave->priv->greeter_server, @@ -1641,7 +1641,7 @@ index 2ba778c..dbbc23c 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 461b85c..1e2c55d 100644 +index ed4dd95..8d061a4 100644 --- a/gui/simple-greeter/gdm-greeter-client.c +++ b/gui/simple-greeter/gdm-greeter-client.c @@ -237,11 +237,7 @@ static void @@ -1735,13 +1735,13 @@ index e7d206a..cd0cbdf 100644 return res; -- -1.6.5.2 +1.6.6 -From 9d6177d81060e23a782db69477d0df801502af9a Mon Sep 17 00:00:00 2001 +From dc6fd102aadd00b96b9f23b7cf88c2d42716474c Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 16 Jan 2009 15:18:31 -0500 -Subject: [PATCH 04/51] Store multiple conversations in the session +Subject: [PATCH 04/50] Store multiple conversations in the session We keep multiple conversations in the session now, keyed off of PAM service is at the other end. Much of the guts still @@ -1751,10 +1751,10 @@ only operate on the first conversation added though. 1 files changed, 106 insertions(+), 17 deletions(-) diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c -index 0ca0149..d8b8e29 100644 +index fbb6fea..d8f338f 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c -@@ -84,6 +84,7 @@ struct _GdmSessionDirectPrivate +@@ -89,6 +89,7 @@ struct _GdmSessionDirectPrivate char *user_x11_authority_file; GdmSessionConversation *conversation; @@ -1762,7 +1762,7 @@ index 0ca0149..d8b8e29 100644 GdmSessionWorkerJob *job; GPid session_pid; -@@ -1454,6 +1455,42 @@ allow_user_function (DBusConnection *connection, +@@ -1493,6 +1494,42 @@ allow_user_function (DBusConnection *connection, return FALSE; } @@ -1805,7 +1805,7 @@ index 0ca0149..d8b8e29 100644 static void handle_connection (DBusServer *server, DBusConnection *new_connection, -@@ -1461,10 +1498,22 @@ handle_connection (DBusServer *server, +@@ -1500,10 +1537,22 @@ handle_connection (DBusServer *server, { GdmSessionDirect *session = GDM_SESSION_DIRECT (user_data); GdmSessionConversation *conversation; @@ -1829,7 +1829,7 @@ index 0ca0149..d8b8e29 100644 if (conversation->worker_connection == NULL) { DBusObjectPathVTable vtable = { &session_unregister_handler, &session_message_handler, -@@ -1537,6 +1586,17 @@ setup_server (GdmSessionDirect *session) +@@ -1576,6 +1625,17 @@ setup_server (GdmSessionDirect *session) } static void @@ -1847,7 +1847,7 @@ index 0ca0149..d8b8e29 100644 gdm_session_direct_init (GdmSessionDirect *session) { session->priv = G_TYPE_INSTANCE_GET_PRIVATE (session, -@@ -1560,6 +1620,11 @@ gdm_session_direct_init (GdmSessionDirect *session) +@@ -1599,6 +1659,11 @@ gdm_session_direct_init (GdmSessionDirect *session) G_CALLBACK (on_session_exited), NULL); @@ -1859,7 +1859,7 @@ index 0ca0149..d8b8e29 100644 session->priv->environment = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free, -@@ -1659,17 +1724,15 @@ stop_conversation (GdmSessionConversation *conversation) +@@ -1698,17 +1763,15 @@ stop_conversation (GdmSessionConversation *conversation) G_CALLBACK (worker_died), conversation); @@ -1879,7 +1879,7 @@ index 0ca0149..d8b8e29 100644 } static void -@@ -1677,12 +1740,20 @@ gdm_session_direct_start_conversation (GdmSession *session, +@@ -1716,12 +1779,20 @@ gdm_session_direct_start_conversation (GdmSession *session, const char *service_name) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -1901,7 +1901,7 @@ index 0ca0149..d8b8e29 100644 } static void -@@ -1733,8 +1804,8 @@ send_setup (GdmSessionDirect *session, +@@ -1772,8 +1843,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); @@ -1912,7 +1912,7 @@ index 0ca0149..d8b8e29 100644 g_debug ("GdmSessionDirect: Could not send %s signal", "Setup"); } -@@ -1796,8 +1867,8 @@ send_setup_for_user (GdmSessionDirect *session, +@@ -1835,8 +1906,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); @@ -1923,7 +1923,7 @@ index 0ca0149..d8b8e29 100644 g_debug ("GdmSessionDirect: Could not send %s signal", "SetupForUser"); } -@@ -1811,8 +1882,6 @@ gdm_session_direct_setup (GdmSession *session, +@@ -1850,8 +1921,6 @@ gdm_session_direct_setup (GdmSession *session, GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); g_return_if_fail (session != NULL); @@ -1932,7 +1932,7 @@ index 0ca0149..d8b8e29 100644 send_setup (impl, service_name); gdm_session_direct_defaults_changed (impl); -@@ -1826,8 +1895,6 @@ gdm_session_direct_setup_for_user (GdmSession *session, +@@ -1865,8 +1934,6 @@ gdm_session_direct_setup_for_user (GdmSession *session, GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); g_return_if_fail (session != NULL); @@ -1941,7 +1941,7 @@ index 0ca0149..d8b8e29 100644 g_return_if_fail (username != NULL); gdm_session_direct_select_user (session, username); -@@ -2065,6 +2132,28 @@ gdm_session_direct_start_session (GdmSession *session) +@@ -2104,6 +2171,28 @@ gdm_session_direct_start_session (GdmSession *session) } static void @@ -1970,7 +1970,7 @@ index 0ca0149..d8b8e29 100644 gdm_session_direct_close (GdmSession *session) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); -@@ -2081,6 +2170,8 @@ gdm_session_direct_close (GdmSession *session) +@@ -2120,6 +2209,8 @@ gdm_session_direct_close (GdmSession *session) impl->priv->display_device); } @@ -1979,7 +1979,7 @@ index 0ca0149..d8b8e29 100644 g_free (impl->priv->selected_user); impl->priv->selected_user = NULL; -@@ -2128,11 +2219,9 @@ gdm_session_direct_answer_query (GdmSession *session, +@@ -2167,11 +2258,9 @@ gdm_session_direct_answer_query (GdmSession *session, static void gdm_session_direct_cancel (GdmSession *session) { @@ -1993,13 +1993,13 @@ index 0ca0149..d8b8e29 100644 char * -- -1.6.5.2 +1.6.6 -From 4e987e18e140a1267b407fcf81b6cd8c4fa5c8a1 Mon Sep 17 00:00:00 2001 +From fe4b7090ee1d6920e470df15cf6cd6df483530d3 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 4 Mar 2009 22:09:21 -0500 -Subject: [PATCH 05/51] start autologin conversation when creating session if necessary +Subject: [PATCH 05/50] start autologin conversation when creating session if necessary Without this autologin breaks, since when it comes time to autologin, there's no worker to do it. @@ -2008,10 +2008,10 @@ autologin, there's no worker to do it. 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index dbbc23c..f28d15b 100644 +index 4144536..f70ed88 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -1041,8 +1041,18 @@ idle_connect_to_display (GdmSimpleSlave *slave) +@@ -1047,8 +1047,18 @@ idle_connect_to_display (GdmSimpleSlave *slave) if (! enabled || delay > 0) { start_greeter (slave); create_new_session (slave); @@ -2031,13 +2031,13 @@ index dbbc23c..f28d15b 100644 } else { if (slave->priv->connection_attempts >= MAX_CONNECT_ATTEMPTS) { -- -1.6.5.2 +1.6.6 -From ffacc37df414e5f1fb989bceca786acc59945bc7 Mon Sep 17 00:00:00 2001 +From 64ac77149c45408416279382565d61123dcbeff4 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 22 Jan 2009 08:52:01 -0500 -Subject: [PATCH 06/51] Propagate service name to more layers +Subject: [PATCH 06/50] Propagate service name to more layers This is more prep work to get multiple concurrent PAM stacks going. @@ -3059,10 +3059,10 @@ index 15a2820..dd2e1bc 100644 static void diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c -index d8b8e29..b6c43f7 100644 +index d8f338f..4789e1d 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c -@@ -83,10 +83,10 @@ struct _GdmSessionDirectPrivate +@@ -88,10 +88,10 @@ struct _GdmSessionDirectPrivate char *selected_user; char *user_x11_authority_file; @@ -3075,7 +3075,7 @@ index d8b8e29..b6c43f7 100644 GPid session_pid; guint32 is_running : 1; -@@ -193,14 +193,30 @@ send_dbus_void_signal (GdmSessionConversation *conversation, +@@ -198,14 +198,30 @@ send_dbus_void_signal (GdmSessionConversation *conversation, dbus_message_unref (message); } @@ -3107,7 +3107,7 @@ index d8b8e29..b6c43f7 100644 if (conversation != NULL) { gdm_session_record_failed (conversation->worker_pid, impl->priv->selected_user, -@@ -211,12 +227,13 @@ on_authentication_failed (GdmSession *session, +@@ -216,12 +232,13 @@ on_authentication_failed (GdmSession *session, } static void @@ -3123,7 +3123,7 @@ index d8b8e29..b6c43f7 100644 if (conversation != NULL) { gdm_session_record_login (conversation->worker_pid, impl->priv->selected_user, -@@ -228,12 +245,13 @@ on_session_started (GdmSession *session) +@@ -233,12 +250,13 @@ on_session_started (GdmSession *session) static void on_session_start_failed (GdmSession *session, @@ -3138,7 +3138,7 @@ index d8b8e29..b6c43f7 100644 if (conversation != NULL) { gdm_session_record_login (conversation->worker_pid, impl->priv->selected_user, -@@ -258,7 +276,7 @@ on_session_exited (GdmSession *session, +@@ -263,7 +281,7 @@ on_session_exited (GdmSession *session, static DBusHandlerResult gdm_session_direct_handle_setup_complete (GdmSessionDirect *session, @@ -3147,7 +3147,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -266,17 +284,17 @@ gdm_session_direct_handle_setup_complete (GdmSessionDirect *session, +@@ -271,17 +289,17 @@ gdm_session_direct_handle_setup_complete (GdmSessionDirect *session, g_debug ("GdmSessionDirect: Emitting 'setup-complete' signal"); reply = dbus_message_new_method_return (message); @@ -3168,7 +3168,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -291,12 +309,12 @@ gdm_session_direct_handle_setup_failed (GdmSessionDirect *session, +@@ -296,12 +314,12 @@ gdm_session_direct_handle_setup_failed (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3183,7 +3183,7 @@ index d8b8e29..b6c43f7 100644 return DBUS_HANDLER_RESULT_HANDLED; } -@@ -304,7 +322,7 @@ gdm_session_direct_handle_setup_failed (GdmSessionDirect *session, +@@ -309,7 +327,7 @@ gdm_session_direct_handle_setup_failed (GdmSessionDirect *session, static DBusHandlerResult gdm_session_direct_handle_reset_complete (GdmSessionDirect *session, @@ -3192,7 +3192,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -312,7 +330,7 @@ gdm_session_direct_handle_reset_complete (GdmSessionDirect *session, +@@ -317,7 +335,7 @@ gdm_session_direct_handle_reset_complete (GdmSessionDirect *session, g_debug ("GdmSessionDirect: Emitting 'reset-complete' signal"); reply = dbus_message_new_method_return (message); @@ -3201,7 +3201,7 @@ index d8b8e29..b6c43f7 100644 dbus_message_unref (reply); _gdm_session_reset_complete (GDM_SESSION (session)); -@@ -322,7 +340,7 @@ gdm_session_direct_handle_reset_complete (GdmSessionDirect *session, +@@ -327,7 +345,7 @@ gdm_session_direct_handle_reset_complete (GdmSessionDirect *session, static DBusHandlerResult gdm_session_direct_handle_reset_failed (GdmSessionDirect *session, @@ -3210,7 +3210,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -337,7 +355,7 @@ gdm_session_direct_handle_reset_failed (GdmSessionDirect *session, +@@ -342,7 +360,7 @@ gdm_session_direct_handle_reset_failed (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3219,7 +3219,7 @@ index d8b8e29..b6c43f7 100644 dbus_message_unref (reply); g_debug ("GdmSessionDirect: Emitting 'reset-failed' signal"); -@@ -349,7 +367,7 @@ gdm_session_direct_handle_reset_failed (GdmSessionDirect *session, +@@ -354,7 +372,7 @@ gdm_session_direct_handle_reset_failed (GdmSessionDirect *session, static DBusHandlerResult gdm_session_direct_handle_authenticated (GdmSessionDirect *session, @@ -3228,7 +3228,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -357,17 +375,17 @@ gdm_session_direct_handle_authenticated (GdmSessionDirect *session, +@@ -362,17 +380,17 @@ gdm_session_direct_handle_authenticated (GdmSessionDirect *session, g_debug ("GdmSessionDirect: Emitting 'authenticated' signal"); reply = dbus_message_new_method_return (message); @@ -3249,7 +3249,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -382,19 +400,19 @@ gdm_session_direct_handle_authentication_failed (GdmSessionDirect *session, +@@ -387,19 +405,19 @@ gdm_session_direct_handle_authentication_failed (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3272,7 +3272,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -402,17 +420,17 @@ gdm_session_direct_handle_authorized (GdmSessionDirect *session, +@@ -407,17 +425,17 @@ gdm_session_direct_handle_authorized (GdmSessionDirect *session, g_debug ("GdmSessionDirect: Emitting 'authorized' signal"); reply = dbus_message_new_method_return (message); @@ -3293,7 +3293,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -427,19 +445,19 @@ gdm_session_direct_handle_authorization_failed (GdmSessionDirect *session, +@@ -432,19 +450,19 @@ gdm_session_direct_handle_authorization_failed (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3316,7 +3316,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -447,17 +465,17 @@ gdm_session_direct_handle_accredited (GdmSessionDirect *session, +@@ -452,17 +470,17 @@ gdm_session_direct_handle_accredited (GdmSessionDirect *session, g_debug ("GdmSessionDirect: Emitting 'accredited' signal"); reply = dbus_message_new_method_return (message); @@ -3337,7 +3337,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -472,12 +490,12 @@ gdm_session_direct_handle_accreditation_failed (GdmSessionDirect *session, +@@ -477,12 +495,12 @@ gdm_session_direct_handle_accreditation_failed (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3352,7 +3352,7 @@ index d8b8e29..b6c43f7 100644 return DBUS_HANDLER_RESULT_HANDLED; } -@@ -725,7 +743,7 @@ gdm_session_direct_select_user (GdmSession *session, +@@ -764,7 +782,7 @@ gdm_session_direct_select_user (GdmSession *session, static DBusHandlerResult gdm_session_direct_handle_username_changed (GdmSessionDirect *session, @@ -3361,7 +3361,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -740,7 +758,7 @@ gdm_session_direct_handle_username_changed (GdmSessionDirect *session, +@@ -779,7 +797,7 @@ gdm_session_direct_handle_username_changed (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3370,7 +3370,7 @@ index d8b8e29..b6c43f7 100644 dbus_message_unref (reply); g_debug ("GdmSessionDirect: changing username from '%s' to '%s'", -@@ -807,14 +825,11 @@ set_pending_query (GdmSessionConversation *conversation, +@@ -846,14 +864,11 @@ set_pending_query (GdmSessionConversation *conversation, static DBusHandlerResult gdm_session_direct_handle_info_query (GdmSessionDirect *session, @@ -3386,7 +3386,7 @@ index d8b8e29..b6c43f7 100644 dbus_error_init (&error); if (! dbus_message_get_args (message, &error, -@@ -826,21 +841,18 @@ gdm_session_direct_handle_info_query (GdmSessionDirect *session, +@@ -865,21 +880,18 @@ gdm_session_direct_handle_info_query (GdmSessionDirect *session, set_pending_query (conversation, message); g_debug ("GdmSessionDirect: Emitting 'info-query' signal"); @@ -3410,7 +3410,7 @@ index d8b8e29..b6c43f7 100644 dbus_error_init (&error); if (! dbus_message_get_args (message, &error, -@@ -852,14 +864,14 @@ gdm_session_direct_handle_secret_info_query (GdmSessionDirect *session, +@@ -891,14 +903,14 @@ gdm_session_direct_handle_secret_info_query (GdmSessionDirect *session, set_pending_query (conversation, message); g_debug ("GdmSessionDirect: Emitting 'secret-info-query' signal"); @@ -3427,7 +3427,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -874,31 +886,28 @@ gdm_session_direct_handle_info (GdmSessionDirect *session, +@@ -913,31 +925,28 @@ gdm_session_direct_handle_info (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3463,7 +3463,7 @@ index d8b8e29..b6c43f7 100644 dbus_message_unref (reply); return DBUS_HANDLER_RESULT_HANDLED; -@@ -906,7 +915,7 @@ gdm_session_direct_handle_cancel_pending_query (GdmSessionDirect *session, +@@ -945,7 +954,7 @@ gdm_session_direct_handle_cancel_pending_query (GdmSessionDirect *session, static DBusHandlerResult gdm_session_direct_handle_problem (GdmSessionDirect *session, @@ -3472,7 +3472,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -921,18 +930,18 @@ gdm_session_direct_handle_problem (GdmSessionDirect *session, +@@ -960,18 +969,18 @@ gdm_session_direct_handle_problem (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3494,7 +3494,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -951,7 +960,7 @@ gdm_session_direct_handle_session_started (GdmSessionDirect *session, +@@ -990,7 +999,7 @@ gdm_session_direct_handle_session_started (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3503,7 +3503,7 @@ index d8b8e29..b6c43f7 100644 dbus_message_unref (reply); g_debug ("GdmSessionDirect: Emitting 'session-started' signal with pid '%d'", -@@ -960,14 +969,14 @@ gdm_session_direct_handle_session_started (GdmSessionDirect *session, +@@ -999,14 +1008,14 @@ gdm_session_direct_handle_session_started (GdmSessionDirect *session, session->priv->session_pid = pid; session->priv->is_running = TRUE; @@ -3520,7 +3520,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -982,18 +991,18 @@ gdm_session_direct_handle_start_failed (GdmSessionDirect *session, +@@ -1021,18 +1030,18 @@ gdm_session_direct_handle_start_failed (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3542,7 +3542,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -1008,7 +1017,7 @@ gdm_session_direct_handle_session_exited (GdmSessionDirect *session, +@@ -1047,7 +1056,7 @@ gdm_session_direct_handle_session_exited (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3551,7 +3551,7 @@ index d8b8e29..b6c43f7 100644 dbus_message_unref (reply); g_debug ("GdmSessionDirect: Emitting 'session-exited' signal with exit code '%d'", -@@ -1022,7 +1031,7 @@ gdm_session_direct_handle_session_exited (GdmSessionDirect *session, +@@ -1061,7 +1070,7 @@ gdm_session_direct_handle_session_exited (GdmSessionDirect *session, static DBusHandlerResult gdm_session_direct_handle_session_died (GdmSessionDirect *session, @@ -3560,7 +3560,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -1037,7 +1046,7 @@ gdm_session_direct_handle_session_died (GdmSessionDirect *session, +@@ -1076,7 +1085,7 @@ gdm_session_direct_handle_session_died (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3569,7 +3569,7 @@ index d8b8e29..b6c43f7 100644 dbus_message_unref (reply); g_debug ("GdmSessionDirect: Emitting 'session-died' signal with signal number '%d'", -@@ -1051,7 +1060,7 @@ gdm_session_direct_handle_session_died (GdmSessionDirect *session, +@@ -1090,7 +1099,7 @@ gdm_session_direct_handle_session_died (GdmSessionDirect *session, static DBusHandlerResult gdm_session_direct_handle_saved_language_name_read (GdmSessionDirect *session, @@ -3578,7 +3578,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -1066,7 +1075,7 @@ gdm_session_direct_handle_saved_language_name_read (GdmSessionDirect *session, +@@ -1105,7 +1114,7 @@ gdm_session_direct_handle_saved_language_name_read (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3587,7 +3587,7 @@ index d8b8e29..b6c43f7 100644 dbus_message_unref (reply); if (strcmp (language_name, -@@ -1084,7 +1093,7 @@ gdm_session_direct_handle_saved_language_name_read (GdmSessionDirect *session, +@@ -1123,7 +1132,7 @@ gdm_session_direct_handle_saved_language_name_read (GdmSessionDirect *session, static DBusHandlerResult gdm_session_direct_handle_saved_layout_name_read (GdmSessionDirect *session, @@ -3596,7 +3596,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -1099,7 +1108,7 @@ gdm_session_direct_handle_saved_layout_name_read (GdmSessionDirect *session, +@@ -1138,7 +1147,7 @@ gdm_session_direct_handle_saved_layout_name_read (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3605,7 +3605,7 @@ index d8b8e29..b6c43f7 100644 dbus_message_unref (reply); if (strcmp (layout_name, -@@ -1117,7 +1126,7 @@ gdm_session_direct_handle_saved_layout_name_read (GdmSessionDirect *session, +@@ -1156,7 +1165,7 @@ gdm_session_direct_handle_saved_layout_name_read (GdmSessionDirect *session, static DBusHandlerResult gdm_session_direct_handle_saved_session_name_read (GdmSessionDirect *session, @@ -3614,7 +3614,7 @@ index d8b8e29..b6c43f7 100644 DBusMessage *message) { DBusMessage *reply; -@@ -1132,7 +1141,7 @@ gdm_session_direct_handle_saved_session_name_read (GdmSessionDirect *session, +@@ -1171,7 +1180,7 @@ gdm_session_direct_handle_saved_session_name_read (GdmSessionDirect *session, } reply = dbus_message_new_method_return (message); @@ -3623,7 +3623,7 @@ index d8b8e29..b6c43f7 100644 dbus_message_unref (reply); if (! get_session_command_for_name (session_name, NULL)) { -@@ -1160,54 +1169,57 @@ session_worker_message (DBusConnection *connection, +@@ -1199,54 +1208,57 @@ session_worker_message (DBusConnection *connection, DBusMessage *message, void *user_data) { @@ -3705,7 +3705,7 @@ index d8b8e29..b6c43f7 100644 } return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; -@@ -1441,6 +1453,27 @@ session_unregister_handler (DBusConnection *connection, +@@ -1480,6 +1492,27 @@ session_unregister_handler (DBusConnection *connection, g_debug ("session_unregister_handler"); } @@ -3733,7 +3733,7 @@ index d8b8e29..b6c43f7 100644 static dbus_bool_t allow_user_function (DBusConnection *connection, unsigned long uid, -@@ -1455,40 +1488,83 @@ allow_user_function (DBusConnection *connection, +@@ -1494,40 +1527,83 @@ allow_user_function (DBusConnection *connection, return FALSE; } @@ -3835,7 +3835,7 @@ index d8b8e29..b6c43f7 100644 } static void -@@ -1497,50 +1573,23 @@ handle_connection (DBusServer *server, +@@ -1536,50 +1612,23 @@ handle_connection (DBusServer *server, void *user_data) { GdmSessionDirect *session = GDM_SESSION_DIRECT (user_data); @@ -3900,7 +3900,7 @@ index d8b8e29..b6c43f7 100644 } static gboolean -@@ -1725,6 +1774,8 @@ stop_conversation (GdmSessionConversation *conversation) +@@ -1764,6 +1813,8 @@ stop_conversation (GdmSessionConversation *conversation) conversation); if (conversation->worker_connection != NULL) { @@ -3909,7 +3909,7 @@ index d8b8e29..b6c43f7 100644 dbus_connection_close (conversation->worker_connection); conversation->worker_connection = NULL; } -@@ -1750,10 +1801,6 @@ gdm_session_direct_start_conversation (GdmSession *session, +@@ -1789,10 +1840,6 @@ gdm_session_direct_start_conversation (GdmSession *session, g_hash_table_insert (impl->priv->conversations, g_strdup (service_name), conversation); @@ -3920,7 +3920,7 @@ index d8b8e29..b6c43f7 100644 } static void -@@ -1904,45 +1951,50 @@ gdm_session_direct_setup_for_user (GdmSession *session, +@@ -1943,45 +1990,50 @@ gdm_session_direct_setup_for_user (GdmSession *session, } static void @@ -3984,7 +3984,7 @@ index d8b8e29..b6c43f7 100644 switch (cred_flag) { case GDM_SESSION_CRED_ESTABLISH: send_dbus_void_signal (conversation, "EstablishCredentials"); -@@ -1956,13 +2008,12 @@ gdm_session_direct_accredit (GdmSession *session, +@@ -1995,13 +2047,12 @@ gdm_session_direct_accredit (GdmSession *session, } static void @@ -4001,7 +4001,7 @@ index d8b8e29..b6c43f7 100644 message = dbus_message_new_signal (GDM_SESSION_DBUS_PATH, GDM_SESSION_DBUS_INTERFACE, -@@ -1972,7 +2023,6 @@ send_environment_variable (const char *key, +@@ -2011,7 +2062,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); @@ -4009,7 +4009,7 @@ index d8b8e29..b6c43f7 100644 if (! send_dbus_message (conversation, message)) { g_debug ("GdmSessionDirect: Could not send %s signal", "SetEnvironmentVariable"); } -@@ -1981,12 +2031,13 @@ send_environment_variable (const char *key, +@@ -2020,12 +2070,13 @@ send_environment_variable (const char *key, } static void @@ -4025,7 +4025,7 @@ index d8b8e29..b6c43f7 100644 } static const char * -@@ -2103,7 +2154,8 @@ setup_session_environment (GdmSessionDirect *session) +@@ -2142,7 +2193,8 @@ setup_session_environment (GdmSessionDirect *session) } static void @@ -4035,7 +4035,7 @@ index d8b8e29..b6c43f7 100644 { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); GdmSessionConversation *conversation; -@@ -2123,10 +2175,11 @@ gdm_session_direct_start_session (GdmSession *session) +@@ -2162,10 +2214,11 @@ gdm_session_direct_start_session (GdmSession *session) g_free (command); @@ -4049,7 +4049,7 @@ index d8b8e29..b6c43f7 100644 send_dbus_string_signal (conversation, "StartProgram", program); g_free (program); } -@@ -2172,6 +2225,11 @@ gdm_session_direct_close (GdmSession *session) +@@ -2211,6 +2264,11 @@ gdm_session_direct_close (GdmSession *session) stop_all_conversations (impl); @@ -4061,7 +4061,7 @@ index d8b8e29..b6c43f7 100644 g_free (impl->priv->selected_user); impl->priv->selected_user = NULL; -@@ -2204,6 +2262,7 @@ gdm_session_direct_close (GdmSession *session) +@@ -2243,6 +2301,7 @@ gdm_session_direct_close (GdmSession *session) static void gdm_session_direct_answer_query (GdmSession *session, @@ -4069,7 +4069,7 @@ index d8b8e29..b6c43f7 100644 const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); -@@ -2211,7 +2270,7 @@ gdm_session_direct_answer_query (GdmSession *session, +@@ -2250,7 +2309,7 @@ gdm_session_direct_answer_query (GdmSession *session, g_return_if_fail (session != NULL); @@ -4078,7 +4078,7 @@ index d8b8e29..b6c43f7 100644 answer_pending_query (conversation, text); } -@@ -2286,7 +2345,8 @@ gdm_session_direct_select_session (GdmSession *session, +@@ -2325,7 +2384,8 @@ gdm_session_direct_select_session (GdmSession *session, const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -4088,7 +4088,7 @@ index d8b8e29..b6c43f7 100644 g_free (impl->priv->selected_session); -@@ -2296,9 +2356,15 @@ gdm_session_direct_select_session (GdmSession *session, +@@ -2335,9 +2395,15 @@ gdm_session_direct_select_session (GdmSession *session, impl->priv->selected_session = g_strdup (text); } @@ -4107,7 +4107,7 @@ index d8b8e29..b6c43f7 100644 } static void -@@ -2306,7 +2372,8 @@ gdm_session_direct_select_language (GdmSession *session, +@@ -2345,7 +2411,8 @@ gdm_session_direct_select_language (GdmSession *session, const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -4117,7 +4117,7 @@ index d8b8e29..b6c43f7 100644 g_free (impl->priv->selected_language); -@@ -2316,9 +2383,15 @@ gdm_session_direct_select_language (GdmSession *session, +@@ -2355,9 +2422,15 @@ gdm_session_direct_select_language (GdmSession *session, impl->priv->selected_language = g_strdup (text); } @@ -4136,7 +4136,7 @@ index d8b8e29..b6c43f7 100644 } static void -@@ -2326,7 +2399,8 @@ gdm_session_direct_select_layout (GdmSession *session, +@@ -2365,7 +2438,8 @@ gdm_session_direct_select_layout (GdmSession *session, const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -4146,7 +4146,7 @@ index d8b8e29..b6c43f7 100644 g_free (impl->priv->selected_layout); -@@ -2336,9 +2410,15 @@ gdm_session_direct_select_layout (GdmSession *session, +@@ -2375,9 +2449,15 @@ gdm_session_direct_select_layout (GdmSession *session, impl->priv->selected_layout = g_strdup (text); } @@ -4621,10 +4621,10 @@ index 35b4738..6e15f75 100644 return DBUS_HANDLER_RESULT_HANDLED; diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c -index 47a5c08..bcd4f93 100644 +index 346bf80..80844b4 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c -@@ -2851,6 +2851,28 @@ worker_dbus_filter_function (DBusConnection *connection, +@@ -2859,6 +2859,28 @@ worker_dbus_filter_function (DBusConnection *connection, return DBUS_HANDLER_RESULT_HANDLED; } @@ -4653,7 +4653,7 @@ index 47a5c08..bcd4f93 100644 static GObject * gdm_session_worker_constructor (GType type, guint n_construct_properties, -@@ -2877,6 +2899,11 @@ gdm_session_worker_constructor (GType type, +@@ -2885,6 +2907,11 @@ gdm_session_worker_constructor (GType type, exit (1); } @@ -5195,7 +5195,7 @@ index 77e0cf6..db5fc4a 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 f28d15b..9b06218 100644 +index f70ed88..7c2f384 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c @@ -71,6 +71,8 @@ struct GdmSimpleSlavePrivate @@ -5315,7 +5315,7 @@ index f28d15b..9b06218 100644 } destroy_session (slave); -@@ -391,31 +404,38 @@ start_session_timeout (GdmSimpleSlave *slave) +@@ -397,31 +410,38 @@ start_session_timeout (GdmSimpleSlave *slave) g_free (auth_file); @@ -5357,7 +5357,7 @@ index f28d15b..9b06218 100644 const char *message, GdmSimpleSlave *slave) { -@@ -436,6 +456,7 @@ on_session_accreditation_failed (GdmSession *session, +@@ -442,6 +462,7 @@ on_session_accreditation_failed (GdmSession *session, problem = _("Unable to establish credentials"); } gdm_greeter_server_problem (slave->priv->greeter_server, @@ -5365,7 +5365,7 @@ index f28d15b..9b06218 100644 problem); } } -@@ -451,41 +472,45 @@ on_session_accreditation_failed (GdmSession *session, +@@ -457,41 +478,45 @@ on_session_accreditation_failed (GdmSession *session, static void on_session_info (GdmSession *session, @@ -5415,7 +5415,7 @@ index f28d15b..9b06218 100644 } static void -@@ -755,11 +780,12 @@ on_greeter_start_conversation (GdmGreeterServer *greeter_server, +@@ -761,11 +786,12 @@ on_greeter_start_conversation (GdmGreeterServer *greeter_server, static void on_greeter_begin_verification (GdmGreeterServer *greeter_server, @@ -5429,7 +5429,7 @@ index f28d15b..9b06218 100644 } static void -@@ -775,21 +801,23 @@ on_greeter_begin_auto_login (GdmGreeterServer *greeter_server, +@@ -781,21 +807,23 @@ on_greeter_begin_auto_login (GdmGreeterServer *greeter_server, static void on_greeter_begin_verification_for_user (GdmGreeterServer *greeter_server, @@ -5455,7 +5455,7 @@ index f28d15b..9b06218 100644 } static void -@@ -852,18 +880,20 @@ on_greeter_connected (GdmGreeterServer *greeter_server, +@@ -858,18 +886,20 @@ on_greeter_connected (GdmGreeterServer *greeter_server, static void on_start_session_when_ready (GdmGreeterServer *session, @@ -5597,7 +5597,7 @@ index d9fa26e..3cf8483 100644 static void diff --git a/gui/simple-greeter/gdm-greeter-client.c b/gui/simple-greeter/gdm-greeter-client.c -index 1e2c55d..0bd27a9 100644 +index 8d061a4..0891e8b 100644 --- a/gui/simple-greeter/gdm-greeter-client.c +++ b/gui/simple-greeter/gdm-greeter-client.c @@ -134,6 +134,37 @@ emit_string_and_int_signal_for_message (GdmGreeterClient *client, @@ -6045,13 +6045,13 @@ index cd0cbdf..e856dd4 100644 static int -- -1.6.5.2 +1.6.6 -From d95507a827601b4a2a1323a1cc61c8e4cb0381dc Mon Sep 17 00:00:00 2001 +From 2c1ed73f15a375ecb619784e0f858a1e8de84cf0 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Sat, 7 Feb 2009 11:36:40 -0500 -Subject: [PATCH 07/51] emit "ConversationStopped" signal at end of conv +Subject: [PATCH 07/50] emit "ConversationStopped" signal at end of conv This will allow us to track when individual PAM conversations fail, instead of doing one @@ -6122,10 +6122,10 @@ index 6d0dd87..976f0b7 100644 const char *text); void gdm_greeter_server_default_language_name_changed (GdmGreeterServer *greeter_server, diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c -index b6c43f7..c8a7a36 100644 +index 4789e1d..d41668c 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c -@@ -1697,9 +1697,15 @@ worker_exited (GdmSessionWorkerJob *job, +@@ -1736,9 +1736,15 @@ worker_exited (GdmSessionWorkerJob *job, { g_debug ("GdmSessionDirect: Worker job exited: %d", code); @@ -6141,7 +6141,7 @@ index b6c43f7..c8a7a36 100644 } static void -@@ -1709,9 +1715,15 @@ worker_died (GdmSessionWorkerJob *job, +@@ -1748,9 +1754,15 @@ worker_died (GdmSessionWorkerJob *job, { g_debug ("GdmSessionDirect: Worker job died: %d", signum); @@ -6157,7 +6157,7 @@ index b6c43f7..c8a7a36 100644 } static GdmSessionConversation * -@@ -1784,6 +1796,10 @@ stop_conversation (GdmSessionConversation *conversation) +@@ -1823,6 +1835,10 @@ stop_conversation (GdmSessionConversation *conversation) g_object_unref (conversation->job); conversation->job = NULL; @@ -6168,7 +6168,7 @@ index b6c43f7..c8a7a36 100644 } static void -@@ -1804,6 +1820,25 @@ gdm_session_direct_start_conversation (GdmSession *session, +@@ -1843,6 +1859,25 @@ gdm_session_direct_start_conversation (GdmSession *session, } static void @@ -6194,7 +6194,7 @@ index b6c43f7..c8a7a36 100644 send_setup (GdmSessionDirect *session, const char *service_name) { -@@ -2678,6 +2713,7 @@ static void +@@ -2717,6 +2752,7 @@ static void gdm_session_iface_init (GdmSessionIface *iface) { iface->start_conversation = gdm_session_direct_start_conversation; @@ -6307,7 +6307,7 @@ index db5fc4a..c45a770 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 9b06218..2cbde68 100644 +index 7c2f384..79a05b8 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c @@ -230,8 +230,7 @@ on_session_setup_failed (GdmSession *session, @@ -6341,7 +6341,7 @@ index 9b06218..2cbde68 100644 } static gboolean -@@ -465,9 +463,8 @@ on_session_accreditation_failed (GdmSession *session, +@@ -471,9 +469,8 @@ on_session_accreditation_failed (GdmSession *session, when Xorg exits it switches to the VT it was started from. That interferes with fast user switching. */ @@ -6352,7 +6352,7 @@ index 9b06218..2cbde68 100644 } static void -@@ -553,6 +550,23 @@ on_session_conversation_started (GdmSession *session, +@@ -559,6 +556,23 @@ on_session_conversation_started (GdmSession *session, } static void @@ -6376,7 +6376,7 @@ index 9b06218..2cbde68 100644 on_session_selected_user_changed (GdmSession *session, const char *text, GdmSimpleSlave *slave) -@@ -641,6 +655,10 @@ create_new_session (GdmSimpleSlave *slave) +@@ -647,6 +661,10 @@ create_new_session (GdmSimpleSlave *slave) G_CALLBACK (on_session_conversation_started), slave); g_signal_connect (slave->priv->session, @@ -6388,23 +6388,23 @@ index 9b06218..2cbde68 100644 G_CALLBACK (on_session_setup_complete), slave); -- -1.6.5.2 +1.6.6 -From 53fc840f23483b97af812a61011b6bd783aa44dd Mon Sep 17 00:00:00 2001 +From 071750dba80749084941ee2fcb7eb3544c5679ed Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 26 Oct 2009 10:17:49 -0400 -Subject: [PATCH 08/51] init session pid to -1 +Subject: [PATCH 08/50] init session pid to -1 --- daemon/gdm-session-direct.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c -index c8a7a36..46a0e73 100644 +index d41668c..700a6c6 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c -@@ -2291,7 +2291,6 @@ gdm_session_direct_close (GdmSession *session) +@@ -2330,7 +2330,6 @@ gdm_session_direct_close (GdmSession *session) g_hash_table_remove_all (impl->priv->environment); @@ -6413,13 +6413,13 @@ index c8a7a36..46a0e73 100644 } -- -1.6.5.2 +1.6.6 -From b255c1e5eb8c771f7fe809589fbe6a29b587cdd1 Mon Sep 17 00:00:00 2001 +From 26aafd77a748a0954e65e9777846e044c4edc301 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 9 Mar 2009 15:41:12 -0400 -Subject: [PATCH 09/51] Don't tear down greeter until pam_open_session finishes +Subject: [PATCH 09/50] Don't tear down greeter until pam_open_session finishes Some PAM modules ask questions at that late stage of the game, and so we need a greeter to forward the questions on to the @@ -6547,10 +6547,10 @@ index dd2e1bc..93d83a1 100644 "info", G_CALLBACK (on_session_info), diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c -index 46a0e73..dbafe0e 100644 +index 700a6c6..54c832d 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c -@@ -940,6 +940,58 @@ gdm_session_direct_handle_problem (GdmSessionDirect *session, +@@ -979,6 +979,58 @@ gdm_session_direct_handle_problem (GdmSessionDirect *session, } static DBusHandlerResult @@ -6609,7 +6609,7 @@ index 46a0e73..dbafe0e 100644 gdm_session_direct_handle_session_started (GdmSessionDirect *session, GdmSessionConversation *conversation, DBusMessage *message) -@@ -1206,6 +1258,10 @@ session_worker_message (DBusConnection *connection, +@@ -1245,6 +1297,10 @@ session_worker_message (DBusConnection *connection, return gdm_session_direct_handle_accreditation_failed (session, conversation, message); } else if (dbus_message_is_method_call (message, GDM_SESSION_DBUS_INTERFACE, "UsernameChanged")) { return gdm_session_direct_handle_username_changed (session, conversation, message); @@ -6620,7 +6620,7 @@ index 46a0e73..dbafe0e 100644 } else if (dbus_message_is_method_call (message, GDM_SESSION_DBUS_INTERFACE, "SessionStarted")) { return gdm_session_direct_handle_session_started (session, conversation, message); } else if (dbus_message_is_method_call (message, GDM_SESSION_DBUS_INTERFACE, "StartFailed")) { -@@ -2189,6 +2245,19 @@ setup_session_environment (GdmSessionDirect *session) +@@ -2228,6 +2284,19 @@ setup_session_environment (GdmSessionDirect *session) } static void @@ -6640,7 +6640,7 @@ index 46a0e73..dbafe0e 100644 gdm_session_direct_start_session (GdmSession *session, const char *service_name) { -@@ -2718,6 +2787,7 @@ gdm_session_iface_init (GdmSessionIface *iface) +@@ -2757,6 +2826,7 @@ gdm_session_iface_init (GdmSessionIface *iface) iface->authenticate = gdm_session_direct_authenticate; iface->authorize = gdm_session_direct_authorize; iface->accredit = gdm_session_direct_accredit; @@ -6765,10 +6765,10 @@ index 6e15f75..3bf8ed7 100644 iface->cancel = gdm_session_relay_cancel; diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c -index bcd4f93..867ce67 100644 +index 80844b4..8bc51a5 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c -@@ -2442,13 +2442,13 @@ do_open_session (GdmSessionWorker *worker) +@@ -2450,13 +2450,13 @@ do_open_session (GdmSessionWorker *worker) res = gdm_session_worker_open_user_session (worker, &error); if (! res) { send_dbus_string_method (worker->priv->connection, @@ -6784,7 +6784,7 @@ index bcd4f93..867ce67 100644 } static void -@@ -2564,7 +2564,7 @@ on_start_program (GdmSessionWorker *worker, +@@ -2572,7 +2572,7 @@ on_start_program (GdmSessionWorker *worker, const char *text; dbus_bool_t res; @@ -6793,7 +6793,7 @@ index bcd4f93..867ce67 100644 g_debug ("GdmSessionWorker: ignoring spurious start program while in state %s", get_state_name (worker->priv->state)); return; } -@@ -2723,6 +2723,14 @@ on_establish_credentials (GdmSessionWorker *worker, +@@ -2731,6 +2731,14 @@ on_establish_credentials (GdmSessionWorker *worker, } static void @@ -6808,7 +6808,7 @@ index bcd4f93..867ce67 100644 on_reauthenticate (GdmSessionWorker *worker, DBusMessage *message) { -@@ -2794,6 +2802,8 @@ worker_dbus_handle_message (DBusConnection *connection, +@@ -2802,6 +2810,8 @@ worker_dbus_handle_message (DBusConnection *connection, on_authorize (worker, message); } else if (dbus_message_is_signal (message, GDM_SESSION_DBUS_INTERFACE, "EstablishCredentials")) { on_establish_credentials (worker, message); @@ -6934,10 +6934,10 @@ index c45a770..22c2ccb 100644 const char *service_name); void gdm_session_close (GdmSession *session); diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index 2cbde68..a76c17f 100644 +index 79a05b8..d79bcbb 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -428,7 +428,7 @@ on_session_accredited (GdmSession *session, +@@ -434,7 +434,7 @@ on_session_accredited (GdmSession *session, const char *service_name, GdmSimpleSlave *slave) { @@ -6946,7 +6946,7 @@ index 2cbde68..a76c17f 100644 } static void -@@ -468,6 +468,29 @@ on_session_accreditation_failed (GdmSession *session, +@@ -474,6 +474,29 @@ on_session_accreditation_failed (GdmSession *session, } static void @@ -6976,7 +6976,7 @@ index 2cbde68..a76c17f 100644 on_session_info (GdmSession *session, const char *service_name, const char *text, -@@ -699,6 +722,14 @@ create_new_session (GdmSimpleSlave *slave) +@@ -705,6 +728,14 @@ create_new_session (GdmSimpleSlave *slave) G_CALLBACK (on_session_accreditation_failed), slave); g_signal_connect (slave->priv->session, @@ -6992,30 +6992,29 @@ index 2cbde68..a76c17f 100644 G_CALLBACK (on_session_info), slave); -- -1.6.5.2 +1.6.6 -From b3bdfcc2a7d2ef472867fc485ce1e3771b1aad86 Mon Sep 17 00:00:00 2001 +From 812afba27dc8ed276da91b6c832c78d9c91a1c7d Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 30 Jan 2009 23:57:31 -0500 -Subject: [PATCH 10/51] Add limited support for multiple pam stacks +Subject: [PATCH 10/50] Add limited support for multiple pam stacks This hard codes 3 pam stacks and doesn't handle switching between them very well yet. --- - gui/simple-greeter/Makefile.am | 4 + - gui/simple-greeter/gdm-greeter-login-window.c | 91 +++++++++-- - gui/simple-greeter/gdm-greeter-login-window.glade | 39 ++++- - gui/simple-greeter/gdm-greeter-login-window.h | 11 +- - gui/simple-greeter/gdm-greeter-session.c | 30 +++- - gui/simple-greeter/gdm-task-list.c | 198 +++++++++++++++++++++ - gui/simple-greeter/gdm-task-list.h | 64 +++++++ - 7 files changed, 409 insertions(+), 28 deletions(-) + gui/simple-greeter/Makefile.am | 4 + + gui/simple-greeter/gdm-greeter-login-window.c | 91 ++++++++++-- + gui/simple-greeter/gdm-greeter-login-window.h | 11 ++- + gui/simple-greeter/gdm-greeter-session.c | 30 +++- + gui/simple-greeter/gdm-task-list.c | 198 +++++++++++++++++++++++++ + gui/simple-greeter/gdm-task-list.h | 64 ++++++++ + 6 files changed, 378 insertions(+), 20 deletions(-) create mode 100644 gui/simple-greeter/gdm-task-list.c create mode 100644 gui/simple-greeter/gdm-task-list.h diff --git a/gui/simple-greeter/Makefile.am b/gui/simple-greeter/Makefile.am -index 1fa87cf..b85873f 100644 +index ee06ea0..1ad22b4 100644 --- a/gui/simple-greeter/Makefile.am +++ b/gui/simple-greeter/Makefile.am @@ -85,6 +85,8 @@ test_greeter_login_window_SOURCES = \ @@ -7037,10 +7036,10 @@ index 1fa87cf..b85873f 100644 gdm_simple_greeter_LDADD = \ diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 8de74df..9c847f0 100644 +index 25af747..36ba360 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -51,12 +51,16 @@ +@@ -50,12 +50,16 @@ #include #include @@ -7057,15 +7056,15 @@ index 8de74df..9c847f0 100644 #ifdef HAVE_PAM #include -@@ -99,6 +103,7 @@ struct GdmGreeterLoginWindowPrivate +@@ -98,6 +102,7 @@ struct GdmGreeterLoginWindowPrivate { - GladeXML *xml; + GtkBuilder *builder; GtkWidget *user_chooser; + GtkWidget *conversation_list; GtkWidget *auth_banner_label; guint display_is_local : 1; guint is_interactive : 1; -@@ -126,6 +131,7 @@ enum { +@@ -125,6 +130,7 @@ enum { }; enum { @@ -7073,7 +7072,7 @@ index 8de74df..9c847f0 100644 BEGIN_AUTO_LOGIN, BEGIN_VERIFICATION, BEGIN_VERIFICATION_FOR_USER, -@@ -355,7 +361,7 @@ on_login_button_clicked_answer_query (GtkButton *button, +@@ -354,7 +360,7 @@ on_login_button_clicked_answer_query (GtkButton *button, text = gtk_entry_get_text (GTK_ENTRY (entry)); _gdm_greeter_login_window_set_interactive (login_window, TRUE); @@ -7082,7 +7081,7 @@ index 8de74df..9c847f0 100644 } static void -@@ -602,26 +608,32 @@ gdm_greeter_login_window_reset (GdmGreeterLoginWindow *login_window) +@@ -599,26 +605,32 @@ gdm_greeter_login_window_reset (GdmGreeterLoginWindow *login_window) gboolean gdm_greeter_login_window_info (GdmGreeterLoginWindow *login_window, @@ -7117,7 +7116,7 @@ index 8de74df..9c847f0 100644 gdk_window_beep (GTK_WIDGET (login_window)->window); return TRUE; -@@ -697,6 +709,7 @@ gdm_greeter_login_window_start_session_when_ready (GdmGreeterLoginWindow *login_ +@@ -694,6 +706,7 @@ gdm_greeter_login_window_start_session_when_ready (GdmGreeterLoginWindow *login_ gboolean gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window, @@ -7125,7 +7124,7 @@ index 8de74df..9c847f0 100644 const char *text) { GtkWidget *entry; -@@ -704,6 +717,10 @@ gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window, +@@ -701,6 +714,10 @@ gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window, g_return_val_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window), FALSE); @@ -7135,8 +7134,8 @@ index 8de74df..9c847f0 100644 + g_debug ("GdmGreeterLoginWindow: info query: %s", text); - entry = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-entry"); -@@ -726,6 +743,7 @@ gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window, + entry = GTK_WIDGET (gtk_builder_get_object (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->builder, "auth-prompt-entry")); +@@ -723,6 +740,7 @@ gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window, gboolean gdm_greeter_login_window_secret_info_query (GdmGreeterLoginWindow *login_window, @@ -7144,7 +7143,7 @@ index 8de74df..9c847f0 100644 const char *text) { GtkWidget *entry; -@@ -858,7 +876,10 @@ on_user_chosen (GdmUserChooserWidget *user_chooser, +@@ -855,7 +873,10 @@ on_user_chosen (GdmUserChooserWidget *user_chooser, 0, user_name); if (strcmp (user_name, GDM_USER_CHOOSER_USER_OTHER) == 0) { @@ -7156,7 +7155,7 @@ index 8de74df..9c847f0 100644 } else if (strcmp (user_name, GDM_USER_CHOOSER_USER_GUEST) == 0) { /* FIXME: handle guest account stuff */ } else if (strcmp (user_name, GDM_USER_CHOOSER_USER_AUTO) == 0) { -@@ -872,7 +893,10 @@ on_user_chosen (GdmUserChooserWidget *user_chooser, +@@ -869,7 +890,10 @@ on_user_chosen (GdmUserChooserWidget *user_chooser, set_log_in_button_mode (login_window, LOGIN_BUTTON_TIMED_LOGIN); set_message (login_window, _("Select language and click Log In")); } else { @@ -7168,7 +7167,7 @@ index 8de74df..9c847f0 100644 } switch_mode (login_window, MODE_AUTHENTICATION); -@@ -1035,6 +1059,21 @@ create_computer_info (GdmGreeterLoginWindow *login_window) +@@ -1032,6 +1056,20 @@ create_computer_info (GdmGreeterLoginWindow *login_window) #define INVISIBLE_CHAR_BULLET 0x2022 #define INVISIBLE_CHAR_NONE 0 @@ -7186,25 +7185,18 @@ index 8de74df..9c847f0 100644 +{ + g_debug ("GdmGreeterLoginWindow: conversation '%s' now in background", name); +} -+ - static GtkWidget * - custom_widget_constructor (GladeXML *xml, - char *func_name, -@@ -1057,6 +1096,8 @@ custom_widget_constructor (GladeXML *xml, - if (strcmp (name, "user-chooser") == 0) { - widget = gdm_user_chooser_widget_new (); -+ } else if (strcmp (name, "conversation-list") == 0) { -+ widget = gdm_task_list_new (); - } - - gdm_profile_end (NULL); -@@ -1135,6 +1176,25 @@ load_theme (GdmGreeterLoginWindow *login_window) + static void + load_theme (GdmGreeterLoginWindow *login_window) +@@ -1106,6 +1144,28 @@ load_theme (GdmGreeterLoginWindow *login_window) gtk_widget_show (login_window->priv->user_chooser); -+ login_window->priv->conversation_list = glade_xml_get_widget (login_window->priv->xml, -+ "conversation-list"); ++ /* FIXME: task list should implement GtkBuildable and this should get dropped ++ */ ++ login_window->priv->conversation_list = gdm_task_list_new (); ++ gtk_box_pack_start (GTK_BOX (box), login_window->priv->conversation_list, TRUE, TRUE, 0); ++ + g_signal_connect_swapped (GDM_TASK_LIST (login_window->priv->conversation_list), + "activated", + G_CALLBACK (on_task_activated), @@ -7222,10 +7214,10 @@ index 8de74df..9c847f0 100644 + gdm_task_list_add_task (GDM_TASK_LIST (login_window->priv->conversation_list), + "smartcard-auth", "badge-small"); + - login_window->priv->auth_banner_label = glade_xml_get_widget (login_window->priv->xml, "auth-banner-label"); + login_window->priv->auth_banner_label = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "auth-banner-label")); /*make_label_small_italic (login_window->priv->auth_banner_label);*/ -@@ -1305,6 +1365,15 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) +@@ -1276,6 +1336,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; @@ -7241,7 +7233,7 @@ index 8de74df..9c847f0 100644 signals [BEGIN_AUTO_LOGIN] = g_signal_new ("begin-auto-login", G_TYPE_FROM_CLASS (object_class), -@@ -1321,9 +1390,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) +@@ -1292,9 +1361,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) G_STRUCT_OFFSET (GdmGreeterLoginWindowClass, begin_verification), NULL, NULL, @@ -7253,7 +7245,7 @@ index 8de74df..9c847f0 100644 signals [BEGIN_VERIFICATION_FOR_USER] = g_signal_new ("begin-verification-for-user", G_TYPE_FROM_CLASS (object_class), -@@ -1331,9 +1400,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) +@@ -1302,9 +1371,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) G_STRUCT_OFFSET (GdmGreeterLoginWindowClass, begin_verification_for_user), NULL, NULL, @@ -7265,7 +7257,7 @@ index 8de74df..9c847f0 100644 signals [QUERY_ANSWER] = g_signal_new ("query-answer", G_TYPE_FROM_CLASS (object_class), -@@ -1341,9 +1410,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) +@@ -1312,9 +1381,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) G_STRUCT_OFFSET (GdmGreeterLoginWindowClass, query_answer), NULL, NULL, @@ -7277,64 +7269,6 @@ index 8de74df..9c847f0 100644 signals [USER_SELECTED] = g_signal_new ("user-selected", G_TYPE_FROM_CLASS (object_class), -diff --git a/gui/simple-greeter/gdm-greeter-login-window.glade b/gui/simple-greeter/gdm-greeter-login-window.glade -index 1bbef32..020e21d 100644 ---- a/gui/simple-greeter/gdm-greeter-login-window.glade -+++ b/gui/simple-greeter/gdm-greeter-login-window.glade -@@ -460,11 +460,38 @@ - 10 - - -- -+ - True -- 0 -- 0 -- Tue, 18 Nov 2008 21:55:38 GMT -+ False -+ 0 -+ -+ -+ -+ True -+ 0 -+ 0 -+ Tue, 18 Nov 2008 21:55:38 GMT -+ -+ -+ 0 -+ True -+ True -+ -+ -+ -+ -+ -+ True -+ 0 -+ 0 -+ Fri, 30 Jan 2009 16:03:30 GMT -+ -+ -+ 0 -+ False -+ False -+ -+ - - - 0 -@@ -590,10 +617,6 @@ - - - -- -- -- -- - - - diff --git a/gui/simple-greeter/gdm-greeter-login-window.h b/gui/simple-greeter/gdm-greeter-login-window.h index 817d0a2..559b26b 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.h @@ -7749,13 +7683,13 @@ index 0000000..ade21b6 + +#endif /* __GDM_TASK_LIST_H */ -- -1.6.5.2 +1.6.6 -From c4e206b1b41ae0dc7ba3989913fd3bd7e15b5588 Mon Sep 17 00:00:00 2001 +From fbfe0ddc59c92b5c37511877b82a458ac3931283 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 6 Mar 2009 11:19:40 -0500 -Subject: [PATCH 11/51] Create session settings object when first starting worker +Subject: [PATCH 11/50] Create session settings object when first starting worker This is because one PAM module may complete before setup gets called on another, and when one completes *all* PAM @@ -7766,10 +7700,10 @@ set by the user. 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c -index 867ce67..9a9f364 100644 +index 8bc51a5..b07a939 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c -@@ -2305,8 +2305,6 @@ do_setup (GdmSessionWorker *worker) +@@ -2313,8 +2313,6 @@ do_setup (GdmSessionWorker *worker) GError *error; gboolean res; @@ -7778,7 +7712,7 @@ index 867ce67..9a9f364 100644 g_signal_connect_swapped (worker->priv->user_settings, "notify::language-name", G_CALLBACK (on_saved_language_name_read), -@@ -2955,6 +2953,7 @@ gdm_session_worker_init (GdmSessionWorker *worker) +@@ -2963,6 +2961,7 @@ gdm_session_worker_init (GdmSessionWorker *worker) g_str_equal, (GDestroyNotify) g_free, (GDestroyNotify) g_free); @@ -7787,23 +7721,23 @@ index 867ce67..9a9f364 100644 static void -- -1.6.5.2 +1.6.6 -From f98b6cd62fc08d8a355b05d06a2c9b30699d0cde Mon Sep 17 00:00:00 2001 +From 32b001a8254a7123fba925a56fdf6235aea32ad3 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 5 Feb 2009 15:20:25 -0500 -Subject: [PATCH 12/51] Queue a greeter reset when the user clicks cancel +Subject: [PATCH 12/50] Queue a greeter reset when the user clicks cancel --- daemon/gdm-simple-slave.c | 37 +++++++++++++++++++++++++++++++++++++ 1 files changed, 37 insertions(+), 0 deletions(-) diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index a76c17f..a35c184 100644 +index d79bcbb..edc8d8d 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -823,6 +823,9 @@ on_greeter_start_conversation (GdmGreeterServer *greeter_server, +@@ -829,6 +829,9 @@ on_greeter_start_conversation (GdmGreeterServer *greeter_server, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: starting conversation with '%s' pam service'", service_name); @@ -7813,7 +7747,7 @@ index a76c17f..a35c184 100644 gdm_session_start_conversation (GDM_SESSION (slave->priv->session), service_name); } -@@ -833,6 +836,9 @@ on_greeter_begin_verification (GdmGreeterServer *greeter_server, +@@ -839,6 +842,9 @@ on_greeter_begin_verification (GdmGreeterServer *greeter_server, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: begin verification"); @@ -7823,7 +7757,7 @@ index a76c17f..a35c184 100644 gdm_session_setup (GDM_SESSION (slave->priv->session), service_name); } -@@ -843,6 +849,9 @@ on_greeter_begin_auto_login (GdmGreeterServer *greeter_server, +@@ -849,6 +855,9 @@ on_greeter_begin_auto_login (GdmGreeterServer *greeter_server, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: begin auto login for user '%s'", username); @@ -7833,7 +7767,7 @@ index a76c17f..a35c184 100644 gdm_session_setup_for_user (GDM_SESSION (slave->priv->session), "gdm-autologin", username); -@@ -855,6 +864,9 @@ on_greeter_begin_verification_for_user (GdmGreeterServer *greeter_server, +@@ -861,6 +870,9 @@ on_greeter_begin_verification_for_user (GdmGreeterServer *greeter_server, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: begin verification"); @@ -7843,7 +7777,7 @@ index a76c17f..a35c184 100644 gdm_session_setup_for_user (GDM_SESSION (slave->priv->session), service_name, username); -@@ -866,6 +878,9 @@ on_greeter_answer (GdmGreeterServer *greeter_server, +@@ -872,6 +884,9 @@ on_greeter_answer (GdmGreeterServer *greeter_server, const char *text, GdmSimpleSlave *slave) { @@ -7853,7 +7787,7 @@ index a76c17f..a35c184 100644 gdm_session_answer_query (GDM_SESSION (slave->priv->session), service_name, text); } -@@ -874,6 +889,9 @@ on_greeter_session_selected (GdmGreeterServer *greeter_server, +@@ -880,6 +895,9 @@ on_greeter_session_selected (GdmGreeterServer *greeter_server, const char *text, GdmSimpleSlave *slave) { @@ -7863,7 +7797,7 @@ index a76c17f..a35c184 100644 gdm_session_select_session (GDM_SESSION (slave->priv->session), text); } -@@ -882,6 +900,9 @@ on_greeter_language_selected (GdmGreeterServer *greeter_server, +@@ -888,6 +906,9 @@ on_greeter_language_selected (GdmGreeterServer *greeter_server, const char *text, GdmSimpleSlave *slave) { @@ -7873,7 +7807,7 @@ index a76c17f..a35c184 100644 gdm_session_select_language (GDM_SESSION (slave->priv->session), text); } -@@ -890,6 +911,9 @@ on_greeter_layout_selected (GdmGreeterServer *greeter_server, +@@ -896,6 +917,9 @@ on_greeter_layout_selected (GdmGreeterServer *greeter_server, const char *text, GdmSimpleSlave *slave) { @@ -7883,7 +7817,7 @@ index a76c17f..a35c184 100644 gdm_session_select_layout (GDM_SESSION (slave->priv->session), text); } -@@ -906,7 +930,11 @@ on_greeter_cancel (GdmGreeterServer *greeter_server, +@@ -912,7 +936,11 @@ on_greeter_cancel (GdmGreeterServer *greeter_server, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: Greeter cancelled"); @@ -7895,7 +7829,7 @@ index a76c17f..a35c184 100644 } static void -@@ -916,6 +944,9 @@ on_greeter_connected (GdmGreeterServer *greeter_server, +@@ -922,6 +950,9 @@ on_greeter_connected (GdmGreeterServer *greeter_server, gboolean display_is_local; g_debug ("GdmSimpleSlave: Greeter connected"); @@ -7905,7 +7839,7 @@ index a76c17f..a35c184 100644 g_object_get (slave, "display-is-local", &display_is_local, -@@ -933,6 +964,9 @@ on_start_session_when_ready (GdmGreeterServer *session, +@@ -939,6 +970,9 @@ on_start_session_when_ready (GdmGreeterServer *session, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: Will start session when ready"); @@ -7915,7 +7849,7 @@ index a76c17f..a35c184 100644 slave->priv->start_session_when_ready = TRUE; if (slave->priv->waiting_to_start_session) { -@@ -946,6 +980,9 @@ on_start_session_later (GdmGreeterServer *session, +@@ -952,6 +986,9 @@ on_start_session_later (GdmGreeterServer *session, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: Will start session when ready and told"); @@ -7926,13 +7860,13 @@ index a76c17f..a35c184 100644 } -- -1.6.5.2 +1.6.6 -From 987252d49af223c0c1e616d63484e262622cf3a4 Mon Sep 17 00:00:00 2001 +From 8f99408b3d2510155bb605cfc9bc1e93f871490c Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 6 Feb 2009 16:23:48 -0500 -Subject: [PATCH 13/51] Add a plugin based extension system to greeter +Subject: [PATCH 13/50] Add a plugin based extension system to greeter This allows plugins to drive which PAM conversations get run. This commit just adds one plugin "password" @@ -7941,12 +7875,11 @@ run. --- configure.ac | 44 ++ gui/simple-greeter/Makefile.am | 15 + - gui/simple-greeter/foo.glade | 604 +++++++++++++++++ gui/simple-greeter/gdm-greeter-client.c | 21 + gui/simple-greeter/gdm-greeter-client.h | 2 + - gui/simple-greeter/gdm-greeter-login-window.c | 675 ++++++++++++++++---- - gui/simple-greeter/gdm-greeter-login-window.glade | 150 +---- + gui/simple-greeter/gdm-greeter-login-window.c | 674 ++++++++++++++++---- gui/simple-greeter/gdm-greeter-login-window.h | 21 +- + gui/simple-greeter/gdm-greeter-login-window.ui | 42 +-- gui/simple-greeter/gdm-greeter-plugin.c | 255 ++++++++ gui/simple-greeter/gdm-greeter-plugin.h | 61 ++ gui/simple-greeter/gdm-greeter-session.c | 91 +++- @@ -7970,8 +7903,7 @@ run. gui/simple-greeter/plugins/password/page.ui | 56 ++ gui/simple-greeter/plugins/password/plugin.c | 40 ++ po/POTFILES.in | 1 + - 31 files changed, 3589 insertions(+), 304 deletions(-) - create mode 100644 gui/simple-greeter/foo.glade + 30 files changed, 2956 insertions(+), 224 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 @@ -7993,7 +7925,7 @@ run. create mode 100644 gui/simple-greeter/plugins/password/plugin.c diff --git a/configure.ac b/configure.ac -index dfb5398..6fae130 100644 +index ac00aa7..ae5c12a 100644 --- a/configure.ac +++ b/configure.ac @@ -18,6 +18,22 @@ AC_PROG_CXX @@ -8019,7 +7951,7 @@ index dfb5398..6fae130 100644 AC_HEADER_STDC AC_SUBST(VERSION) -@@ -195,6 +211,15 @@ AC_ARG_WITH(dmconfdir, +@@ -192,6 +208,15 @@ AC_ARG_WITH(dmconfdir, AC_SUBST(dmconfdir) dnl --------------------------------------------------------------------------- @@ -8035,7 +7967,7 @@ index dfb5398..6fae130 100644 dnl - Configure arguments dnl --------------------------------------------------------------------------- -@@ -1252,6 +1277,21 @@ fi +@@ -1262,6 +1287,21 @@ fi AC_SUBST(GDM_SCREENSHOT_DIR) @@ -8057,7 +7989,7 @@ index dfb5398..6fae130 100644 dnl --------------------------------------------------------------------------- dnl - Finish -@@ -1380,6 +1420,10 @@ docs/Makefile +@@ -1390,6 +1430,10 @@ docs/Makefile gui/Makefile gui/simple-greeter/Makefile gui/simple-greeter/libnotificationarea/Makefile @@ -8069,7 +8001,7 @@ index dfb5398..6fae130 100644 gui/user-switch-applet/Makefile utils/Makefile diff --git a/gui/simple-greeter/Makefile.am b/gui/simple-greeter/Makefile.am -index b85873f..133e034 100644 +index 1ad22b4..636fc77 100644 --- a/gui/simple-greeter/Makefile.am +++ b/gui/simple-greeter/Makefile.am @@ -2,11 +2,14 @@ NULL = @@ -8142,618 +8074,8 @@ index b85873f..133e034 100644 $(COMMON_LIBS) \ $(EXTRA_GREETER_LIBS) \ $(SIMPLE_GREETER_LIBS) \ -diff --git a/gui/simple-greeter/foo.glade b/gui/simple-greeter/foo.glade -new file mode 100644 -index 0000000..7c767d2 ---- /dev/null -+++ b/gui/simple-greeter/foo.glade -@@ -0,0 +1,604 @@ -+ -+ -+ -+ -+ -+ -+ 400 -+ True -+ Authentication Dialog -+ GTK_WINDOW_TOPLEVEL -+ GTK_WIN_POS_NONE -+ False -+ True -+ False -+ True -+ False -+ False -+ GDK_WINDOW_TYPE_HINT_DIALOG -+ GDK_GRAVITY_NORTH_WEST -+ True -+ False -+ -+ -+ -+ True -+ 0 -+ 0.5 -+ GTK_SHADOW_OUT -+ -+ -+ -+ 24 -+ True -+ 0.5 -+ 0.5 -+ 1 -+ 1 -+ 0 -+ 0 -+ 0 -+ 0 -+ -+ -+ -+ True -+ False -+ 10 -+ -+ -+ -+ True -+ 0.5 -+ 0.5 -+ 1 -+ 1 -+ 0 -+ 0 -+ 0 -+ 0 -+ -+ -+ -+ True -+ computer -+ 64 -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ -+ -+ -+ -+ 0 -+ False -+ False -+ -+ -+ -+ -+ -+ True -+ False -+ False -+ -+ -+ -+ True -+ False -+ False -+ GTK_POS_TOP -+ False -+ False -+ -+ -+ -+ True -+ Computer Name -+ False -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ False -+ True -+ -+ -+ -+ -+ -+ True -+ page 5 -+ False -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ tab -+ -+ -+ -+ -+ -+ True -+ Version -+ False -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ False -+ True -+ -+ -+ -+ -+ -+ True -+ -+ False -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ tab -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ True -+ -+ False -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ tab -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ True -+ -+ False -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ tab -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ True -+ -+ False -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ tab -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ True -+ -+ False -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ tab -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ True -+ -+ False -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ tab -+ -+ -+ -+ -+ -+ -+ 0 -+ False -+ False -+ -+ -+ -+ -+ -+ True -+ GTK_BUTTONBOX_END -+ 6 -+ -+ -+ -+ True -+ True -+ gtk-cancel -+ True -+ GTK_RELIEF_NORMAL -+ True -+ -+ -+ -+ -+ -+ True -+ True -+ True -+ True -+ GTK_RELIEF_NORMAL -+ True -+ -+ -+ -+ True -+ False -+ 0 -+ -+ -+ -+ True -+ go-home -+ 16 -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ -+ -+ 0 -+ True -+ True -+ -+ -+ -+ -+ -+ True -+ Log In -+ False -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ 0 -+ True -+ True -+ -+ -+ -+ -+ -+ -+ -+ -+ 0 -+ False -+ False -+ GTK_PACK_END -+ -+ -+ -+ -+ -+ True -+ -+ False -+ False -+ GTK_JUSTIFY_CENTER -+ True -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ 0 -+ True -+ True -+ -+ -+ -+ -+ -+ True -+ 0.5 -+ 0.5 -+ 1 -+ 1 -+ 0 -+ 0 -+ 0 -+ 0 -+ -+ -+ -+ True -+ False -+ 10 -+ -+ -+ -+ True -+ 0 -+ 0 -+ Tue, 18 Nov 2008 21:55:38 GMT -+ -+ -+ 0 -+ True -+ True -+ -+ -+ -+ -+ -+ True -+ False -+ 6 -+ -+ -+ -+ True -+ -+ False -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ -+ -+ -+ 0 -+ False -+ False -+ -+ -+ -+ -+ -+ True -+ True -+ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK -+ True -+ True -+ 0 -+ -+ True -+ True -+ -+ -+ -+ -+ -+ 0 -+ True -+ True -+ -+ -+ -+ -+ -+ -+ -+ -+ 0 -+ False -+ False -+ -+ -+ -+ -+ -+ True -+ False -+ 0 -+ -+ -+ -+ True -+ -+ False -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ -+ -+ -+ 0 -+ True -+ True -+ -+ -+ -+ -+ 0 -+ False -+ False -+ -+ -+ -+ -+ -+ -+ 0 -+ True -+ True -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ diff --git a/gui/simple-greeter/gdm-greeter-client.c b/gui/simple-greeter/gdm-greeter-client.c -index 0bd27a9..a9321aa 100644 +index 0891e8b..12572fe 100644 --- a/gui/simple-greeter/gdm-greeter-client.c +++ b/gui/simple-greeter/gdm-greeter-client.c @@ -64,6 +64,7 @@ enum { @@ -8819,7 +8141,7 @@ index 2f857dc..f879307 100644 void (* selected_user_changed) (GdmGreeterClient *client, const char *username); diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 9c847f0..af8ff82 100644 +index 36ba360..a51184f 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c @@ -1,7 +1,7 @@ @@ -8841,7 +8163,7 @@ index 9c847f0..af8ff82 100644 */ #include "config.h" -@@ -105,6 +108,7 @@ struct GdmGreeterLoginWindowPrivate +@@ -104,6 +107,7 @@ struct GdmGreeterLoginWindowPrivate GtkWidget *user_chooser; GtkWidget *conversation_list; GtkWidget *auth_banner_label; @@ -8849,7 +8171,7 @@ index 9c847f0..af8ff82 100644 guint display_is_local : 1; guint is_interactive : 1; guint user_chooser_loaded : 1; -@@ -156,6 +160,8 @@ static void on_user_unchosen (GdmUserChooserWidget *user_chooser, +@@ -155,6 +159,8 @@ static void on_user_unchosen (GdmUserChooserWidget *user_chooser, static void switch_mode (GdmGreeterLoginWindow *login_window, int number); static void update_banner_message (GdmGreeterLoginWindow *login_window); @@ -8858,23 +8180,23 @@ index 9c847f0..af8ff82 100644 G_DEFINE_TYPE (GdmGreeterLoginWindow, gdm_greeter_login_window, GTK_TYPE_WINDOW) -@@ -181,9 +187,6 @@ set_sensitive (GdmGreeterLoginWindow *login_window, +@@ -180,9 +186,6 @@ set_sensitive (GdmGreeterLoginWindow *login_window, { GtkWidget *box; -- box = glade_xml_get_widget (login_window->priv->xml, "auth-input-box"); +- box = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "auth-input-box")); - gtk_widget_set_sensitive (box, sensitive); - - box = glade_xml_get_widget (login_window->priv->xml, "buttonbox"); + box = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "buttonbox")); gtk_widget_set_sensitive (box, sensitive); -@@ -193,27 +196,43 @@ set_sensitive (GdmGreeterLoginWindow *login_window, +@@ -192,27 +195,43 @@ set_sensitive (GdmGreeterLoginWindow *login_window, static void set_focus (GdmGreeterLoginWindow *login_window) { - GtkWidget *entry; - -- entry = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-entry"); +- entry = GTK_WIDGET (gtk_builder_get_object (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->builder, "auth-prompt-entry")); + GdmTask *task; gdk_window_focus (GTK_WIDGET (login_window)->window, GDK_CURRENT_TIME); @@ -8911,7 +8233,7 @@ index 9c847f0..af8ff82 100644 - GtkWidget *label; + g_return_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window)); -- label = glade_xml_get_widget (login_window->priv->xml, "auth-message-label"); +- label = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "auth-message-label")); - gtk_label_set_text (GTK_LABEL (label), text); + gdm_task_list_foreach_task (GDM_TASK_LIST (login_window->priv->conversation_list), + (GdmTaskListForeachFunc) @@ -8920,7 +8242,7 @@ index 9c847f0..af8ff82 100644 } static void -@@ -348,30 +367,76 @@ sensitize_widget (GdmGreeterLoginWindow *login_window, +@@ -347,30 +366,76 @@ sensitize_widget (GdmGreeterLoginWindow *login_window, } static void @@ -8935,7 +8257,7 @@ index 9c847f0..af8ff82 100644 set_busy (login_window); set_sensitive (login_window, FALSE); -- entry = glade_xml_get_widget (login_window->priv->xml, "auth-prompt-entry"); +- entry = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "auth-prompt-entry")); - text = gtk_entry_get_text (GTK_ENTRY (entry)); - _gdm_greeter_login_window_set_interactive (login_window, TRUE); @@ -8950,7 +8272,8 @@ index 9c847f0..af8ff82 100644 - set_busy (login_window); - set_sensitive (login_window, FALSE); + GtkActionGroup *actions; -+ + +- _gdm_greeter_login_window_set_interactive (login_window, TRUE); + actions = gdm_conversation_get_actions (GDM_CONVERSATION (task)); + + if (actions != NULL) { @@ -8992,8 +8315,7 @@ index 9c847f0..af8ff82 100644 + break; + } + } - -- _gdm_greeter_login_window_set_interactive (login_window, TRUE); ++ +} + +static void @@ -9011,15 +8333,15 @@ index 9c847f0..af8ff82 100644 } static void on_login_button_clicked_start_other (GtkButton *button, -@@ -390,6 +455,7 @@ set_log_in_button_mode (GdmGreeterLoginWindow *login_window, +@@ -389,6 +454,7 @@ set_log_in_button_mode (GdmGreeterLoginWindow *login_window, int mode) { GtkWidget *button; + GdmTask *task; - button = glade_xml_get_widget (login_window->priv->xml, "log-in-button"); + button = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "log-in-button")); gtk_widget_grab_default (button); -@@ -402,6 +468,12 @@ set_log_in_button_mode (GdmGreeterLoginWindow *login_window, +@@ -401,6 +467,12 @@ set_log_in_button_mode (GdmGreeterLoginWindow *login_window, switch (mode) { case LOGIN_BUTTON_HIDDEN: @@ -9032,7 +8354,7 @@ index 9c847f0..af8ff82 100644 gtk_widget_hide (button); break; case LOGIN_BUTTON_START_OTHER: -@@ -409,11 +481,18 @@ set_log_in_button_mode (GdmGreeterLoginWindow *login_window, +@@ -408,11 +480,18 @@ set_log_in_button_mode (GdmGreeterLoginWindow *login_window, gtk_widget_show (button); break; case LOGIN_BUTTON_ANSWER_QUERY: @@ -9053,7 +8375,7 @@ index 9c847f0..af8ff82 100644 gtk_widget_show (button); break; default: -@@ -460,8 +539,7 @@ switch_mode (GdmGreeterLoginWindow *login_window, +@@ -458,8 +537,7 @@ switch_mode (GdmGreeterLoginWindow *login_window, set_log_in_button_mode (login_window, LOGIN_BUTTON_HIDDEN); show_widget (login_window, "cancel-button", FALSE); @@ -9063,7 +8385,7 @@ index 9c847f0..af8ff82 100644 sensitize_widget (login_window, "disconnect-button", FALSE); -@@ -470,6 +548,7 @@ switch_mode (GdmGreeterLoginWindow *login_window, +@@ -468,6 +546,7 @@ switch_mode (GdmGreeterLoginWindow *login_window, case MODE_AUTHENTICATION: show_widget (login_window, "cancel-button", TRUE); show_widget (login_window, "disconnect-button", FALSE); @@ -9071,7 +8393,7 @@ index 9c847f0..af8ff82 100644 default_name = "log-in-button"; break; default: -@@ -508,25 +587,40 @@ switch_mode (GdmGreeterLoginWindow *login_window, +@@ -505,25 +584,40 @@ switch_mode (GdmGreeterLoginWindow *login_window, } } @@ -9081,19 +8403,12 @@ index 9c847f0..af8ff82 100644 +task_has_service_name (GdmTaskList *task_list, + GdmTask *task, + const char *service_name) - { -- const char *typed_text; -- char *null_text; ++{ + char *task_service_name; + gboolean has_service_name; + + task_service_name = gdm_conversation_get_service_name (GDM_CONVERSATION (task)); - -- /* try to scrub out any secret info */ -- typed_text = gtk_entry_get_text (GTK_ENTRY (entry)); -- null_text = g_strnfill (strlen (typed_text) + 1, '\b'); -- gtk_entry_set_text (GTK_ENTRY (entry), null_text); -- gtk_entry_set_text (GTK_ENTRY (entry), ""); ++ + has_service_name = strcmp (service_name, task_service_name) == 0; + g_free (task_service_name); + @@ -9104,9 +8419,16 @@ index 9c847f0..af8ff82 100644 +reset_task (GdmTaskList *task_list, + GdmTask *task, + GdmGreeterLoginWindow *login_window) -+{ + { +- const char *typed_text; +- char *null_text; + char *name; -+ + +- /* try to scrub out any secret info */ +- typed_text = gtk_entry_get_text (GTK_ENTRY (entry)); +- null_text = g_strnfill (strlen (typed_text) + 1, '\b'); +- gtk_entry_set_text (GTK_ENTRY (entry), null_text); +- gtk_entry_set_text (GTK_ENTRY (entry), ""); + name = gdm_task_get_name (task); + g_debug ("Resetting task '%s'", name); + g_free (name); @@ -9124,28 +8446,28 @@ index 9c847f0..af8ff82 100644 g_debug ("GdmGreeterLoginWindow: Resetting dialog"); set_busy (login_window); set_sensitive (login_window, FALSE); -@@ -550,16 +644,12 @@ reset_dialog (GdmGreeterLoginWindow *login_window) +@@ -547,16 +641,13 @@ reset_dialog (GdmGreeterLoginWindow *login_window) login_window->priv->start_session_handler_id = 0; } -- entry = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-entry"); +- entry = GTK_WIDGET (gtk_builder_get_object (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->builder, "auth-prompt-entry")); +- +- delete_entry_text (entry); + gdm_task_list_foreach_task (GDM_TASK_LIST (login_window->priv->conversation_list), + (GdmTaskListForeachFunc) + reset_task, + login_window); -- delete_entry_text (entry); -- - gtk_entry_set_visibility (GTK_ENTRY (entry), TRUE); set_message (login_window, ""); -- -- label = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-label"); + +- 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), ""); - switch_mode (login_window, MODE_SELECTION); set_sensitive (login_window, TRUE); -@@ -583,11 +673,22 @@ do_cancel (GdmGreeterLoginWindow *login_window) +@@ -580,11 +671,22 @@ do_cancel (GdmGreeterLoginWindow *login_window) } gboolean @@ -9170,7 +8492,7 @@ index 9c847f0..af8ff82 100644 set_sensitive (GDM_GREETER_LOGIN_WINDOW (login_window), TRUE); set_ready (GDM_GREETER_LOGIN_WINDOW (login_window)); -@@ -597,12 +698,63 @@ gdm_greeter_login_window_ready (GdmGreeterLoginWindow *login_window) +@@ -594,12 +696,63 @@ gdm_greeter_login_window_ready (GdmGreeterLoginWindow *login_window) } gboolean @@ -9235,7 +8557,7 @@ index 9c847f0..af8ff82 100644 return TRUE; } -@@ -611,12 +763,20 @@ gdm_greeter_login_window_info (GdmGreeterLoginWindow *login_window, +@@ -608,12 +761,20 @@ gdm_greeter_login_window_info (GdmGreeterLoginWindow *login_window, const char *service_name, const char *text) { @@ -9259,7 +8581,7 @@ index 9c847f0..af8ff82 100644 } return TRUE; -@@ -627,13 +787,22 @@ gdm_greeter_login_window_problem (GdmGreeterLoginWindow *login_window, +@@ -624,13 +785,22 @@ gdm_greeter_login_window_problem (GdmGreeterLoginWindow *login_window, const char *service_name, const char *text) { @@ -9285,7 +8607,7 @@ index 9c847f0..af8ff82 100644 gdk_window_beep (GTK_WIDGET (login_window)->window); return TRUE; -@@ -671,11 +840,21 @@ gdm_greeter_login_window_request_timed_login (GdmGreeterLoginWindow *login_windo +@@ -668,11 +838,21 @@ gdm_greeter_login_window_request_timed_login (GdmGreeterLoginWindow *login_windo } static void @@ -9309,7 +8631,7 @@ index 9c847f0..af8ff82 100644 } else { g_debug ("GdmGreeterLoginWindow: not starting session since " "user hasn't had an opportunity to pick language " -@@ -685,8 +864,8 @@ gdm_greeter_login_window_start_session_when_ready (GdmGreeterLoginWindow *login_ +@@ -682,8 +862,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", @@ -9320,7 +8642,7 @@ index 9c847f0..af8ff82 100644 /* FIXME: If the user wasn't asked any questions by pam but * pam still authorized them (passwd -d, or the questions got -@@ -712,26 +891,24 @@ gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window, +@@ -709,26 +889,24 @@ gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window, const char *service_name, const char *text) { @@ -9336,7 +8658,7 @@ index 9c847f0..af8ff82 100644 - g_debug ("GdmGreeterLoginWindow: info query: %s", text); -- entry = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-entry"); +- entry = GTK_WIDGET (gtk_builder_get_object (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->builder, "auth-prompt-entry")); - delete_entry_text (entry); - gtk_entry_set_visibility (GTK_ENTRY (entry), TRUE); - set_log_in_button_mode (login_window, LOGIN_BUTTON_ANSWER_QUERY); @@ -9345,7 +8667,7 @@ index 9c847f0..af8ff82 100644 + task_has_service_name, + (gpointer) service_name); -- label = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-label"); +- 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), text); + if (task != NULL) { + gdm_conversation_ask_question (GDM_CONVERSATION (task), @@ -9358,7 +8680,7 @@ index 9c847f0..af8ff82 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)); -@@ -746,20 +923,23 @@ gdm_greeter_login_window_secret_info_query (GdmGreeterLoginWindow *login_window, +@@ -743,20 +921,23 @@ gdm_greeter_login_window_secret_info_query (GdmGreeterLoginWindow *login_window, const char *service_name, const char *text) { @@ -9369,7 +8691,7 @@ index 9c847f0..af8ff82 100644 g_return_val_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window), FALSE); -- entry = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-entry"); +- entry = GTK_WIDGET (gtk_builder_get_object (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->builder, "auth-prompt-entry")); - delete_entry_text (entry); - gtk_entry_set_visibility (GTK_ENTRY (entry), FALSE); - set_log_in_button_mode (login_window, LOGIN_BUTTON_ANSWER_QUERY); @@ -9378,7 +8700,7 @@ index 9c847f0..af8ff82 100644 + task_has_service_name, + (gpointer) service_name); -- label = glade_xml_get_widget (GDM_GREETER_LOGIN_WINDOW (login_window)->priv->xml, "auth-prompt-label"); +- 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), text); + if (task != NULL) { + gdm_conversation_ask_secret (GDM_CONVERSATION (task), @@ -9391,7 +8713,7 @@ index 9c847f0..af8ff82 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)); -@@ -770,13 +950,16 @@ gdm_greeter_login_window_secret_info_query (GdmGreeterLoginWindow *login_window, +@@ -767,13 +948,16 @@ gdm_greeter_login_window_secret_info_query (GdmGreeterLoginWindow *login_window, } void @@ -9411,7 +8733,7 @@ index 9c847f0..af8ff82 100644 } static void -@@ -859,6 +1042,46 @@ on_users_loaded (GdmUserChooserWidget *user_chooser, +@@ -856,6 +1040,46 @@ on_users_loaded (GdmUserChooserWidget *user_chooser, gdm_chooser_widget_activate_if_one_item (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser)); } @@ -9458,7 +8780,7 @@ index 9c847f0..af8ff82 100644 static void on_user_chosen (GdmUserChooserWidget *user_chooser, GdmGreeterLoginWindow *login_window) -@@ -876,10 +1099,10 @@ on_user_chosen (GdmUserChooserWidget *user_chooser, +@@ -873,10 +1097,10 @@ on_user_chosen (GdmUserChooserWidget *user_chooser, 0, user_name); if (strcmp (user_name, GDM_USER_CHOOSER_USER_OTHER) == 0) { @@ -9473,7 +8795,7 @@ index 9c847f0..af8ff82 100644 } else if (strcmp (user_name, GDM_USER_CHOOSER_USER_GUEST) == 0) { /* FIXME: handle guest account stuff */ } else if (strcmp (user_name, GDM_USER_CHOOSER_USER_AUTO) == 0) { -@@ -893,10 +1116,10 @@ on_user_chosen (GdmUserChooserWidget *user_chooser, +@@ -890,10 +1114,10 @@ on_user_chosen (GdmUserChooserWidget *user_chooser, set_log_in_button_mode (login_window, LOGIN_BUTTON_TIMED_LOGIN); set_message (login_window, _("Select language and click Log In")); } else { @@ -9488,7 +8810,7 @@ index 9c847f0..af8ff82 100644 } switch_mode (login_window, MODE_AUTHENTICATION); -@@ -1061,17 +1284,65 @@ create_computer_info (GdmGreeterLoginWindow *login_window) +@@ -1058,23 +1282,70 @@ create_computer_info (GdmGreeterLoginWindow *login_window) static void on_task_activated (GdmGreeterLoginWindow *login_window, @@ -9558,8 +8880,6 @@ index 9c847f0..af8ff82 100644 + } } - static GtkWidget * -@@ -1108,7 +1379,6 @@ custom_widget_constructor (GladeXML *xml, static void load_theme (GdmGreeterLoginWindow *login_window) { @@ -9567,7 +8887,7 @@ index 9c847f0..af8ff82 100644 GtkWidget *button; GtkWidget *box; GtkWidget *image; -@@ -1188,27 +1458,13 @@ load_theme (GdmGreeterLoginWindow *login_window) +@@ -1159,27 +1430,13 @@ load_theme (GdmGreeterLoginWindow *login_window) login_window); gtk_widget_show (login_window->priv->conversation_list); @@ -9578,14 +8898,14 @@ index 9c847f0..af8ff82 100644 - gdm_task_list_add_task (GDM_TASK_LIST (login_window->priv->conversation_list), - "smartcard-auth", "badge-small"); - - login_window->priv->auth_banner_label = glade_xml_get_widget (login_window->priv->xml, "auth-banner-label"); + login_window->priv->auth_banner_label = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "auth-banner-label")); /*make_label_small_italic (login_window->priv->auth_banner_label);*/ -+ login_window->priv->auth_page_box = glade_xml_get_widget (login_window->priv->xml, "auth-page-box"); ++ login_window->priv->auth_page_box = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "auth-page-box")); - button = glade_xml_get_widget (login_window->priv->xml, "cancel-button"); + button = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "cancel-button")); g_signal_connect (button, "clicked", G_CALLBACK (cancel_button_clicked), login_window); -- entry = glade_xml_get_widget (login_window->priv->xml, "auth-prompt-entry"); +- entry = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "auth-prompt-entry")); - /* Only change the invisible character if it '*' otherwise assume it is OK */ - if ('*' == gtk_entry_get_invisible_char (GTK_ENTRY (entry))) { - gunichar invisible_char; @@ -9595,8 +8915,8 @@ index 9c847f0..af8ff82 100644 - create_computer_info (login_window); - box = glade_xml_get_widget (login_window->priv->xml, "computer-info-event-box"); -@@ -1450,9 +1706,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) + box = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "computer-info-event-box")); +@@ -1421,9 +1678,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) G_STRUCT_OFFSET (GdmGreeterLoginWindowClass, start_session), NULL, NULL, @@ -9608,7 +8928,7 @@ index 9c847f0..af8ff82 100644 g_object_class_install_property (object_class, PROP_DISPLAY_IS_LOCAL, -@@ -1505,6 +1761,187 @@ on_gconf_key_changed (GConfClient *client, +@@ -1476,6 +1733,187 @@ on_gconf_key_changed (GConfClient *client, } } @@ -9727,7 +9047,7 @@ index 9c847f0..af8ff82 100644 + + action_list = gtk_action_group_list_actions (actions); + -+ box = glade_xml_get_widget (login_window->priv->xml, "buttonbox"); ++ box = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "buttonbox")); + for (node = action_list; node != NULL; node = node->next) { + GtkAction *action; + GtkWidget *button; @@ -9796,202 +9116,6 @@ index 9c847f0..af8ff82 100644 static gboolean on_window_state_event (GtkWidget *widget, GdkEventWindowState *event, -diff --git a/gui/simple-greeter/gdm-greeter-login-window.glade b/gui/simple-greeter/gdm-greeter-login-window.glade -index 020e21d..d221d78 100644 ---- a/gui/simple-greeter/gdm-greeter-login-window.glade -+++ b/gui/simple-greeter/gdm-greeter-login-window.glade -@@ -417,30 +417,29 @@ - - - -- -- True -- -- False -- False -- GTK_JUSTIFY_CENTER -- True -- False -- 0.5 -- 0.5 -- 0 -- 0 -- PANGO_ELLIPSIZE_NONE -- -1 -- False -- 0 -- -- -- 0 -- True -- True -- -+ -+ True -+ -+ False -+ False -+ GTK_JUSTIFY_CENTER -+ True -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ 0 -+ False -+ False -+ - -- - - - True -@@ -466,20 +465,6 @@ - 0 - - -- -- True -- 0 -- 0 -- Tue, 18 Nov 2008 21:55:38 GMT -- -- -- 0 -- True -- True -- -- -- -- - - True - 0 -@@ -492,62 +477,12 @@ - False - - -- -- -- 0 -- True -- True -- -- -- -- -- -- True -- False -- 6 -- -- -- -- True -- -- False -- False -- GTK_JUSTIFY_LEFT -- False -- False -- 0.5 -- 0.5 -- 0 -- 0 -- PANGO_ELLIPSIZE_NONE -- -1 -- False -- 0 -- -- -- -- -- -- 0 -- False -- False -- -- - - -- -- True -- True -- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK -- True -- True -- 0 -- -- True -- True -- -- -- -+ -+ 0 -+ 0 -+ Tue, 18 Nov 2008 21:55:38 GMT - - - 0 -@@ -556,46 +491,21 @@ - - - -- -- -- - - - 0 -- False -- False -+ True -+ True - - - - -- -+ - True - False - 0 -- - -- -- True -- -- False -- False -- GTK_JUSTIFY_LEFT -- False -- False -- 0.5 -- 0.5 -- 0 -- 0 -- PANGO_ELLIPSIZE_NONE -- -1 -- False -- 0 -- -- -- 0 -- True -- True -- -+ - - - diff --git a/gui/simple-greeter/gdm-greeter-login-window.h b/gui/simple-greeter/gdm-greeter-login-window.h index 559b26b..c312a47 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.h @@ -10052,6 +9176,67 @@ index 559b26b..c312a47 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 48c6762..4dbd825 100644 +--- a/gui/simple-greeter/gdm-greeter-login-window.ui ++++ b/gui/simple-greeter/gdm-greeter-login-window.ui +@@ -163,30 +163,8 @@ + + + +- ++ + True +- 6 +- +- +- True +- +- +- False +- False +- 0 +- +- +- +- +- True +- True +- GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK +- True +- +- +- 1 +- +- + + + +@@ -194,24 +172,6 @@ + + False + False +- 1 +- +- +- +- +- True +- +- +- True +- +- +- 0 +- +- +- +- +- False +- False + 2 + + diff --git a/gui/simple-greeter/gdm-greeter-plugin.c b/gui/simple-greeter/gdm-greeter-plugin.c new file mode 100644 index 0000000..02814a2 @@ -12724,10 +11909,10 @@ index 0000000..9b87c67 + return GDM_GREETER_EXTENSION (extension); +} diff --git a/po/POTFILES.in b/po/POTFILES.in -index 9fb8a48..3963bd6 100644 +index 1fccb90..7c344c9 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in -@@ -85,6 +85,7 @@ gui/simple-greeter/gdm-timer.c +@@ -84,6 +84,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 @@ -12736,23 +11921,23 @@ index 9fb8a48..3963bd6 100644 gui/user-switch-applet/gdm-entry-menu-item.c gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in -- -1.6.5.2 +1.6.6 -From d25abaa78daf5b415ae56dfbc3dbc4f44d8eacad Mon Sep 17 00:00:00 2001 +From 3be5d74603cfb18c3a1c8267e1d9ce0d3006ca51 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Sat, 7 Feb 2009 21:17:49 -0500 -Subject: [PATCH 14/51] Force session reset if all PAM conversations fail +Subject: [PATCH 14/50] Force session reset if all PAM conversations fail --- gui/simple-greeter/gdm-greeter-login-window.c | 22 +++++++++++++++++++--- 1 files changed, 19 insertions(+), 3 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index af8ff82..e27b905 100644 +index a51184f..1b4fdef 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -663,15 +663,21 @@ reset_dialog (GdmGreeterLoginWindow *login_window) +@@ -661,15 +661,21 @@ reset_dialog (GdmGreeterLoginWindow *login_window) } static void @@ -12777,7 +11962,7 @@ index af8ff82..e27b905 100644 gboolean gdm_greeter_login_window_ready (GdmGreeterLoginWindow *login_window, const char *service_name) -@@ -717,6 +723,16 @@ gdm_greeter_login_window_conversation_stopped (GdmGreeterLoginWindow *login_wind +@@ -715,6 +721,16 @@ gdm_greeter_login_window_conversation_stopped (GdmGreeterLoginWindow *login_wind g_object_unref (task); } @@ -12795,13 +11980,13 @@ index af8ff82..e27b905 100644 } -- -1.6.5.2 +1.6.6 -From d17c8e0386e9709cf4cfc6ab8ba236e08f01a27d Mon Sep 17 00:00:00 2001 +From 17278780b7a5a136b4ccc2c1e58add345f2becaf Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 18 Feb 2009 12:32:39 -0500 -Subject: [PATCH 15/51] Add a way for plugins to pick users from list +Subject: [PATCH 15/50] Add a way for plugins to pick users from list The smartcard plugin is going to want to start its conversation as soon as the card @@ -12813,10 +11998,10 @@ gets plugged in. 3 files changed, 74 insertions(+), 0 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index e27b905..912a1e6 100644 +index 1b4fdef..3de9918 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -1796,6 +1796,34 @@ on_conversation_answer (GdmGreeterLoginWindow *login_window, +@@ -1768,6 +1768,34 @@ on_conversation_answer (GdmGreeterLoginWindow *login_window, set_ready (login_window); } @@ -12851,7 +12036,7 @@ index e27b905..912a1e6 100644 void gdm_greeter_login_window_remove_extension (GdmGreeterLoginWindow *login_window, GdmGreeterExtension *extension) -@@ -1933,6 +1961,14 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, +@@ -1905,6 +1933,14 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, "answer", G_CALLBACK (on_conversation_answer), login_window); @@ -12952,13 +12137,13 @@ index f1910cf..fb4bf49 100644 G_END_DECLS -- -1.6.5.2 +1.6.6 -From 2cca89c31e143c15dec0511575ccafa67a6ec470 Mon Sep 17 00:00:00 2001 +From 461164268b3744666f057a74a0fbfc38a1093513 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 20 Feb 2009 14:05:20 -0500 -Subject: [PATCH 16/51] Add new api to ask when chooser widget is done loading items +Subject: [PATCH 16/50] Add new api to ask when chooser widget is done loading items --- gui/simple-greeter/gdm-chooser-widget.c | 8 ++++++++ @@ -13008,13 +12193,13 @@ index 7e3e59c..6a07843 100644 */ void gdm_chooser_widget_loaded (GdmChooserWidget *widget); -- -1.6.5.2 +1.6.6 -From 77366a93d74212246b81af877d7fca26adae69c5 Mon Sep 17 00:00:00 2001 +From ede8d9d579155c981e3c21addd3167f6d6fab31c Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 20 Feb 2009 14:31:27 -0500 -Subject: [PATCH 17/51] Tell tasks they're ready only after user list loads +Subject: [PATCH 17/50] Tell tasks they're ready only after user list loads This way they won't try to access the list prematurely. --- @@ -13022,10 +12207,10 @@ This way they won't try to access the list prematurely. 1 files changed, 27 insertions(+), 1 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 912a1e6..4c14d40 100644 +index 3de9918..c2463d9 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -678,6 +678,27 @@ do_cancel (GdmGreeterLoginWindow *login_window) +@@ -676,6 +676,27 @@ do_cancel (GdmGreeterLoginWindow *login_window) restart_conversations (login_window); } @@ -13053,7 +12238,7 @@ index 912a1e6..4c14d40 100644 gboolean gdm_greeter_login_window_ready (GdmGreeterLoginWindow *login_window, const char *service_name) -@@ -692,7 +713,12 @@ gdm_greeter_login_window_ready (GdmGreeterLoginWindow *login_window, +@@ -690,7 +711,12 @@ gdm_greeter_login_window_ready (GdmGreeterLoginWindow *login_window, (gpointer) service_name); if (task != NULL) { @@ -13068,13 +12253,13 @@ index 912a1e6..4c14d40 100644 } -- -1.6.5.2 +1.6.6 -From f61d21bc5c2bfceafa7212dd51c3791af33ff78b Mon Sep 17 00:00:00 2001 +From 4aadd1e16e92df4051f76e76d118fd5c062e45ee Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 6 Feb 2009 16:25:47 -0500 -Subject: [PATCH 18/51] Add fingerprint plugin +Subject: [PATCH 18/50] Add fingerprint plugin This commit adds a plugin to initiate a conversation for fingerprint scans. @@ -13086,26 +12271,30 @@ fingerprint scans. .../fingerprint/gdm-fingerprint-extension.h | 56 ++++ .../plugins/fingerprint/gdm-fingerprint.pam | 17 ++ .../plugins/fingerprint/icons/16x16/Makefile.am | 5 + + .../fingerprint/icons/16x16/gdm-fingerprint.png | Bin 0 -> 461 bytes .../plugins/fingerprint/icons/48x48/Makefile.am | 5 + + .../fingerprint/icons/48x48/gdm-fingerprint.png | Bin 0 -> 1638 bytes .../plugins/fingerprint/icons/Makefile.am | 1 + gui/simple-greeter/plugins/fingerprint/page.ui | 56 ++++ gui/simple-greeter/plugins/fingerprint/plugin.c | 40 +++ - 11 files changed, 540 insertions(+), 1 deletions(-) + 13 files changed, 540 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 create mode 100644 gui/simple-greeter/plugins/fingerprint/gdm-fingerprint.pam create mode 100644 gui/simple-greeter/plugins/fingerprint/icons/16x16/Makefile.am + create mode 100644 gui/simple-greeter/plugins/fingerprint/icons/16x16/gdm-fingerprint.png create mode 100644 gui/simple-greeter/plugins/fingerprint/icons/48x48/Makefile.am + create mode 100644 gui/simple-greeter/plugins/fingerprint/icons/48x48/gdm-fingerprint.png create mode 100644 gui/simple-greeter/plugins/fingerprint/icons/Makefile.am create mode 100644 gui/simple-greeter/plugins/fingerprint/page.ui create mode 100644 gui/simple-greeter/plugins/fingerprint/plugin.c diff --git a/configure.ac b/configure.ac -index 6fae130..fa155d1 100644 +index ae5c12a..98d2f7e 100644 --- a/configure.ac +++ b/configure.ac -@@ -1424,6 +1424,10 @@ gui/simple-greeter/libgdmsimplegreeter/Makefile +@@ -1434,6 +1434,10 @@ gui/simple-greeter/libgdmsimplegreeter/Makefile gui/simple-greeter/libgdmsimplegreeter/gdmsimplegreeter.pc gui/simple-greeter/plugins/Makefile gui/simple-greeter/plugins/password/Makefile @@ -13586,6 +12775,25 @@ index 0000000..f42e317 +icons_DATA = gdm-fingerprint.png + +EXTRA_DIST = $(icons_DATA) +diff --git a/gui/simple-greeter/plugins/fingerprint/icons/16x16/gdm-fingerprint.png b/gui/simple-greeter/plugins/fingerprint/icons/16x16/gdm-fingerprint.png +new file mode 100644 +index 0000000000000000000000000000000000000000..4438cee2895638422dd470b05214dfae07751c3c +GIT binary patch +literal 461 +zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y +z{B+)352QE?JR*x382FBWFymBhK53vJdx@v7EBj3rUJ*vkeVx{~fu{I+x;TbdoNm3m +z(R*5;$nlToe`n0t7U_A+O~xmQ|0`3{N*Pgg&ebxsLQ0N@R| +ASO5S3 + +literal 0 +HcmV?d00001 + diff --git a/gui/simple-greeter/plugins/fingerprint/icons/48x48/Makefile.am b/gui/simple-greeter/plugins/fingerprint/icons/48x48/Makefile.am new file mode 100644 index 0000000..f4ab2a0 @@ -13597,6 +12805,47 @@ index 0000000..f4ab2a0 +icons_DATA = gdm-fingerprint.png + +EXTRA_DIST = $(icons_DATA) +diff --git a/gui/simple-greeter/plugins/fingerprint/icons/48x48/gdm-fingerprint.png b/gui/simple-greeter/plugins/fingerprint/icons/48x48/gdm-fingerprint.png +new file mode 100644 +index 0000000000000000000000000000000000000000..fd6f546c387db5dbce1a88cb4bb46c3bdaa7f4a5 +GIT binary patch +literal 1638 +zcmV-s2ATPZP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00007bV*G`2iXJ- +z6EzRg;agMy00rhrL_t(&-sPBGY!p=#$N%TDp+=0hNP*1SPbzi +z_#h8rz!1>~h>0&gm>3fi(P#*P#E(e);7KL17{vI2V$cRcYAxICZVOdtv6z0hl(w|p +zkIu~T!6|O1Q__!_#l-Wnv*+A%@A=(x?%aEaumF+2LW#)s>?en#7^-%IICZFQoAOI~ +zo8sbPcOVeh$;|PrtgJ7?;qU}36z6;$H~iq<(J^;e)KCp6W +zuuwE-q2*XBI_kP`{*8Kg`vO?zFL7t*`gd1+4}Vovm6M2;rMa#uD=YJ*_a#ZvK~2*d +zHBGy`e*Jpcc7RYdmbkqB)jkmb_x|gysT#UY_rfn0VNw3_)k$`2zj^bf*I1^xxw(0h +z&y|&x9sqmwzu69l<7wLg$bk}9jxXOuE>Lo+duOBvE^@)+&J*Mi6=wdaR4Qlkd2DQK +zBLMH@e`a23JAekL%&amP-u#>?ww^1!&?Yo6YtR@eP1CZcEjoweRtX6q?lsPj?En)h +zT9Ttf0||};0iI%0k_!4-`!P0tJtb7_41gSyE*7QD_*#Q)&~|`}Phm8f7;PR>ZXoH4 +zPqTMj?8Wdv$M2$3J*6m$e_94LEszFKW-#B#$XiI67~j|a*M%!X?(5TReHXiv6UouH +z!h116MBZrw3URBfh{%`$#n?U=3_c-A(u)-p6@JSAVvnOEInuZ5Qs+-CMq47LbT>Sb +z`a=IZt%R7_1puX`r7i&X7|dga;2$NTuK~Q9NF)wg1^@u{k4@COy0345gQwIHk2v!u +z7o!luV*=m?0H4oSVjQ2Dr)*?I^itZwF0m8<0BZIi0hO*A)IM33SLn}yX|G`-2LPz5 +zT4G}By|v$jLdyU=lm<6yIe;$BMun=X<@%sLllHlKu%#y1=}PNkXZlfxh#G7GVCEJR +z^?mxFi%r^30<1By^`!;;tRXwKwg3nr`b`2^r~l^7R6?4jtuwmC?@ot!$1YP1o +zLqq56%D{k$dW{}z&WuMAA|pUwYiny#pOoE(wl(eT?Fm}|h{$a7DZQOfd3kvWfF%ZX +z8vs;QRXLg2c&MwfbR#n?ShMZFK$4^clp)?F9e^2M4zTC@@UY&$GUf1%tu6 +z0entGGJtDD^g&}|<0k-khCWg==uga`f0>9>6Mdr|>@x=aKxt`dBoc|tE(1b{twgjH +zKpuemnfW70lFrDo9I*2y$jsfcEEfXUZkYX($B!RZXI(QvPD(ZGqNn_z$Otw +zyrw8hH2{yHL_eL=VJ;etUIuX31WZ;GMYu&znRxv+M;bgYC$)3cML!XF|g1+yk2k5oy@>O*FdVawl;pp004|G +k&_6!!?EgnH@c)&+0Y61Y+XKhC^Z)<=07*qoM6N<$f~|xG1poj5 + +literal 0 +HcmV?d00001 + diff --git a/gui/simple-greeter/plugins/fingerprint/icons/Makefile.am b/gui/simple-greeter/plugins/fingerprint/icons/Makefile.am new file mode 100644 index 0000000..c20f10d @@ -13713,13 +12962,13 @@ index 0000000..5ea9925 + return GDM_GREETER_EXTENSION (extension); +} -- -1.6.5.2 +1.6.6 -From 181679891218cc701d40a714c78afbc1b2508065 Mon Sep 17 00:00:00 2001 +From 04ae1752db0dd528a51c693fdcb39269c57ecf90 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 11 Feb 2009 08:47:52 -0500 -Subject: [PATCH 19/51] Add start of a smartcard plugin +Subject: [PATCH 19/50] Add start of a smartcard plugin It contains a copy and paste of an old RHEL patch I did a few years ago. @@ -13762,10 +13011,10 @@ I did a few years ago. create mode 100644 gui/simple-greeter/plugins/smartcard/plugin.c diff --git a/configure.ac b/configure.ac -index fa155d1..433bc42 100644 +index 98d2f7e..662dbcf 100644 --- a/configure.ac +++ b/configure.ac -@@ -68,6 +68,7 @@ LIBCANBERRA_GTK_REQUIRED_VERSION=0.4 +@@ -67,6 +67,7 @@ LIBCANBERRA_GTK_REQUIRED_VERSION=0.4 #FONTCONFIG_REQUIRED_VERSION=2.6.0 FONTCONFIG_REQUIRED_VERSION=2.5.0 DEVKIT_POWER_REQUIRED_VERSION=008 @@ -13773,7 +13022,7 @@ index fa155d1..433bc42 100644 EXTRA_COMPILE_WARNINGS(yes) -@@ -91,6 +92,12 @@ PKG_CHECK_MODULES(DAEMON, +@@ -90,6 +91,12 @@ PKG_CHECK_MODULES(DAEMON, AC_SUBST(DAEMON_CFLAGS) AC_SUBST(DAEMON_LIBS) @@ -13786,7 +13035,7 @@ index fa155d1..433bc42 100644 PKG_CHECK_MODULES(XLIB, x11 xau, , [AC_PATH_XTRA if test "x$no_x" = xyes; then -@@ -1428,6 +1435,10 @@ gui/simple-greeter/plugins/fingerprint/Makefile +@@ -1438,6 +1445,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 @@ -16981,10 +16230,10 @@ index 0000000..fffbd50 + return GDM_GREETER_EXTENSION (extension); +} diff --git a/po/POTFILES.in b/po/POTFILES.in -index 3963bd6..4d219fb 100644 +index 7c344c9..3432b98 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in -@@ -86,6 +86,7 @@ gui/simple-greeter/gdm-user.c +@@ -85,6 +85,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 @@ -16993,13 +16242,13 @@ index 3963bd6..4d219fb 100644 gui/user-switch-applet/gdm-entry-menu-item.c gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in -- -1.6.5.2 +1.6.6 -From b6b5d39ed494a0a7c900fda438b6abd84f3ef318 Mon Sep 17 00:00:00 2001 +From 41aa37a4424b44e8c6d68a5da894f682c5fdc4ba Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 23 Feb 2009 17:57:06 -0500 -Subject: [PATCH 20/51] Add a new "choosable" property to show tasks in user list +Subject: [PATCH 20/50] Add a new "choosable" property to show tasks in user list Useful for Smartcard and some future "Guest" account plugin --- @@ -17012,10 +16261,10 @@ Useful for Smartcard and some future "Guest" account plugin 6 files changed, 39 insertions(+), 3 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 4c14d40..e137e1b 100644 +index c2463d9..2c47beb 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -2002,9 +2002,6 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, +@@ -1974,9 +1974,6 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, g_debug ("GdmGreeterLoginWindow: new extension '%s - %s' added", name, description); @@ -17025,7 +16274,7 @@ index 4c14d40..e137e1b 100644 if (gdm_task_list_get_number_of_tasks (GDM_TASK_LIST (login_window->priv->conversation_list)) == 0) { gtk_widget_hide (login_window->priv->conversation_list); } else { -@@ -2015,6 +2012,16 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, +@@ -1987,6 +1984,16 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, GDM_TASK (extension)); service_name = gdm_conversation_get_service_name (GDM_CONVERSATION (extension)); @@ -17152,13 +16401,13 @@ index 6fa01fb..25d5de4 100644 static void -- -1.6.5.2 +1.6.6 -From 18ce73c085f9823c41d1cd8fe22fa125719e2310 Mon Sep 17 00:00:00 2001 +From 9c9a5dd79d92763c600faefec1644f2276133985 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 24 Feb 2009 15:12:35 -0500 -Subject: [PATCH 21/51] Separate handling of non-users in user list from users +Subject: [PATCH 21/50] Separate handling of non-users in user list from users Now get_chosen_user returns NULL if the activated item wasn't a user. We also separate the handling of on item @@ -17173,10 +16422,10 @@ added items. 3 files changed, 56 insertions(+), 22 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index e137e1b..3d11fa7 100644 +index 2c47beb..bbb99db 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -1125,29 +1125,49 @@ begin_task_verification_for_selected_user (GdmTaskList *task_list, +@@ -1123,29 +1123,49 @@ begin_task_verification_for_selected_user (GdmTaskList *task_list, } static void @@ -17237,7 +16486,7 @@ index e137e1b..3d11fa7 100644 g_signal_emit (login_window, signals[BEGIN_AUTO_LOGIN], 0, login_window->priv->timed_login_username); -@@ -1157,16 +1177,11 @@ on_user_chosen (GdmUserChooserWidget *user_chooser, +@@ -1155,16 +1175,11 @@ on_user_chosen (GdmUserChooserWidget *user_chooser, /* just wait for the user to select language and stuff */ set_log_in_button_mode (login_window, LOGIN_BUTTON_TIMED_LOGIN); set_message (login_window, _("Select language and click Log In")); @@ -17256,7 +16505,7 @@ index e137e1b..3d11fa7 100644 } static void -@@ -1474,7 +1489,7 @@ load_theme (GdmGreeterLoginWindow *login_window) +@@ -1443,7 +1458,7 @@ load_theme (GdmGreeterLoginWindow *login_window) login_window); g_signal_connect (login_window->priv->user_chooser, "activated", @@ -17315,13 +16564,13 @@ index 7aa99e7..316ef46 100644 } -- -1.6.5.2 +1.6.6 -From 25bcf5cc3ef5766684c4ae72ddcf9e71fd1ecffb Mon Sep 17 00:00:00 2001 +From 370127487869fb08cb6084dd50c5991ad37d3d19 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 27 Feb 2009 15:44:13 -0500 -Subject: [PATCH 22/51] Initiate smart card auth when clicking on it in list +Subject: [PATCH 22/50] Initiate smart card auth when clicking on it in list --- gui/simple-greeter/gdm-greeter-login-window.c | 24 ++++++++++++++++++++ @@ -17329,18 +16578,18 @@ Subject: [PATCH 22/51] Initiate smart card auth when clicking on it in list 2 files changed, 25 insertions(+), 1 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 3d11fa7..080a766 100644 +index bbb99db..342133d 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -652,6 +652,7 @@ reset_dialog (GdmGreeterLoginWindow *login_window) - set_message (login_window, ""); +@@ -650,6 +650,7 @@ reset_dialog (GdmGreeterLoginWindow *login_window) + switch_mode (login_window, MODE_SELECTION); + gtk_widget_set_sensitive (login_window->priv->conversation_list, TRUE); set_sensitive (login_window, TRUE); set_ready (login_window); set_focus (GDM_GREETER_LOGIN_WINDOW (login_window)); -@@ -1145,6 +1146,7 @@ static void +@@ -1143,6 +1144,7 @@ static void on_user_chooser_activated (GdmUserChooserWidget *user_chooser, GdmGreeterLoginWindow *login_window) { @@ -17348,7 +16597,7 @@ index 3d11fa7..080a766 100644 char *item_id; user_name = gdm_user_chooser_widget_get_chosen_user_name (GDM_USER_CHOOSER_WIDGET (login_window->priv->user_chooser)); -@@ -1178,6 +1180,28 @@ on_user_chooser_activated (GdmUserChooserWidget *user_chooser, +@@ -1176,6 +1178,28 @@ on_user_chooser_activated (GdmUserChooserWidget *user_chooser, set_log_in_button_mode (login_window, LOGIN_BUTTON_TIMED_LOGIN); set_message (login_window, _("Select language and click Log In")); g_free (item_id); @@ -17391,13 +16640,13 @@ index 25d5de4..a9e41f4 100644 gdm_conversation_cancel (GDM_CONVERSATION (extension)); } -- -1.6.5.2 +1.6.6 -From 36c744a34def8423af3f2d1765082a35fd7b83e3 Mon Sep 17 00:00:00 2001 +From 0e30e8e54c1cd4cded053b5b3eac2ef6d12c3b26 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 2 Mar 2009 11:10:28 -0500 -Subject: [PATCH 23/51] Only show task list if user is selected +Subject: [PATCH 23/50] Only show task list if user is selected --- gui/simple-greeter/gdm-greeter-login-window.c | 32 ++++++++++++++---------- @@ -17405,18 +16654,18 @@ Subject: [PATCH 23/51] Only show task list if user is selected 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 080a766..b578ac1 100644 +index 342133d..a7571cc 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -526,6 +526,7 @@ switch_mode (GdmGreeterLoginWindow *login_window, +@@ -524,6 +524,7 @@ switch_mode (GdmGreeterLoginWindow *login_window, + { const char *default_name; - GtkWidget *user_chooser; GtkWidget *box; + int number_of_tasks; /* we want to run this even if we're supposed to be in the mode already so that we reset everything -@@ -540,15 +541,23 @@ switch_mode (GdmGreeterLoginWindow *login_window, +@@ -538,15 +539,23 @@ switch_mode (GdmGreeterLoginWindow *login_window, show_widget (login_window, "cancel-button", FALSE); show_widget (login_window, "auth-page-box", FALSE); @@ -17440,7 +16689,7 @@ index 080a766..b578ac1 100644 default_name = "log-in-button"; break; default: -@@ -1163,11 +1172,14 @@ on_user_chooser_activated (GdmUserChooserWidget *user_chooser, +@@ -1161,11 +1170,14 @@ on_user_chooser_activated (GdmUserChooserWidget *user_chooser, if (strcmp (item_id, GDM_USER_CHOOSER_USER_OTHER) == 0) { g_debug ("GdmGreeterLoginWindow: Starting all auth conversations"); @@ -17456,7 +16705,7 @@ index 080a766..b578ac1 100644 } else if (strcmp (item_id, GDM_USER_CHOOSER_USER_AUTO) == 0) { g_debug ("GdmGreeterLoginWindow: Starting auto login"); g_signal_emit (login_window, signals[BEGIN_AUTO_LOGIN], 0, -@@ -1180,6 +1192,8 @@ on_user_chooser_activated (GdmUserChooserWidget *user_chooser, +@@ -1178,6 +1190,8 @@ on_user_chooser_activated (GdmUserChooserWidget *user_chooser, set_log_in_button_mode (login_window, LOGIN_BUTTON_TIMED_LOGIN); set_message (login_window, _("Select language and click Log In")); g_free (item_id); @@ -17465,7 +16714,7 @@ index 080a766..b578ac1 100644 } else { GdmTask *task; -@@ -1194,18 +1208,17 @@ on_user_chooser_activated (GdmUserChooserWidget *user_chooser, +@@ -1192,18 +1206,17 @@ on_user_chooser_activated (GdmUserChooserWidget *user_chooser, return; } g_debug ("GdmGreeterLoginWindow: Beginning auth conversation for item %s", item_id); @@ -17488,15 +16737,15 @@ index 080a766..b578ac1 100644 } static void -@@ -1537,7 +1550,6 @@ load_theme (GdmGreeterLoginWindow *login_window) +@@ -1509,7 +1522,6 @@ load_theme (GdmGreeterLoginWindow *login_window) "deactivated", G_CALLBACK (on_task_deactivated), login_window); - gtk_widget_show (login_window->priv->conversation_list); - login_window->priv->auth_banner_label = glade_xml_get_widget (login_window->priv->xml, "auth-banner-label"); + login_window->priv->auth_banner_label = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "auth-banner-label")); /*make_label_small_italic (login_window->priv->auth_banner_label);*/ -@@ -2041,12 +2053,6 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, +@@ -2013,12 +2025,6 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, g_debug ("GdmGreeterLoginWindow: new extension '%s - %s' added", name, description); @@ -17541,13 +16790,13 @@ index 25831a6..162b784 100644 int -- -1.6.5.2 +1.6.6 -From f68295cc9ef44b84c973973d21daf052ee034900 Mon Sep 17 00:00:00 2001 +From aed9a5577ea94782e63bfbf823e04428bee33122 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 2 Mar 2009 13:53:34 -0500 -Subject: [PATCH 24/51] Pull verification functions out into their own subroutines +Subject: [PATCH 24/50] Pull verification functions out into their own subroutines This makes the function smaller and easier to read --- @@ -17555,10 +16804,10 @@ This makes the function smaller and easier to read 1 files changed, 95 insertions(+), 40 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index b578ac1..4314955 100644 +index a7571cc..0b4db33 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -1110,6 +1110,17 @@ begin_task_verification (GdmTaskList *task_list, +@@ -1108,6 +1108,17 @@ begin_task_verification (GdmTaskList *task_list, return FALSE; } @@ -17576,7 +16825,7 @@ index b578ac1..4314955 100644 static gboolean begin_task_verification_for_selected_user (GdmTaskList *task_list, GdmTask *task, -@@ -1135,6 +1146,15 @@ begin_task_verification_for_selected_user (GdmTaskList *task_list, +@@ -1133,6 +1144,15 @@ begin_task_verification_for_selected_user (GdmTaskList *task_list, } static void @@ -17592,7 +16841,7 @@ index b578ac1..4314955 100644 on_user_chosen (GdmGreeterLoginWindow *login_window, const char *user_name) { -@@ -1143,12 +1163,78 @@ on_user_chosen (GdmGreeterLoginWindow *login_window, +@@ -1141,12 +1161,78 @@ on_user_chosen (GdmGreeterLoginWindow *login_window, g_signal_emit (G_OBJECT (login_window), signals[USER_SELECTED], 0, user_name); @@ -17673,7 +16922,7 @@ index b578ac1..4314955 100644 } static void -@@ -1170,54 +1256,23 @@ on_user_chooser_activated (GdmUserChooserWidget *user_chooser, +@@ -1168,54 +1254,23 @@ on_user_chooser_activated (GdmUserChooserWidget *user_chooser, item_id = gdm_chooser_widget_get_active_item (GDM_CHOOSER_WIDGET (user_chooser)); g_debug ("GdmGreeterLoginWindow: item chosen '%s'", item_id); @@ -17736,13 +16985,13 @@ index b578ac1..4314955 100644 } -- -1.6.5.2 +1.6.6 -From 8ad23d8e5c66e0d49e781a80b1f746242b9a6217 Mon Sep 17 00:00:00 2001 +From 0cd050377f88c5ad99bbbab045b623c145475e65 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 2 Mar 2009 13:57:34 -0500 -Subject: [PATCH 25/51] Add new function find_task_with_service_name +Subject: [PATCH 25/50] Add new function find_task_with_service_name It hides a bunch of icky foreach calls. --- @@ -17750,10 +16999,10 @@ It hides a bunch of icky foreach calls. 1 files changed, 22 insertions(+), 28 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 4314955..12bda46 100644 +index 0b4db33..c423e43 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -612,6 +612,20 @@ task_has_service_name (GdmTaskList *task_list, +@@ -609,6 +609,20 @@ task_has_service_name (GdmTaskList *task_list, return has_service_name; } @@ -17774,7 +17023,7 @@ index 4314955..12bda46 100644 static gboolean reset_task (GdmTaskList *task_list, GdmTask *task, -@@ -717,10 +731,7 @@ gdm_greeter_login_window_ready (GdmGreeterLoginWindow *login_window, +@@ -715,10 +729,7 @@ gdm_greeter_login_window_ready (GdmGreeterLoginWindow *login_window, g_return_val_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window), FALSE); @@ -17786,7 +17035,7 @@ index 4314955..12bda46 100644 if (task != NULL) { if (gdm_chooser_widget_is_loaded (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser))) { -@@ -749,10 +760,7 @@ gdm_greeter_login_window_conversation_stopped (GdmGreeterLoginWindow *login_wind +@@ -747,10 +758,7 @@ gdm_greeter_login_window_conversation_stopped (GdmGreeterLoginWindow *login_wind g_debug ("GdmGreeterLoginWindow: conversation '%s' has stopped", service_name); @@ -17798,7 +17047,7 @@ index 4314955..12bda46 100644 if (task != NULL) { gdm_conversation_reset (GDM_CONVERSATION (task)); -@@ -820,10 +828,7 @@ gdm_greeter_login_window_info (GdmGreeterLoginWindow *login_window, +@@ -818,10 +826,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); @@ -17810,7 +17059,7 @@ index 4314955..12bda46 100644 if (task != NULL) { gdm_conversation_set_message (GDM_CONVERSATION (task), -@@ -844,10 +849,7 @@ gdm_greeter_login_window_problem (GdmGreeterLoginWindow *login_window, +@@ -842,10 +847,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); @@ -17822,7 +17071,7 @@ index 4314955..12bda46 100644 if (task != NULL) { gdm_conversation_set_message (GDM_CONVERSATION (task), -@@ -949,10 +951,8 @@ gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window, +@@ -947,10 +949,8 @@ gdm_greeter_login_window_info_query (GdmGreeterLoginWindow *login_window, g_debug ("GdmGreeterLoginWindow: info query: %s", text); @@ -17835,7 +17084,7 @@ index 4314955..12bda46 100644 if (task != NULL) { gdm_conversation_ask_question (GDM_CONVERSATION (task), -@@ -980,10 +980,7 @@ gdm_greeter_login_window_secret_info_query (GdmGreeterLoginWindow *login_window, +@@ -978,10 +978,7 @@ gdm_greeter_login_window_secret_info_query (GdmGreeterLoginWindow *login_window, g_return_val_if_fail (GDM_IS_GREETER_LOGIN_WINDOW (login_window), FALSE); @@ -17847,7 +17096,7 @@ index 4314955..12bda46 100644 if (task != NULL) { gdm_conversation_ask_secret (GDM_CONVERSATION (task), -@@ -1213,10 +1210,7 @@ begin_single_service_verification (GdmGreeterLoginWindow *login_window, +@@ -1211,10 +1208,7 @@ begin_single_service_verification (GdmGreeterLoginWindow *login_window, { GdmTask *task; @@ -17860,13 +17109,13 @@ index 4314955..12bda46 100644 if (task == NULL) { g_debug ("GdmGreeterLoginWindow: %s has no task associated with it", service_name); -- -1.6.5.2 +1.6.6 -From 0b3464cd1db16b1b4b4bfe24d19aa281db740bd1 Mon Sep 17 00:00:00 2001 +From 7d3a2cd9cfa76e3173dc69202ae7ca19f1cbde20 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 2 Mar 2009 17:09:16 -0500 -Subject: [PATCH 26/51] Notify plugins if their user choose requests fail +Subject: [PATCH 26/50] Notify plugins if their user choose requests fail This allows the smart card plugin to cancel pending conversations when a card gets inserted. @@ -17893,10 +17142,10 @@ index d5455e1..d8a9e72 100644 VOID:DOUBLE +BOOLEAN:STRING diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 12bda46..38ec8d0 100644 +index c423e43..b2af64e 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -1929,7 +1929,7 @@ on_conversation_cancel (GdmGreeterLoginWindow *login_window, +@@ -1901,7 +1901,7 @@ on_conversation_cancel (GdmGreeterLoginWindow *login_window, do_cancel (login_window); } @@ -17905,7 +17154,7 @@ index 12bda46..38ec8d0 100644 on_conversation_chose_user (GdmGreeterLoginWindow *login_window, const char *username, GdmConversation *conversation) -@@ -1940,7 +1940,13 @@ on_conversation_chose_user (GdmGreeterLoginWindow *login_window, +@@ -1912,7 +1912,13 @@ on_conversation_chose_user (GdmGreeterLoginWindow *login_window, name = gdm_task_get_name (GDM_TASK (conversation)); g_warning ("Task %s is trying to choose user before list is loaded", name); g_free (name); @@ -17920,7 +17169,7 @@ index 12bda46..38ec8d0 100644 } if (gdm_task_list_set_active_task (GDM_TASK_LIST (login_window->priv->conversation_list), -@@ -1948,6 +1954,8 @@ on_conversation_chose_user (GdmGreeterLoginWindow *login_window, +@@ -1920,6 +1926,8 @@ on_conversation_chose_user (GdmGreeterLoginWindow *login_window, gdm_user_chooser_widget_set_chosen_user_name (GDM_USER_CHOOSER_WIDGET (login_window->priv->user_chooser), username); } @@ -18073,13 +17322,13 @@ index a9e41f4..274132e 100644 char * -- -1.6.5.2 +1.6.6 -From 64dff7616770395fbbd207365a31ce0ad51db2b2 Mon Sep 17 00:00:00 2001 +From f5ef0c1ddb21520e8fbc6f220a1b96bfb5c59092 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 13 Apr 2009 14:19:50 -0400 -Subject: [PATCH 27/51] reset all conversations if password conversation fails +Subject: [PATCH 27/50] reset all conversations if password conversation fails This is a temporary hack until we store plugin policy in gconf. @@ -18088,10 +17337,10 @@ gconf. 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 38ec8d0..8a72e9d 100644 +index b2af64e..6ce65a0 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -760,6 +760,16 @@ gdm_greeter_login_window_conversation_stopped (GdmGreeterLoginWindow *login_wind +@@ -758,6 +758,16 @@ gdm_greeter_login_window_conversation_stopped (GdmGreeterLoginWindow *login_wind g_debug ("GdmGreeterLoginWindow: conversation '%s' has stopped", service_name); @@ -18109,13 +17358,13 @@ index 38ec8d0..8a72e9d 100644 if (task != NULL) { -- -1.6.5.2 +1.6.6 -From dfa573c4e147eaf3121f77b95e0ece9def6b40b3 Mon Sep 17 00:00:00 2001 +From 9d185eccea582a312ae6c07528ca78efdfda6831 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 21 Apr 2009 10:25:18 -0400 -Subject: [PATCH 28/51] When one PAM conversation wins, stop the others +Subject: [PATCH 28/50] When one PAM conversation wins, stop the others This doesn't work yet, it's still in progress code. --- @@ -18124,10 +17373,10 @@ This doesn't work yet, it's still in progress code. 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c -index dbafe0e..006c0af 100644 +index 54c832d..aac83dd 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c -@@ -2258,6 +2258,40 @@ gdm_session_direct_open_session (GdmSession *session, +@@ -2297,6 +2297,40 @@ gdm_session_direct_open_session (GdmSession *session, } static void @@ -18168,7 +17417,7 @@ index dbafe0e..006c0af 100644 gdm_session_direct_start_session (GdmSession *session, const char *service_name) { -@@ -2269,6 +2303,16 @@ gdm_session_direct_start_session (GdmSession *session, +@@ -2308,6 +2342,16 @@ gdm_session_direct_start_session (GdmSession *session, g_return_if_fail (session != NULL); g_return_if_fail (impl->priv->is_running == FALSE); @@ -18185,7 +17434,7 @@ index dbafe0e..006c0af 100644 command = get_session_command (impl); if (gdm_session_direct_bypasses_xsession (impl)) { -@@ -2279,8 +2323,6 @@ gdm_session_direct_start_session (GdmSession *session, +@@ -2318,8 +2362,6 @@ gdm_session_direct_start_session (GdmSession *session, g_free (command); @@ -18194,7 +17443,7 @@ index dbafe0e..006c0af 100644 setup_session_environment (impl); send_environment (impl, conversation); -@@ -2291,23 +2333,7 @@ gdm_session_direct_start_session (GdmSession *session, +@@ -2330,23 +2372,7 @@ gdm_session_direct_start_session (GdmSession *session, static void stop_all_conversations (GdmSessionDirect *session) { @@ -18220,10 +17469,10 @@ index dbafe0e..006c0af 100644 static void diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index a35c184..0453b50 100644 +index edc8d8d..9fe0e0e 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -580,7 +580,7 @@ on_session_conversation_stopped (GdmSession *session, +@@ -586,7 +586,7 @@ on_session_conversation_stopped (GdmSession *session, gboolean res; g_debug ("GdmSimpleSlave: conversation stopped"); @@ -18233,13 +17482,13 @@ index a35c184..0453b50 100644 service_name); if (! res) { -- -1.6.5.2 +1.6.6 -From 9f99cc13b24f1a2fe4256d388aa7d32afda9f588 Mon Sep 17 00:00:00 2001 +From 67f633e9b48de06c75007bea11177af500f6427f Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 21 Apr 2009 15:30:28 -0400 -Subject: [PATCH 29/51] When one PAM conv. wins, actually stop the others +Subject: [PATCH 29/50] When one PAM conv. wins, actually stop the others We weren't properly keeping the winning conversation around in the previous commit @@ -18248,10 +17497,10 @@ around in the previous commit 1 files changed, 10 insertions(+), 3 deletions(-) diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c -index 006c0af..e90b6fe 100644 +index aac83dd..d6a5a5b 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c -@@ -2282,13 +2282,20 @@ stop_all_other_conversations (GdmSessionDirect *session, +@@ -2321,13 +2321,20 @@ stop_all_other_conversations (GdmSessionDirect *session, conversation = (GdmSessionConversation *) value; if (conversation == conversation_to_keep) { @@ -18276,13 +17525,13 @@ index 006c0af..e90b6fe 100644 static void -- -1.6.5.2 +1.6.6 -From 955ea26f457c086171fb0caf4c6c00c9a153df66 Mon Sep 17 00:00:00 2001 +From a289961317ab2a0cf74eaa1567b2cb7d6ae679f1 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 24 Jul 2009 14:41:48 -0400 -Subject: [PATCH 30/51] KILL pam stack instead of TERM pam stack +Subject: [PATCH 30/50] KILL pam stack instead of TERM pam stack Some PAM modules are really slow to shut down. We need to handle them being slow to shut down better, @@ -18308,23 +17557,23 @@ index 0327d77..d99b8a5 100644 if (res < 0) { g_warning ("Unable to kill session worker process"); -- -1.6.5.2 +1.6.6 -From fc9dcc99bdf2ee790f34e7777df5a6247dd4ce9c Mon Sep 17 00:00:00 2001 +From a33870b47f85b2dcb445402ec99dab51ca1ecd85 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 21 Oct 2009 16:08:52 -0400 -Subject: [PATCH 31/51] Don't show tasklist for autologin +Subject: [PATCH 31/50] Don't show tasklist for autologin --- gui/simple-greeter/gdm-greeter-login-window.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 8a72e9d..4991cb1 100644 +index 6ce65a0..d0d7363 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -1189,6 +1189,11 @@ begin_auto_login (GdmGreeterLoginWindow *login_window) +@@ -1187,6 +1187,11 @@ begin_auto_login (GdmGreeterLoginWindow *login_window) set_message (login_window, _("Select language and click Log In")); switch_mode (login_window, MODE_AUTHENTICATION); @@ -18337,13 +17586,13 @@ index 8a72e9d..4991cb1 100644 static gboolean -- -1.6.5.2 +1.6.6 -From 79aa61f3a47e77352481784f3cbbef59668ca66a Mon Sep 17 00:00:00 2001 +From 1e8de8e23e9bf4a8888e781e8b8d807cdb702793 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 23 Oct 2009 17:39:19 -0400 -Subject: [PATCH 32/51] Drop the other hiding stuff for now. +Subject: [PATCH 32/50] Drop the other hiding stuff for now. It depends on buttons being available that we don't have in the multi-stack branch. @@ -18371,13 +17620,13 @@ index bff71e5..4d3c445 100644 } } -- -1.6.5.2 +1.6.6 -From 38b4f36ede2262da12fe9aad16f599ae34e5b7b4 Mon Sep 17 00:00:00 2001 +From c6a1597c6bf52eeb643c4b883e2b997c3ea8818e Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 11:13:10 -0400 -Subject: [PATCH 33/51] Prevent start session signal handler from getting called multiple times +Subject: [PATCH 33/50] Prevent start session signal handler from getting called multiple times It was causing a double free. --- @@ -18385,10 +17634,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 4991cb1..4e147ea 100644 +index d0d7363..5bd3019 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -908,8 +908,17 @@ on_ready_to_start_session (GdmGreeterLoginWindow *login_window, +@@ -906,8 +906,17 @@ on_ready_to_start_session (GdmGreeterLoginWindow *login_window, GParamSpec *param_spec, char *service_name) { @@ -18407,23 +17656,23 @@ index 4991cb1..4e147ea 100644 static void -- -1.6.5.2 +1.6.6 -From 42992afa2a2221cf7c9052f96023c1533863a697 Mon Sep 17 00:00:00 2001 +From 497ab40ed00755dc12d6fc66feef92b225db9ebd Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 13:57:53 -0400 -Subject: [PATCH 34/51] Don't show unimportant images on plugin buttons +Subject: [PATCH 34/50] Don't show unimportant images on plugin buttons --- gui/simple-greeter/gdm-greeter-login-window.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 4e147ea..0ec21a3 100644 +index 5bd3019..e185efb 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -2016,8 +2016,14 @@ on_button_action_icon_name_changed (GtkWidget *button) +@@ -1988,8 +1988,14 @@ on_button_action_icon_name_changed (GtkWidget *button) action = gtk_widget_get_action (button); @@ -18440,13 +17689,13 @@ index 4e147ea..0ec21a3 100644 static void -- -1.6.5.2 +1.6.6 -From 4a7a82e423c22aed9f4cd803e0eb22cdcd037fd9 Mon Sep 17 00:00:00 2001 +From 4ed8c7356b7628d67da40dfd9044b68b27f204fb Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 14:10:35 -0400 -Subject: [PATCH 35/51] Add visibility concept to task iface +Subject: [PATCH 35/50] Add visibility concept to task iface --- gui/simple-greeter/libgdmsimplegreeter/gdm-task.c | 6 ++++++ @@ -18491,13 +17740,13 @@ index c75bf29..51e2b0a 100644 #endif /* __GDM_TASK_H */ -- -1.6.5.2 +1.6.6 -From c45c03cd8ba8f9cefd00e4e8347e185c3b193bcb Mon Sep 17 00:00:00 2001 +From bc661cd72996d5eeb3b613d89b47780ed609d1b4 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 14:10:50 -0400 -Subject: [PATCH 36/51] adapt fingerprint to task iface +Subject: [PATCH 36/50] adapt fingerprint to task iface --- .../fingerprint/gdm-fingerprint-extension.c | 7 +++++++ @@ -18529,13 +17778,13 @@ index 316ef46..e1fc0ed 100644 static void -- -1.6.5.2 +1.6.6 -From 8cd7ed4e13e6fb477faa58aa6aad1d63c2e07bb2 Mon Sep 17 00:00:00 2001 +From e372a7f8db62975ddf90bb89dc1fc54805c04c8b Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 14:11:05 -0400 -Subject: [PATCH 37/51] adapt smartcard plugin to task iface +Subject: [PATCH 37/50] adapt smartcard plugin to task iface --- .../plugins/smartcard/gdm-smartcard-extension.c | 7 +++++++ @@ -18567,13 +17816,13 @@ index 274132e..9967d5f 100644 static void -- -1.6.5.2 +1.6.6 -From 0f61c14953cf968448eb901cefd7b3c4849456d4 Mon Sep 17 00:00:00 2001 +From c052e01e13126c1344bbcb9a486d56b850251750 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 14:10:50 -0400 -Subject: [PATCH 38/51] adapt password to task iface +Subject: [PATCH 38/50] adapt password to task iface --- .../plugins/password/gdm-password-extension.c | 7 +++++++ @@ -18605,13 +17854,13 @@ index 4922c65..255283e 100644 static void -- -1.6.5.2 +1.6.6 -From 519da1adeff67f5a4ccefe9cb85b342148e02757 Mon Sep 17 00:00:00 2001 +From deb082b332648fccf0fa3436a9d656f682a6e1ce Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 16:05:14 -0400 -Subject: [PATCH 39/51] Return a different error code for "service won't work" than "auth failed" +Subject: [PATCH 39/50] Return a different error code for "service won't work" than "auth failed" If we bubble it up to the greeter then we should be able to have a more sensible UI when e.g. fingerprinting isn't enabled. @@ -18621,7 +17870,7 @@ a more sensible UI when e.g. fingerprinting isn't enabled. 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c -index 9a9f364..35d6b2c 100644 +index b07a939..72fdfa8 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c @@ -1291,7 +1291,7 @@ gdm_session_worker_initialize_pam (GdmSessionWorker *worker, @@ -18649,7 +17898,7 @@ index 9a9f364..35d6b2c 100644 + } else if (error_code != PAM_SUCCESS) { g_debug ("GdmSessionWorker: authentication returned %d: %s", error_code, pam_strerror (worker->priv->pam_handle, error_code)); - g_set_error (error, + /* diff --git a/daemon/gdm-session-worker.h b/daemon/gdm-session-worker.h index ee5465a..b1c8285 100644 --- a/daemon/gdm-session-worker.h @@ -18663,13 +17912,13 @@ index ee5465a..b1c8285 100644 GDM_SESSION_WORKER_ERROR_AUTHORIZING, GDM_SESSION_WORKER_ERROR_OPENING_LOG_FILE, -- -1.6.5.2 +1.6.6 -From 0b71cf75c8a726878bd9252716aa79ff4290b175 Mon Sep 17 00:00:00 2001 +From 6fe26b18d87e1d5319fe5300346a0a6368ff6b4d Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 21:32:00 -0400 -Subject: [PATCH 40/51] Emit "service-unavailable" from session when pam service refuses to work +Subject: [PATCH 40/50] Emit "service-unavailable" from session when pam service refuses to work --- daemon/gdm-session-direct.c | 26 +++++++++++++++++++++++--- @@ -18681,10 +17930,10 @@ Subject: [PATCH 40/51] 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 e90b6fe..5eaa252 100644 +index d6a5a5b..e51ea18 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c -@@ -275,9 +275,27 @@ on_session_exited (GdmSession *session, +@@ -280,9 +280,27 @@ on_session_exited (GdmSession *session, } static DBusHandlerResult @@ -18715,7 +17964,7 @@ index e90b6fe..5eaa252 100644 { DBusMessage *reply; -@@ -1236,6 +1254,8 @@ session_worker_message (DBusConnection *connection, +@@ -1275,6 +1293,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); @@ -18796,10 +18045,10 @@ index 3bf8ed7..a933557 100644 " \n" " \n" diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c -index 35d6b2c..c4ad1c0 100644 +index 72fdfa8..72fd2a3 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c -@@ -2353,9 +2353,16 @@ do_setup (GdmSessionWorker *worker) +@@ -2361,9 +2361,16 @@ do_setup (GdmSessionWorker *worker) worker->priv->display_device, &error); if (! res) { @@ -18819,7 +18068,7 @@ index 35d6b2c..c4ad1c0 100644 g_error_free (error); return; } -@@ -2376,10 +2383,18 @@ do_authenticate (GdmSessionWorker *worker) +@@ -2384,10 +2391,18 @@ do_authenticate (GdmSessionWorker *worker) worker->priv->password_is_required, &error); if (! res) { @@ -18902,13 +18151,13 @@ index 22c2ccb..9636b92 100644 const char *service_name); void (* setup_for_user) (GdmSession *session, -- -1.6.5.2 +1.6.6 -From 9a392803f3c87836b5adb31158a6ddee159446fb Mon Sep 17 00:00:00 2001 +From 7ffe2e5b75ef6e498701dc5e2f28f1a9f0fb6aaa Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 21:38:52 -0400 -Subject: [PATCH 41/51] Bubble service-unavailable up to greeter +Subject: [PATCH 41/50] Bubble service-unavailable up to greeter --- daemon/gdm-greeter-server.c | 8 ++++++++ @@ -18949,7 +18198,7 @@ index 976f0b7..c1da2f4 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 0453b50..cf2a556 100644 +index 9fe0e0e..2e03a0e 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c @@ -211,6 +211,19 @@ queue_greeter_reset (GdmSimpleSlave *slave) @@ -18972,7 +18221,7 @@ index 0453b50..cf2a556 100644 on_session_setup_complete (GdmSession *session, const char *service_name, GdmSimpleSlave *slave) -@@ -682,6 +695,10 @@ create_new_session (GdmSimpleSlave *slave) +@@ -688,6 +701,10 @@ create_new_session (GdmSimpleSlave *slave) G_CALLBACK (on_session_conversation_stopped), slave); g_signal_connect (slave->priv->session, @@ -18984,13 +18233,13 @@ index 0453b50..cf2a556 100644 G_CALLBACK (on_session_setup_complete), slave); -- -1.6.5.2 +1.6.6 -From a57508de7999049e0418f60c4f3659bd9b219bb8 Mon Sep 17 00:00:00 2001 +From 9fe4903b24c419f55a872a680302c0847a12f215 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 21:46:39 -0400 -Subject: [PATCH 42/51] Catch service-unavailable from server in client and propagate it +Subject: [PATCH 42/50] Catch service-unavailable from server in client and propagate it --- gui/simple-greeter/gdm-greeter-client.c | 20 ++++++++++++++++++++ @@ -18998,7 +18247,7 @@ Subject: [PATCH 42/51] 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 a9321aa..57126fc 100644 +index 12572fe..6a26f16 100644 --- a/gui/simple-greeter/gdm-greeter-client.c +++ b/gui/simple-greeter/gdm-greeter-client.c @@ -63,6 +63,7 @@ enum { @@ -19063,13 +18312,13 @@ index f879307..801bae4 100644 const char *service_name); void (* conversation_stopped) (GdmGreeterClient *client, -- -1.6.5.2 +1.6.6 -From 1c58a6b3bad3081408ec65f153a68baf0a5ad551 Mon Sep 17 00:00:00 2001 +From bb943f545d444f2b3c7fef0fb05390f150a20e5e Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 22:04:44 -0400 -Subject: [PATCH 43/51] Fix memory handling of task in task list +Subject: [PATCH 43/50] Fix memory handling of task in task list --- gui/simple-greeter/gdm-task-list.c | 5 +++-- @@ -19099,13 +18348,13 @@ index 162b784..be50832 100644 G_OBJECT_CLASS (gdm_task_list_parent_class)->finalize (object); -- -1.6.5.2 +1.6.6 -From 3150b82ace1a469ef0d7369d1cbca7f1901d642c Mon Sep 17 00:00:00 2001 +From 39008493b92a9193d83fab9178c62750b84e9f22 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 22:09:45 -0400 -Subject: [PATCH 44/51] Add gdm_task_list_remove_task +Subject: [PATCH 44/50] Add gdm_task_list_remove_task --- gui/simple-greeter/gdm-task-list.c | 29 +++++++++++++++++++++++++++++ @@ -19167,13 +18416,13 @@ index 8bc0c0e..3df5415 100644 G_END_DECLS -- -1.6.5.2 +1.6.6 -From d25cbe607c6365640e1e2eb8bbb5da60bedbeaf2 Mon Sep 17 00:00:00 2001 +From 68f370d08ca326e9661d581520498361c7c8f4ac Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 21:58:44 -0400 -Subject: [PATCH 45/51] Remove task from task list if unavailable +Subject: [PATCH 45/50] Remove task from task list if unavailable --- gui/simple-greeter/gdm-greeter-login-window.c | 20 ++++++++++++++++++++ @@ -19182,10 +18431,10 @@ Subject: [PATCH 45/51] Remove task from task list if unavailable 3 files changed, 37 insertions(+), 0 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 0ec21a3..6a5b77e 100644 +index e185efb..03858e3 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -872,6 +872,26 @@ gdm_greeter_login_window_problem (GdmGreeterLoginWindow *login_window, +@@ -870,6 +870,26 @@ gdm_greeter_login_window_problem (GdmGreeterLoginWindow *login_window, return TRUE; } @@ -19259,23 +18508,23 @@ index 848ea1e..3bf24e8 100644 G_CALLBACK (on_ready), session); -- -1.6.5.2 +1.6.6 -From 5eeb6c6d3522963c0dbe0b3923c596f3e08e7dc7 Mon Sep 17 00:00:00 2001 +From 452c6103577b400544d7e0c5ed548b9fee919bc3 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 23:55:00 -0400 -Subject: [PATCH 46/51] Don't add task to UI if it's invisible +Subject: [PATCH 46/50] Don't add task to UI if it's invisible --- gui/simple-greeter/gdm-greeter-login-window.c | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 6a5b77e..9280d76 100644 +index 03858e3..4a3df26 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -2141,6 +2141,17 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, +@@ -2113,6 +2113,17 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, g_object_unref (actions); @@ -19293,7 +18542,7 @@ index 6a5b77e..9280d76 100644 g_signal_connect_swapped (GDM_CONVERSATION (extension), "answer", G_CALLBACK (on_conversation_answer), -@@ -2154,9 +2165,6 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, +@@ -2126,9 +2137,6 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, G_CALLBACK (on_conversation_chose_user), login_window); @@ -19304,13 +18553,13 @@ index 6a5b77e..9280d76 100644 name, description); -- -1.6.5.2 +1.6.6 -From b8b0470e8ea5b9f1c502ba2621fca3112e8a40cd Mon Sep 17 00:00:00 2001 +From 7ad647521a33faee7f5785971fcd2bcdc0411d19 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 29 Oct 2009 00:39:20 -0400 -Subject: [PATCH 47/51] add lame check to see if fingerprint is enabled +Subject: [PATCH 47/50] add lame check to see if fingerprint is enabled --- .../fingerprint/gdm-fingerprint-extension.c | 35 +++++++++++++++++++- @@ -19363,13 +18612,13 @@ index e1fc0ed..b749ac1 100644 static void -- -1.6.5.2 +1.6.6 -From aef6c0c7fdb292b05fb91b4d7f7f926189a74951 Mon Sep 17 00:00:00 2001 +From cf005789c45da97b92e28f45e0ac94ca4cc941fb Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 29 Oct 2009 00:10:40 -0400 -Subject: [PATCH 48/51] don't activate invisible tasks +Subject: [PATCH 48/50] don't activate invisible tasks --- gui/simple-greeter/gdm-task-list.c | 4 ++++ @@ -19391,13 +18640,13 @@ index dd77ed6..c9d7451 100644 gtk_widget_set_sensitive (GTK_WIDGET (widget), TRUE); -- -1.6.5.2 +1.6.6 -From e990afc9c83863b2db09ff1dc202d75eff4583c9 Mon Sep 17 00:00:00 2001 +From 9b3eb3f3b79f2169e43138575f33d6f0fefe812d Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 29 Oct 2009 00:46:34 -0400 -Subject: [PATCH 49/51] Add lame check for smart card daemon +Subject: [PATCH 49/50] Add lame check for smart card daemon We don't want to show the smart card bits if the daemon isn't running @@ -19443,13 +18692,13 @@ index 9967d5f..903e18d 100644 static void -- -1.6.5.2 +1.6.6 -From 85de0d6e72612cf495d4ce87d9bbc46574759615 Mon Sep 17 00:00:00 2001 +From 92a18ffdee98e2867beebcab9d9d51d908cf0776 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 6 Nov 2009 13:35:26 -0500 -Subject: [PATCH 50/51] Don't delay login for passwd -d users +Subject: [PATCH 50/50] Don't delay login for passwd -d users Before we'd delay login if timed login was enabled, but we should have been checking if it was the reason login @@ -19459,10 +18708,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 9280d76..42f27bf 100644 +index 4a3df26..de45663 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -968,7 +968,7 @@ gdm_greeter_login_window_start_session_when_ready (GdmGreeterLoginWindow *login_ +@@ -966,7 +966,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. */ @@ -19472,30 +18721,5 @@ index 9280d76..42f27bf 100644 g_debug ("GdmGreeterLoginWindow: Okay, we'll start the session anyway," "because the user isn't ever going to get an opportunity to" -- -1.6.5.2 - - -From 5e63bab8f742eba575856e85f24d5d357cb8816f Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Fri, 6 Nov 2009 13:41:31 -0500 -Subject: [PATCH 51/51] Remove go-home icon from button - ---- - gui/simple-greeter/gdm-greeter-login-window.glade | 1 - - 1 files changed, 0 insertions(+), 1 deletions(-) - -diff --git a/gui/simple-greeter/gdm-greeter-login-window.glade b/gui/simple-greeter/gdm-greeter-login-window.glade -index d221d78..032bc6d 100644 ---- a/gui/simple-greeter/gdm-greeter-login-window.glade -+++ b/gui/simple-greeter/gdm-greeter-login-window.glade -@@ -365,7 +365,6 @@ - - - True -- go-home - 16 - 0.5 - 0.5 --- -1.6.5.2 +1.6.6 diff --git a/gdm.spec b/gdm.spec index 67bc937..cd14107 100644 --- a/gdm.spec +++ b/gdm.spec @@ -15,8 +15,8 @@ Summary: The GNOME Display Manager Name: gdm -Version: 2.29.4 -Release: 3%{?dist} +Version: 2.29.5 +Release: 1%{?dist} Epoch: 1 License: GPLv2+ Group: User Interface/X @@ -94,11 +94,8 @@ Provides: service(graphical-login) Requires: audit-libs >= %{libauditver} Patch2: plymouth.patch - -# uses /etc/sysconfig/keyboard and is thus not directly upstreamable -# should probably be changed to get the system layout from the X server -# https://bugzilla.gnome.org/show_bug.cgi?id=572765 -Patch13: gdm-system-keyboard.patch +Patch3: add-locale-alias.patch +Patch4: xklavier-fix.patch Patch96: gdm-multistack.patch # Fedora-specific @@ -143,7 +140,8 @@ The GDM fingerprint plugin provides functionality necessary to use a fingerprint %prep %setup -q %patch2 -p1 -b .plymouth -%patch13 -p1 -b .system-keyboard +%patch3 -p1 -b .add-locale-alias +%patch4 -p1 -b .xklavier-fix %patch96 -p1 -b .multistack %patch97 -p1 -b .bubble-location %patch98 -p1 -b .tray-padding @@ -361,7 +359,8 @@ fi %{_sbindir}/gdm-stop %{_bindir}/gdmflexiserver %{_bindir}/gdm-screenshot -%{_datadir}/gdm/*.glade +%{_datadir}/gdm/*.ui +%{_datadir}/gdm/locale.alias %{_sysconfdir}/gconf/schemas/*.schemas %{_datadir}/gdm/gdb-cmd %{_libexecdir}/gdm-crash-logger @@ -404,6 +403,9 @@ fi %{_libdir}/gdm/simple-greeter/plugins/fingerprint.so %changelog +* Tue Jan 26 2010 Ray Strode 2.29.5-1 +- Update to 2.29.5 + * Sun Jan 17 2010 Matthias Clasen - 2.29.4-3 - Rebuild diff --git a/xklavier-fix.patch b/xklavier-fix.patch new file mode 100644 index 0000000..b05b631 --- /dev/null +++ b/xklavier-fix.patch @@ -0,0 +1,62 @@ +From 51669cb03613b36b0b1798b1f8d2bba85b3e2a49 Mon Sep 17 00:00:00 2001 +From: Martin Pitt +Date: Mon, 18 Jan 2010 16:09:58 +0100 +Subject: [PATCH] Fix crash in getting system keyboard layout + +In get_system_default_layout(), use a static variable for +xkl_engine_get_instance() result, and don't close the X Display. + +This fixes the crash that happens at the second call of +get_system_default_layout(): xkl_engine_get_instance() returns a singleton +which saves the passed X Display instance, so we must never close it. + +https://launchpad.net/bugs/505972 +--- + daemon/gdm-session-direct.c | 23 ++++++++++++----------- + 1 files changed, 12 insertions(+), 11 deletions(-) + +diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c +index 011a919..d2e1a83 100644 +--- a/daemon/gdm-session-direct.c ++++ b/daemon/gdm-session-direct.c +@@ -601,16 +601,19 @@ get_default_language_name (GdmSessionDirect *session) + static char * + get_system_default_layout (GdmSessionDirect *session) + { +- char *result; +- Display *display; ++ char *result = NULL; ++ static XklEngine *engine = NULL; + +- result = NULL; +- display = XOpenDisplay (session->priv->display_name); +- if (display) { +- XklConfigRec *config; +- XklEngine *engine = xkl_engine_get_instance (display); +- if (engine) +- { ++ if (engine == NULL) { ++ Display *display = XOpenDisplay (session->priv->display_name); ++ if (display != NULL) { ++ engine = xkl_engine_get_instance (display); ++ } ++ /* do NOT call XCloseDisplay (display) here; ++ * xkl_engine_get_instance() is a singleton which saves the display */ ++ } ++ ++ if (engine != NULL) { + XklConfigRec *config = xkl_config_rec_new (); + if (xkl_config_rec_get_from_server (config, engine) && config->layouts && config->layouts[0]) { + if (config->variants && config->variants[0] && config->variants[0][0]) +@@ -619,8 +622,6 @@ get_system_default_layout (GdmSessionDirect *session) + result = g_strdup (config->layouts[0]); + } + g_object_unref (config); +- } +- XCloseDisplay (display); + } + + if (!result) +-- +1.6.6 +