diff --git a/.gitignore b/.gitignore index 97e71d7..8460265 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ gdm-2.30.2.tar.bz2 /gdm-2.31.90.tar.bz2 /gdm-2.32.0.tar.bz2 +/gdm-2.32.1.tar.bz2 diff --git a/gdm-multistack.patch b/gdm-multistack.patch index 032eee0..b8f491b 100644 --- a/gdm-multistack.patch +++ b/gdm-multistack.patch @@ -1,4 +1,4 @@ -From f7d2b3e241a8856f9a57cc47d36caaa73afb2237 Mon Sep 17 00:00:00 2001 +From 5320fa5c1fa20a0da892fd43d1908a67f09e4fea Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 22 Jul 2010 13:38:09 -0400 Subject: [PATCH 01/34] Revert "Don't wait a mandatory 2 seconds when resetting greeter" @@ -12,10 +12,10 @@ long enough. A better fix would belong in the greeter. 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index 2994014..6b9159a 100644 +index f50aef1..37e9e40 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -227,7 +227,7 @@ queue_greeter_reset (GdmSimpleSlave *slave) +@@ -296,7 +296,7 @@ queue_greeter_reset (GdmSimpleSlave *slave) return; } @@ -25,10 +25,10 @@ index 2994014..6b9159a 100644 static void -- -1.7.3 +1.7.4.1 -From fbf8627abdc2f83a1295ac8a6efd8bb295ed1e78 Mon Sep 17 00:00:00 2001 +From 86d8c641e8c8ec5a34564192d1f0b8e305eb0cad Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 7 Jul 2010 17:16:38 -0400 Subject: [PATCH 02/34] Don't set list-visible unless the widget is visible @@ -59,10 +59,10 @@ index db2d9b2..5a078e8 100644 gtk_widget_hide (widget->priv->frame); set_chooser_list_visible (widget, FALSE); -- -1.7.3 +1.7.4.1 -From 90d0a15326f9918687e1929cdf567b04fa6f7c3f Mon Sep 17 00:00:00 2001 +From fb25c9a5655918328af95f3e5a46c09c31de8935 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 28 Jun 2010 14:35:35 -0400 Subject: [PATCH 03/34] Add user chooser to ui file @@ -76,10 +76,10 @@ This way is a lot cleaner. 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index ca170a5..8ed7a6b 100644 +index 6760c8b..49b10b4 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -1221,6 +1221,17 @@ create_computer_info (GdmGreeterLoginWindow *login_window) +@@ -1223,6 +1223,17 @@ create_computer_info (GdmGreeterLoginWindow *login_window) static void @@ -97,7 +97,7 @@ index ca170a5..8ed7a6b 100644 load_theme (GdmGreeterLoginWindow *login_window) { GtkWidget *entry; -@@ -1231,6 +1242,8 @@ load_theme (GdmGreeterLoginWindow *login_window) +@@ -1233,6 +1244,8 @@ load_theme (GdmGreeterLoginWindow *login_window) gdm_profile_start (NULL); @@ -106,7 +106,7 @@ index ca170a5..8ed7a6b 100644 login_window->priv->builder = gtk_builder_new (); if (!gtk_builder_add_from_file (login_window->priv->builder, UIDIR "/" UI_XML_FILE, &error)) { g_warning ("Couldn't load builder file: %s", error->message); -@@ -1264,12 +1277,7 @@ load_theme (GdmGreeterLoginWindow *login_window) +@@ -1266,12 +1279,7 @@ load_theme (GdmGreeterLoginWindow *login_window) box = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "window-frame")); gtk_container_add (GTK_CONTAINER (login_window), box); @@ -141,10 +141,10 @@ index d8cf1cc..83375ed 100644 -- -1.7.3 +1.7.4.1 -From 450c5e7e0efeeeeeb663e9e5b191d43cfd39829a Mon Sep 17 00:00:00 2001 +From f721fdbd2fd292da8b8774fd6a6b9328f8edf513 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 20 Feb 2009 14:05:20 -0500 Subject: [PATCH 04/34] Add new api to ask when chooser widget is done loading items @@ -197,10 +197,10 @@ index 11a6456..3f6fea3 100644 */ void gdm_chooser_widget_loaded (GdmChooserWidget *widget); -- -1.7.3 +1.7.4.1 -From 794b3df0b2e16a734a177184cf4f5b9da5ed4977 Mon Sep 17 00:00:00 2001 +From 1ca6b7d8d758320010302dd27cf10663b7fdd9fd Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 6 Mar 2009 11:19:40 -0500 Subject: [PATCH 05/34] Create session settings object up front @@ -212,10 +212,10 @@ before the PAM conversation is started. 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c -index 11dc800..6082fd8 100644 +index 441f833..d9f32e2 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c -@@ -2336,8 +2336,6 @@ do_setup (GdmSessionWorker *worker) +@@ -2302,8 +2302,6 @@ do_setup (GdmSessionWorker *worker) GError *error; gboolean res; @@ -224,7 +224,7 @@ index 11dc800..6082fd8 100644 g_signal_connect_swapped (worker->priv->user_settings, "notify::language-name", G_CALLBACK (on_saved_language_name_read), -@@ -2963,6 +2961,7 @@ gdm_session_worker_init (GdmSessionWorker *worker) +@@ -2929,6 +2927,7 @@ gdm_session_worker_init (GdmSessionWorker *worker) g_str_equal, (GDestroyNotify) g_free, (GDestroyNotify) g_free); @@ -233,10 +233,10 @@ index 11dc800..6082fd8 100644 static void -- -1.7.3 +1.7.4.1 -From 191e6011c8264265feea29cf781b0ff883b83dd2 Mon Sep 17 00:00:00 2001 +From 4e682906763046d45c9dfc98b17a0724eba267bb Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 13 Jul 2010 22:42:43 -0400 Subject: [PATCH 06/34] disconnect signal handlers in destroy session @@ -247,10 +247,10 @@ We don't want them firing as part of object destruction 1 files changed, 94 insertions(+), 10 deletions(-) diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index 6b9159a..cd343c7 100644 +index 37e9e40..ca709cf 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -97,6 +97,7 @@ static void gdm_simple_slave_finalize (GObject *object); +@@ -106,6 +106,7 @@ static void gdm_simple_slave_finalize (GObject *object); G_DEFINE_TYPE (GdmSimpleSlave, gdm_simple_slave, GDM_TYPE_SLAVE) static void create_new_session (GdmSimpleSlave *slave); @@ -258,7 +258,7 @@ index 6b9159a..cd343c7 100644 static void start_greeter (GdmSimpleSlave *slave); static void -@@ -171,16 +172,6 @@ add_user_authorization (GdmSimpleSlave *slave, +@@ -240,16 +241,6 @@ add_user_authorization (GdmSimpleSlave *slave, } static void @@ -275,7 +275,7 @@ index 6b9159a..cd343c7 100644 reset_session (GdmSimpleSlave *slave) { destroy_session (slave); -@@ -780,6 +771,99 @@ create_new_session (GdmSimpleSlave *slave) +@@ -853,6 +844,99 @@ create_new_session (GdmSimpleSlave *slave) } static void @@ -376,10 +376,10 @@ index 6b9159a..cd343c7 100644 GdmSimpleSlave *slave) { -- -1.7.3 +1.7.4.1 -From d765b90a29c719f18dfe0b94652720b854a071a9 Mon Sep 17 00:00:00 2001 +From 7e32017f6492aedb3e643f1bb3f62b62de1f5900 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 16 Jan 2009 11:00:08 -0500 Subject: [PATCH 07/34] Introduce new Conversation object @@ -489,7 +489,7 @@ index a423965..9be89b4 100644 static void diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c -index 0282ab7..f9621a2 100644 +index 223f6f4..aa76f52 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c @@ -67,6 +67,16 @@ @@ -1182,7 +1182,7 @@ index 0282ab7..f9621a2 100644 } char * -@@ -2276,6 +2346,7 @@ gdm_session_direct_select_session (GdmSession *session, +@@ -2284,6 +2354,7 @@ gdm_session_direct_select_session (GdmSession *session, const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -1190,7 +1190,7 @@ index 0282ab7..f9621a2 100644 g_free (impl->priv->selected_session); -@@ -2285,7 +2356,8 @@ gdm_session_direct_select_session (GdmSession *session, +@@ -2293,7 +2364,8 @@ gdm_session_direct_select_session (GdmSession *session, impl->priv->selected_session = g_strdup (text); } @@ -1200,7 +1200,7 @@ index 0282ab7..f9621a2 100644 get_session_name (impl)); } -@@ -2294,6 +2366,7 @@ gdm_session_direct_select_language (GdmSession *session, +@@ -2302,6 +2374,7 @@ gdm_session_direct_select_language (GdmSession *session, const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -1208,7 +1208,7 @@ index 0282ab7..f9621a2 100644 g_free (impl->priv->selected_language); -@@ -2303,7 +2376,8 @@ gdm_session_direct_select_language (GdmSession *session, +@@ -2311,7 +2384,8 @@ gdm_session_direct_select_language (GdmSession *session, impl->priv->selected_language = g_strdup (text); } @@ -1218,7 +1218,7 @@ index 0282ab7..f9621a2 100644 get_language_name (impl)); } -@@ -2312,6 +2386,7 @@ gdm_session_direct_select_layout (GdmSession *session, +@@ -2320,6 +2394,7 @@ gdm_session_direct_select_layout (GdmSession *session, const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -1226,7 +1226,7 @@ index 0282ab7..f9621a2 100644 g_free (impl->priv->selected_layout); -@@ -2321,7 +2396,8 @@ gdm_session_direct_select_layout (GdmSession *session, +@@ -2329,7 +2404,8 @@ gdm_session_direct_select_layout (GdmSession *session, impl->priv->selected_layout = g_strdup (text); } @@ -1416,10 +1416,10 @@ index fb199d3..00c2fa4 100644 const char *service_name); void gdm_session_setup_for_user (GdmSession *session, diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index cd343c7..7ccd601 100644 +index ca709cf..c37ca87 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -176,7 +176,6 @@ reset_session (GdmSimpleSlave *slave) +@@ -245,7 +245,6 @@ reset_session (GdmSimpleSlave *slave) { destroy_session (slave); create_new_session (slave); @@ -1427,7 +1427,7 @@ index cd343c7..7ccd601 100644 } static gboolean -@@ -983,8 +982,6 @@ on_greeter_connected (GdmGreeterServer *greeter_server, +@@ -1056,8 +1055,6 @@ on_greeter_connected (GdmGreeterServer *greeter_server, g_debug ("GdmSimpleSlave: Greeter connected"); @@ -1464,10 +1464,10 @@ index 8bed085..9bfda86 100644 g_signal_connect (session, "conversation-started", -- -1.7.3 +1.7.4.1 -From 37344a3c548715ff7408f5198fe80d816f3480cf Mon Sep 17 00:00:00 2001 +From d8f0ea05434bc5e830ba4cedcd4c249bb06b6445 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 4 Feb 2009 10:55:03 -0500 Subject: [PATCH 08/34] Rename session worker to the service it's managing @@ -1481,7 +1481,7 @@ 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 f9621a2..cfbaa15 100644 +index aa76f52..87e38d3 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c @@ -1745,6 +1745,7 @@ start_conversation (GdmSessionDirect *session, @@ -1653,10 +1653,10 @@ index d24f025..4833f23 100644 GPid gdm_session_worker_job_get_pid (GdmSessionWorkerJob *session_worker_job); -- -1.7.3 +1.7.4.1 -From 4e72956a17e50adf57b96d3dfdd47380a1fa87c9 Mon Sep 17 00:00:00 2001 +From 9bbe97fb6719ddd075390e3a85cb4a2e607b4781 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 16 Jan 2009 13:01:48 -0500 Subject: [PATCH 09/34] Make greeter/autologin session explicitly request PAM conversation @@ -1827,10 +1827,10 @@ index f9c157f..7e2424a 100644 const char *text); void gdm_greeter_server_default_language_name_changed (GdmGreeterServer *greeter_server, diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index 7ccd601..5bb5251 100644 +index c37ca87..f404290 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -545,6 +545,7 @@ on_session_secret_info_query (GdmSession *session, +@@ -618,6 +618,7 @@ on_session_secret_info_query (GdmSession *session, static void on_session_conversation_started (GdmSession *session, @@ -1838,7 +1838,7 @@ index 7ccd601..5bb5251 100644 GdmSimpleSlave *slave) { gboolean res; -@@ -554,7 +555,8 @@ on_session_conversation_started (GdmSession *session, +@@ -627,7 +628,8 @@ on_session_conversation_started (GdmSession *session, g_debug ("GdmSimpleSlave: session conversation started"); if (slave->priv->greeter_server != NULL) { @@ -1848,7 +1848,7 @@ index 7ccd601..5bb5251 100644 if (! res) { g_warning ("Unable to send ready"); } -@@ -570,8 +572,10 @@ on_session_conversation_started (GdmSession *session, +@@ -643,8 +645,10 @@ on_session_conversation_started (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); @@ -1860,7 +1860,7 @@ index 7ccd601..5bb5251 100644 username); } -@@ -627,6 +631,21 @@ on_default_session_name_changed (GdmSession *session, +@@ -700,6 +704,21 @@ on_default_session_name_changed (GdmSession *session, } static void @@ -1882,7 +1882,7 @@ index 7ccd601..5bb5251 100644 create_new_session (GdmSimpleSlave *slave) { gboolean display_is_local; -@@ -767,6 +786,8 @@ create_new_session (GdmSimpleSlave *slave) +@@ -840,6 +859,8 @@ create_new_session (GdmSimpleSlave *slave) "default-session-name-changed", G_CALLBACK (on_default_session_name_changed), slave); @@ -1891,7 +1891,7 @@ index 7ccd601..5bb5251 100644 } static void -@@ -896,6 +917,16 @@ on_greeter_session_died (GdmGreeterSession *greeter, +@@ -969,6 +990,16 @@ on_greeter_session_died (GdmGreeterSession *greeter, } static void @@ -1908,7 +1908,7 @@ index 7ccd601..5bb5251 100644 on_greeter_begin_verification (GdmGreeterServer *greeter_server, GdmSimpleSlave *slave) { -@@ -1073,6 +1104,10 @@ start_greeter (GdmSimpleSlave *slave) +@@ -1225,6 +1256,10 @@ start_greeter (GdmSimpleSlave *slave) slave->priv->greeter_server = gdm_greeter_server_new (display_id); g_signal_connect (slave->priv->greeter_server, @@ -2014,10 +2014,10 @@ index d4ef77f..63de620 100644 return res; -- -1.7.3 +1.7.4.1 -From cb88bae99e85b08491a3c612f543a32ff1556d2d Mon Sep 17 00:00:00 2001 +From 5609ee7fbc570bde6ebc70292b5a28dcf66c7ded Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 16 Jan 2009 15:18:31 -0500 Subject: [PATCH 10/34] Store multiple conversations in the session @@ -3152,7 +3152,7 @@ index 9be89b4..607bbc6 100644 static void diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c -index cfbaa15..13c8974 100644 +index 87e38d3..680c0f0 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c @@ -89,9 +89,10 @@ struct _GdmSessionDirectPrivate @@ -4396,7 +4396,7 @@ index cfbaa15..13c8974 100644 } char * -@@ -2351,7 +2540,8 @@ gdm_session_direct_select_session (GdmSession *session, +@@ -2359,7 +2548,8 @@ gdm_session_direct_select_session (GdmSession *session, const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -4406,7 +4406,7 @@ index cfbaa15..13c8974 100644 g_free (impl->priv->selected_session); -@@ -2361,9 +2551,15 @@ gdm_session_direct_select_session (GdmSession *session, +@@ -2369,9 +2559,15 @@ gdm_session_direct_select_session (GdmSession *session, impl->priv->selected_session = g_strdup (text); } @@ -4425,7 +4425,7 @@ index cfbaa15..13c8974 100644 } static void -@@ -2371,7 +2567,8 @@ gdm_session_direct_select_language (GdmSession *session, +@@ -2379,7 +2575,8 @@ gdm_session_direct_select_language (GdmSession *session, const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -4435,7 +4435,7 @@ index cfbaa15..13c8974 100644 g_free (impl->priv->selected_language); -@@ -2381,9 +2578,15 @@ gdm_session_direct_select_language (GdmSession *session, +@@ -2389,9 +2586,15 @@ gdm_session_direct_select_language (GdmSession *session, impl->priv->selected_language = g_strdup (text); } @@ -4454,7 +4454,7 @@ index cfbaa15..13c8974 100644 } static void -@@ -2391,7 +2594,8 @@ gdm_session_direct_select_layout (GdmSession *session, +@@ -2399,7 +2602,8 @@ gdm_session_direct_select_layout (GdmSession *session, const char *text) { GdmSessionDirect *impl = GDM_SESSION_DIRECT (session); @@ -4464,7 +4464,7 @@ index cfbaa15..13c8974 100644 g_free (impl->priv->selected_layout); -@@ -2401,9 +2605,15 @@ gdm_session_direct_select_layout (GdmSession *session, +@@ -2409,9 +2613,15 @@ gdm_session_direct_select_layout (GdmSession *session, impl->priv->selected_layout = g_strdup (text); } @@ -4483,7 +4483,7 @@ index cfbaa15..13c8974 100644 } static void -@@ -2665,6 +2875,7 @@ static void +@@ -2673,6 +2883,7 @@ static void gdm_session_iface_init (GdmSessionIface *iface) { iface->start_conversation = gdm_session_direct_start_conversation; @@ -5008,10 +5008,10 @@ index a0b4cbf..98ccc51 100644 return DBUS_HANDLER_RESULT_HANDLED; diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c -index 6082fd8..fd11907 100644 +index d9f32e2..40e0cab 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c -@@ -2894,6 +2894,28 @@ worker_dbus_filter_function (DBusConnection *connection, +@@ -2860,6 +2860,28 @@ worker_dbus_filter_function (DBusConnection *connection, return DBUS_HANDLER_RESULT_HANDLED; } @@ -5040,7 +5040,7 @@ index 6082fd8..fd11907 100644 static GObject * gdm_session_worker_constructor (GType type, guint n_construct_properties, -@@ -2920,6 +2942,11 @@ gdm_session_worker_constructor (GType type, +@@ -2886,6 +2908,11 @@ gdm_session_worker_constructor (GType type, exit (1); } @@ -5724,10 +5724,10 @@ index 00c2fa4..22c2ccb 100644 void gdm_session_select_session (GdmSession *session, const char *session_name); diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index 5bb5251..4f4f331 100644 +index f404290..27983ee 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -71,6 +71,8 @@ struct GdmSimpleSlavePrivate +@@ -75,6 +75,8 @@ struct GdmSimpleSlavePrivate guint greeter_reset_id; guint start_session_id; @@ -5736,7 +5736,7 @@ index 5bb5251..4f4f331 100644 int ping_interval; GPid server_pid; -@@ -102,6 +104,7 @@ static void start_greeter (GdmSimpleSlave *slave); +@@ -111,6 +113,7 @@ static void start_greeter (GdmSimpleSlave *slave); static void on_session_started (GdmSession *session, @@ -5744,7 +5744,7 @@ index 5bb5251..4f4f331 100644 int pid, GdmSimpleSlave *slave) { -@@ -233,23 +236,25 @@ queue_auth_failed_reset (GdmSimpleSlave *slave) +@@ -302,23 +305,25 @@ queue_auth_failed_reset (GdmSimpleSlave *slave) static void on_session_setup_complete (GdmSession *session, @@ -5774,7 +5774,7 @@ index 5bb5251..4f4f331 100644 } static void -@@ -269,29 +274,32 @@ on_session_reset_failed (GdmSession *session, +@@ -338,29 +343,32 @@ on_session_reset_failed (GdmSession *session, static void on_session_authenticated (GdmSession *session, @@ -5811,7 +5811,7 @@ index 5bb5251..4f4f331 100644 { if (slave->priv->start_session_when_ready) { char *ssid; -@@ -312,7 +320,7 @@ gdm_simple_slave_accredit_when_ready (GdmSimpleSlave *slave) +@@ -381,7 +389,7 @@ gdm_simple_slave_accredit_when_ready (GdmSimpleSlave *slave) g_free (ssid); g_free (username); @@ -5820,7 +5820,7 @@ index 5bb5251..4f4f331 100644 } else { slave->priv->waiting_to_start_session = TRUE; } -@@ -320,29 +328,31 @@ gdm_simple_slave_accredit_when_ready (GdmSimpleSlave *slave) +@@ -389,29 +397,31 @@ gdm_simple_slave_accredit_when_ready (GdmSimpleSlave *slave) static void on_session_authorized (GdmSession *session, @@ -5858,7 +5858,7 @@ index 5bb5251..4f4f331 100644 } static gboolean -@@ -425,31 +435,38 @@ start_session_timeout (GdmSimpleSlave *slave) +@@ -494,31 +504,38 @@ start_session_timeout (GdmSimpleSlave *slave) g_free (auth_file); @@ -5900,7 +5900,7 @@ index 5bb5251..4f4f331 100644 const char *message, GdmSimpleSlave *slave) { -@@ -470,6 +487,7 @@ on_session_accreditation_failed (GdmSession *session, +@@ -539,6 +556,7 @@ on_session_accreditation_failed (GdmSession *session, problem = _("Unable to establish credentials"); } gdm_greeter_server_problem (slave->priv->greeter_server, @@ -5908,7 +5908,7 @@ index 5bb5251..4f4f331 100644 problem); } } -@@ -478,69 +496,74 @@ on_session_accreditation_failed (GdmSession *session, +@@ -547,73 +565,78 @@ on_session_accreditation_failed (GdmSession *session, when Xorg exits it switches to the VT it was started from. That interferes with fast user switching. */ @@ -5923,6 +5923,10 @@ index 5bb5251..4f4f331 100644 + const char *service_name, GdmSimpleSlave *slave) { + #ifdef HAVE_LOGINDEVPERM + gdm_simple_slave_grant_console_permissions (slave); + #endif /* HAVE_LOGINDEVPERM */ + - queue_start_session (slave); + queue_start_session (slave, service_name); } @@ -5992,7 +5996,7 @@ index 5bb5251..4f4f331 100644 } static void -@@ -583,6 +606,23 @@ on_session_conversation_started (GdmSession *session, +@@ -656,6 +679,23 @@ on_session_conversation_started (GdmSession *session, } static void @@ -6016,7 +6020,7 @@ index 5bb5251..4f4f331 100644 on_session_selected_user_changed (GdmSession *session, const char *text, GdmSimpleSlave *slave) -@@ -686,6 +726,10 @@ create_new_session (GdmSimpleSlave *slave) +@@ -759,6 +799,10 @@ create_new_session (GdmSimpleSlave *slave) G_CALLBACK (on_session_conversation_started), slave); g_signal_connect (slave->priv->session, @@ -6027,7 +6031,7 @@ index 5bb5251..4f4f331 100644 "setup-complete", G_CALLBACK (on_session_setup_complete), slave); -@@ -801,6 +845,9 @@ destroy_session (GdmSimpleSlave *slave) +@@ -874,6 +918,9 @@ destroy_session (GdmSimpleSlave *slave) G_CALLBACK (on_session_conversation_started), slave); g_signal_handlers_disconnect_by_func (slave->priv->session, @@ -6037,7 +6041,7 @@ index 5bb5251..4f4f331 100644 G_CALLBACK (on_session_setup_complete), slave); g_signal_handlers_disconnect_by_func (slave->priv->session, -@@ -928,11 +975,12 @@ on_greeter_start_conversation (GdmGreeterServer *greeter_server, +@@ -1001,11 +1048,12 @@ on_greeter_start_conversation (GdmGreeterServer *greeter_server, static void on_greeter_begin_verification (GdmGreeterServer *greeter_server, @@ -6051,7 +6055,7 @@ index 5bb5251..4f4f331 100644 } static void -@@ -948,21 +996,23 @@ on_greeter_begin_auto_login (GdmGreeterServer *greeter_server, +@@ -1021,21 +1069,23 @@ on_greeter_begin_auto_login (GdmGreeterServer *greeter_server, static void on_greeter_begin_verification_for_user (GdmGreeterServer *greeter_server, @@ -6077,7 +6081,7 @@ index 5bb5251..4f4f331 100644 } static void -@@ -1025,18 +1075,20 @@ on_greeter_connected (GdmGreeterServer *greeter_server, +@@ -1098,18 +1148,20 @@ on_greeter_connected (GdmGreeterServer *greeter_server, static void on_start_session_when_ready (GdmGreeterServer *session, @@ -6667,10 +6671,10 @@ index 63de620..b7e7f1c 100644 static int -- -1.7.3 +1.7.4.1 -From 12c545e0d3bee590afca92120029f7ba2ac1eeec Mon Sep 17 00:00:00 2001 +From 09dd96e7f0bf4b86c209ccf27fabac1eb43155f3 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 16:05:14 -0400 Subject: [PATCH 11/34] Return a different error code for "service won't work" than "auth failed" @@ -6683,10 +6687,10 @@ a more sensible UI when e.g. fingerprinting isn't enabled. 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c -index fd11907..0fd7268 100644 +index 40e0cab..67f3241 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c -@@ -1306,8 +1306,8 @@ gdm_session_worker_initialize_pam (GdmSessionWorker *worker, +@@ -1291,8 +1291,8 @@ gdm_session_worker_initialize_pam (GdmSessionWorker *worker, */ g_set_error (error, GDM_SESSION_WORKER_ERROR, @@ -6697,7 +6701,7 @@ index fd11907..0fd7268 100644 error_code == PAM_ABORT? _("general failure") : error_code == PAM_BUF_ERR? _("out of memory") : error_code == PAM_SYSTEM_ERR? _("application programmer error") : -@@ -1418,7 +1418,15 @@ gdm_session_worker_authenticate_user (GdmSessionWorker *worker, +@@ -1403,7 +1403,15 @@ gdm_session_worker_authenticate_user (GdmSessionWorker *worker, /* blocking call, does the actual conversation */ error_code = pam_authenticate (worker->priv->pam_handle, authentication_flags); @@ -6727,10 +6731,10 @@ index ee5465a..b1c8285 100644 GDM_SESSION_WORKER_ERROR_AUTHORIZING, GDM_SESSION_WORKER_ERROR_OPENING_LOG_FILE, -- -1.7.3 +1.7.4.1 -From e19cd77d22eddf31215e3a6c36c3e975e18df186 Mon Sep 17 00:00:00 2001 +From aad11ccb49f255c81deb6c1ea00b835fa026a6a1 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 21:32:00 -0400 Subject: [PATCH 12/34] Emit "service-unavailable" from session when pam service refuses to work @@ -6745,7 +6749,7 @@ Subject: [PATCH 12/34] 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 13c8974..5a604bf 100644 +index 680c0f0..832b870 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c @@ -283,9 +283,27 @@ on_session_exited (GdmSession *session, @@ -6860,10 +6864,10 @@ index 98ccc51..88aee14 100644 " \n" " \n" diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c -index 0fd7268..ab2f6c5 100644 +index 67f3241..08406b6 100644 --- a/daemon/gdm-session-worker.c +++ b/daemon/gdm-session-worker.c -@@ -2384,9 +2384,16 @@ do_setup (GdmSessionWorker *worker) +@@ -2350,9 +2350,16 @@ do_setup (GdmSessionWorker *worker) worker->priv->display_device, &error); if (! res) { @@ -6883,7 +6887,7 @@ index 0fd7268..ab2f6c5 100644 g_error_free (error); return; } -@@ -2407,10 +2414,18 @@ do_authenticate (GdmSessionWorker *worker) +@@ -2373,10 +2380,18 @@ do_authenticate (GdmSessionWorker *worker) worker->priv->password_is_required, &error); if (! res) { @@ -6966,10 +6970,10 @@ index 22c2ccb..9636b92 100644 const char *service_name); void (* setup_for_user) (GdmSession *session, -- -1.7.3 +1.7.4.1 -From 0c423df1aa38bd16a71f4d0b3224de16bfc78a54 Mon Sep 17 00:00:00 2001 +From 6953a40c5ea71fbec71c6942dff1a80ca62f9c35 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 21:38:52 -0400 Subject: [PATCH 13/34] Bubble service-unavailable up to greeter @@ -7022,10 +7026,10 @@ index 5af32fd..ff1ff5d 100644 gboolean gdm_greeter_server_ready (GdmGreeterServer *greeter_server, const char *service_name); diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index 4f4f331..6faeeb3 100644 +index 27983ee..7ae3a2f 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -197,22 +197,6 @@ greeter_reset_timeout (GdmSimpleSlave *slave) +@@ -266,22 +266,6 @@ greeter_reset_timeout (GdmSimpleSlave *slave) return FALSE; } @@ -7048,7 +7052,7 @@ index 4f4f331..6faeeb3 100644 static void queue_greeter_reset (GdmSimpleSlave *slave) { -@@ -224,14 +208,16 @@ queue_greeter_reset (GdmSimpleSlave *slave) +@@ -293,14 +277,16 @@ queue_greeter_reset (GdmSimpleSlave *slave) } static void @@ -7070,7 +7074,7 @@ index 4f4f331..6faeeb3 100644 } static void -@@ -294,7 +280,6 @@ on_session_authentication_failed (GdmSession *session, +@@ -363,7 +349,6 @@ on_session_authentication_failed (GdmSession *session, g_debug ("GdmSimpleSlave: Authentication failed - may retry"); gdm_session_stop_conversation (session, service_name); @@ -7078,7 +7082,7 @@ index 4f4f331..6faeeb3 100644 } static void -@@ -730,6 +715,10 @@ create_new_session (GdmSimpleSlave *slave) +@@ -803,6 +788,10 @@ create_new_session (GdmSimpleSlave *slave) G_CALLBACK (on_session_conversation_stopped), slave); g_signal_connect (slave->priv->session, @@ -7089,7 +7093,7 @@ index 4f4f331..6faeeb3 100644 "setup-complete", G_CALLBACK (on_session_setup_complete), slave); -@@ -848,6 +837,9 @@ destroy_session (GdmSimpleSlave *slave) +@@ -921,6 +910,9 @@ destroy_session (GdmSimpleSlave *slave) G_CALLBACK (on_session_conversation_stopped), slave); g_signal_handlers_disconnect_by_func (slave->priv->session, @@ -7100,10 +7104,10 @@ index 4f4f331..6faeeb3 100644 slave); g_signal_handlers_disconnect_by_func (slave->priv->session, -- -1.7.3 +1.7.4.1 -From 3bc57989d1a1ba68f9029202ca18b05f274dc376 Mon Sep 17 00:00:00 2001 +From 0dd06d185b87d0cb2f84e6a9dbfcc873a1869d29 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 21:46:39 -0400 Subject: [PATCH 14/34] Catch service-unavailable from server in client and propagate it @@ -7179,10 +7183,10 @@ index 2f27503..917ca9c 100644 const char *service_name); void (* reset) (GdmGreeterClient *client); -- -1.7.3 +1.7.4.1 -From 02c136a9a08099931a3df1b1be7132fea1f0d11a Mon Sep 17 00:00:00 2001 +From 821591801415a7ceda1daa1640bc0f5a8a177325 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 5 Feb 2009 15:20:25 -0500 Subject: [PATCH 15/34] Queue a greeter reset when the user clicks cancel @@ -7192,10 +7196,10 @@ Subject: [PATCH 15/34] Queue a greeter reset when the user clicks cancel 1 files changed, 34 insertions(+), 0 deletions(-) diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index 6faeeb3..05972a4 100644 +index 7ae3a2f..6642e61 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -961,6 +961,9 @@ on_greeter_start_conversation (GdmGreeterServer *greeter_server, +@@ -1034,6 +1034,9 @@ on_greeter_start_conversation (GdmGreeterServer *greeter_server, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: starting conversation with '%s' pam service'", service_name); @@ -7205,7 +7209,7 @@ index 6faeeb3..05972a4 100644 gdm_session_start_conversation (GDM_SESSION (slave->priv->session), service_name); } -@@ -971,6 +974,9 @@ on_greeter_begin_verification (GdmGreeterServer *greeter_server, +@@ -1044,6 +1047,9 @@ on_greeter_begin_verification (GdmGreeterServer *greeter_server, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: begin verification"); @@ -7215,7 +7219,7 @@ index 6faeeb3..05972a4 100644 gdm_session_setup (GDM_SESSION (slave->priv->session), service_name); } -@@ -981,6 +987,9 @@ on_greeter_begin_auto_login (GdmGreeterServer *greeter_server, +@@ -1054,6 +1060,9 @@ on_greeter_begin_auto_login (GdmGreeterServer *greeter_server, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: begin auto login for user '%s'", username); @@ -7225,7 +7229,7 @@ index 6faeeb3..05972a4 100644 gdm_session_setup_for_user (GDM_SESSION (slave->priv->session), "gdm-autologin", username); -@@ -993,6 +1002,9 @@ on_greeter_begin_verification_for_user (GdmGreeterServer *greeter_server, +@@ -1066,6 +1075,9 @@ on_greeter_begin_verification_for_user (GdmGreeterServer *greeter_server, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: begin verification"); @@ -7235,7 +7239,7 @@ index 6faeeb3..05972a4 100644 gdm_session_setup_for_user (GDM_SESSION (slave->priv->session), service_name, username); -@@ -1004,6 +1016,9 @@ on_greeter_answer (GdmGreeterServer *greeter_server, +@@ -1077,6 +1089,9 @@ on_greeter_answer (GdmGreeterServer *greeter_server, const char *text, GdmSimpleSlave *slave) { @@ -7245,7 +7249,7 @@ index 6faeeb3..05972a4 100644 gdm_session_answer_query (GDM_SESSION (slave->priv->session), service_name, text); } -@@ -1012,6 +1027,9 @@ on_greeter_session_selected (GdmGreeterServer *greeter_server, +@@ -1085,6 +1100,9 @@ on_greeter_session_selected (GdmGreeterServer *greeter_server, const char *text, GdmSimpleSlave *slave) { @@ -7255,7 +7259,7 @@ index 6faeeb3..05972a4 100644 gdm_session_select_session (GDM_SESSION (slave->priv->session), text); } -@@ -1020,6 +1038,9 @@ on_greeter_language_selected (GdmGreeterServer *greeter_server, +@@ -1093,6 +1111,9 @@ on_greeter_language_selected (GdmGreeterServer *greeter_server, const char *text, GdmSimpleSlave *slave) { @@ -7265,7 +7269,7 @@ index 6faeeb3..05972a4 100644 gdm_session_select_language (GDM_SESSION (slave->priv->session), text); } -@@ -1028,6 +1049,9 @@ on_greeter_layout_selected (GdmGreeterServer *greeter_server, +@@ -1101,6 +1122,9 @@ on_greeter_layout_selected (GdmGreeterServer *greeter_server, const char *text, GdmSimpleSlave *slave) { @@ -7275,7 +7279,7 @@ index 6faeeb3..05972a4 100644 gdm_session_select_layout (GDM_SESSION (slave->priv->session), text); } -@@ -1044,6 +1068,7 @@ on_greeter_cancel (GdmGreeterServer *greeter_server, +@@ -1117,6 +1141,7 @@ on_greeter_cancel (GdmGreeterServer *greeter_server, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: Greeter cancelled"); @@ -7283,7 +7287,7 @@ index 6faeeb3..05972a4 100644 queue_greeter_reset (slave); } -@@ -1054,6 +1079,9 @@ on_greeter_connected (GdmGreeterServer *greeter_server, +@@ -1127,6 +1152,9 @@ on_greeter_connected (GdmGreeterServer *greeter_server, gboolean display_is_local; g_debug ("GdmSimpleSlave: Greeter connected"); @@ -7293,7 +7297,7 @@ index 6faeeb3..05972a4 100644 g_object_get (slave, "display-is-local", &display_is_local, -@@ -1071,6 +1099,9 @@ on_start_session_when_ready (GdmGreeterServer *session, +@@ -1144,6 +1172,9 @@ on_start_session_when_ready (GdmGreeterServer *session, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: Will start session when ready"); @@ -7303,7 +7307,7 @@ index 6faeeb3..05972a4 100644 slave->priv->start_session_when_ready = TRUE; if (slave->priv->waiting_to_start_session) { -@@ -1084,6 +1115,9 @@ on_start_session_later (GdmGreeterServer *session, +@@ -1157,6 +1188,9 @@ on_start_session_later (GdmGreeterServer *session, GdmSimpleSlave *slave) { g_debug ("GdmSimpleSlave: Will start session when ready and told"); @@ -7314,10 +7318,10 @@ index 6faeeb3..05972a4 100644 } -- -1.7.3 +1.7.4.1 -From 767bf4957dd632d6327e9bf5509066ab613ddec4 Mon Sep 17 00:00:00 2001 +From 92cb476b68841deeacc447b48d05d3605971373e Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 6 Nov 2009 13:35:26 -0500 Subject: [PATCH 16/34] Don't delay login for passwd -d users @@ -7330,7 +7334,7 @@ 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 8ed7a6b..afa8d47 100644 +index 49b10b4..2f45d01 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c @@ -845,7 +845,7 @@ gdm_greeter_login_window_start_session_when_ready (GdmGreeterLoginWindow *login_ @@ -7343,10 +7347,10 @@ index 8ed7a6b..afa8d47 100644 g_debug ("GdmGreeterLoginWindow: Okay, we'll start the session anyway," "because the user isn't ever going to get an opportunity to" -- -1.7.3 +1.7.4.1 -From e53e60a2ee5dafc9095beff838351ff078245e59 Mon Sep 17 00:00:00 2001 +From 26823af5ed586463d87e81db619ed15ffd80b102 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 30 Jan 2009 23:57:31 -0500 Subject: [PATCH 17/34] Add a plugin based extension system to greeter @@ -7364,7 +7368,7 @@ run. gui/simple-greeter/gdm-greeter-login-window.c | 1061 +++++++++++++++++--- gui/simple-greeter/gdm-greeter-login-window.h | 36 +- gui/simple-greeter/gdm-greeter-login-window.ui | 67 +- - gui/simple-greeter/gdm-greeter-plugin.c | 255 +++++ + gui/simple-greeter/gdm-greeter-plugin.c | 254 +++++ gui/simple-greeter/gdm-greeter-plugin.h | 61 ++ gui/simple-greeter/gdm-greeter-session.c | 161 +++- gui/simple-greeter/gdm-plugin-manager.c | 478 +++++++++ @@ -7388,7 +7392,7 @@ run. gui/simple-greeter/plugins/password/page.ui | 57 ++ gui/simple-greeter/plugins/password/plugin.c | 40 + po/POTFILES.in | 1 + - 32 files changed, 3746 insertions(+), 255 deletions(-) + 32 files changed, 3745 insertions(+), 255 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 @@ -7421,7 +7425,7 @@ index d5455e1..d8a9e72 100644 VOID:DOUBLE +BOOLEAN:STRING diff --git a/configure.ac b/configure.ac -index ed07dce..67b4cab 100644 +index bb77b9a..c42a64d 100644 --- a/configure.ac +++ b/configure.ac @@ -18,6 +18,22 @@ AC_PROG_CXX @@ -7484,8 +7488,8 @@ index ed07dce..67b4cab 100644 +AC_SUBST(GDM_SIMPLE_GREETER_PLUGINS_DIR) dnl --------------------------------------------------------------------------- - dnl - Finish -@@ -1401,6 +1441,10 @@ docs/Makefile + dnl - Directory to spool events from other processes +@@ -1418,6 +1458,10 @@ docs/Makefile gui/Makefile gui/simple-greeter/Makefile gui/simple-greeter/libnotificationarea/Makefile @@ -7643,7 +7647,7 @@ index 917ca9c..3fd62d4 100644 void (* authentication_failed) (GdmGreeterClient *client); void (* selected_user_changed) (GdmGreeterClient *client, diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index afa8d47..77b235c 100644 +index 2f45d01..15eb169 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c @@ -1,7 +1,7 @@ @@ -8693,7 +8697,7 @@ index afa8d47..77b235c 100644 } static void -@@ -1219,11 +1649,74 @@ create_computer_info (GdmGreeterLoginWindow *login_window) +@@ -1221,11 +1651,74 @@ create_computer_info (GdmGreeterLoginWindow *login_window) #define INVISIBLE_CHAR_BULLET 0x2022 #define INVISIBLE_CHAR_NONE 0 @@ -8769,7 +8773,7 @@ index afa8d47..77b235c 100644 int i; for (i = 0; i < G_N_ELEMENTS (types); i++) { -@@ -1234,7 +1727,6 @@ register_custom_types (GdmGreeterLoginWindow *login_window) +@@ -1236,7 +1729,6 @@ register_custom_types (GdmGreeterLoginWindow *login_window) static void load_theme (GdmGreeterLoginWindow *login_window) { @@ -8777,7 +8781,7 @@ index afa8d47..77b235c 100644 GtkWidget *button; GtkWidget *box; GtkWidget *image; -@@ -1287,7 +1779,7 @@ load_theme (GdmGreeterLoginWindow *login_window) +@@ -1289,7 +1781,7 @@ load_theme (GdmGreeterLoginWindow *login_window) login_window); g_signal_connect (login_window->priv->user_chooser, "activated", @@ -8786,7 +8790,7 @@ index afa8d47..77b235c 100644 login_window); g_signal_connect (login_window->priv->user_chooser, "deactivated", -@@ -1299,30 +1791,30 @@ load_theme (GdmGreeterLoginWindow *login_window) +@@ -1301,30 +1793,30 @@ load_theme (GdmGreeterLoginWindow *login_window) G_CALLBACK (on_user_chooser_visibility_changed), login_window); @@ -8830,7 +8834,7 @@ index afa8d47..77b235c 100644 gdm_profile_end (NULL); } -@@ -1478,6 +1970,15 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) +@@ -1480,6 +1972,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; @@ -8846,7 +8850,7 @@ index afa8d47..77b235c 100644 signals [BEGIN_AUTO_LOGIN] = g_signal_new ("begin-auto-login", G_TYPE_FROM_CLASS (object_class), -@@ -1494,9 +1995,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) +@@ -1496,9 +1997,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) G_STRUCT_OFFSET (GdmGreeterLoginWindowClass, begin_verification), NULL, NULL, @@ -8858,7 +8862,7 @@ index afa8d47..77b235c 100644 signals [BEGIN_VERIFICATION_FOR_USER] = g_signal_new ("begin-verification-for-user", G_TYPE_FROM_CLASS (object_class), -@@ -1504,9 +2005,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) +@@ -1506,9 +2007,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) G_STRUCT_OFFSET (GdmGreeterLoginWindowClass, begin_verification_for_user), NULL, NULL, @@ -8870,7 +8874,7 @@ index afa8d47..77b235c 100644 signals [QUERY_ANSWER] = g_signal_new ("query-answer", G_TYPE_FROM_CLASS (object_class), -@@ -1514,9 +2015,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) +@@ -1516,9 +2017,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) G_STRUCT_OFFSET (GdmGreeterLoginWindowClass, query_answer), NULL, NULL, @@ -8882,7 +8886,7 @@ index afa8d47..77b235c 100644 signals [USER_SELECTED] = g_signal_new ("user-selected", G_TYPE_FROM_CLASS (object_class), -@@ -1554,9 +2055,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) +@@ -1556,9 +2057,9 @@ gdm_greeter_login_window_class_init (GdmGreeterLoginWindowClass *klass) G_STRUCT_OFFSET (GdmGreeterLoginWindowClass, start_session), NULL, NULL, @@ -8894,7 +8898,7 @@ index afa8d47..77b235c 100644 g_object_class_install_property (object_class, PROP_DISPLAY_IS_LOCAL, -@@ -1609,6 +2110,246 @@ on_gconf_key_changed (GConfClient *client, +@@ -1611,6 +2112,246 @@ on_gconf_key_changed (GConfClient *client, } } @@ -9326,10 +9330,10 @@ index 83375ed..35195d8 100644 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 +index 0000000..1919aae --- /dev/null +++ b/gui/simple-greeter/gdm-greeter-plugin.c -@@ -0,0 +1,255 @@ +@@ -0,0 +1,254 @@ +/* + * Copyright (C) 2009 Red Hat, Inc. + * @@ -9584,7 +9588,6 @@ index 0000000..02814a2 + + gdm_greeter_plugin_unload (plugin); +} -+ diff --git a/gui/simple-greeter/gdm-greeter-plugin.h b/gui/simple-greeter/gdm-greeter-plugin.h new file mode 100644 index 0000000..904c231 @@ -12382,10 +12385,10 @@ index 1fccb90..7c344c9 100644 gui/user-switch-applet/gdm-entry-menu-item.c gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in -- -1.7.3 +1.7.4.1 -From a97c6bd001162f5a8b2d7a0a90508a871e2238f3 Mon Sep 17 00:00:00 2001 +From a085335a0ded650ddd3d078b16aab54d39365db3 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 4 Aug 2010 18:25:50 -0400 Subject: [PATCH 18/34] squash with password @@ -12447,10 +12450,10 @@ index 255283e..11a171c 100644 static void -- -1.7.3 +1.7.4.1 -From 396ae085b57e36ab91c71a2c2926c5bddebb1eb4 Mon Sep 17 00:00:00 2001 +From 968fa2158b6e79517c3d9f14ec2d29c610552177 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 6 Aug 2010 11:13:10 -0400 Subject: [PATCH 19/34] task list fix @@ -12497,10 +12500,10 @@ index a7f8c74..906938d 100644 button = g_object_get_data (G_OBJECT (task), "gdm-task-list-button"); -- -1.7.3 +1.7.4.1 -From 6dfe9ceba14c83c3215931327de140f4b235e75d Mon Sep 17 00:00:00 2001 +From 3bd738e07497304fa4dd569061e9a07f561d0826 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 29 Jun 2010 14:13:35 -0400 Subject: [PATCH 20/34] Show cancel button after first message @@ -12513,7 +12516,7 @@ that message isn't asking for input. 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 77b235c..60c4d00 100644 +index 15eb169..faf6598 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c @@ -826,6 +826,7 @@ reset_dialog (GdmGreeterLoginWindow *login_window, @@ -12541,10 +12544,10 @@ index 77b235c..60c4d00 100644 if (task != NULL) { -- -1.7.3 +1.7.4.1 -From 699f426299d23d0d8d84442af60e4f690adecede Mon Sep 17 00:00:00 2001 +From beaccd0f9e03149813eda3d708b7214a436d441a Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 28 Oct 2009 11:13:10 -0400 Subject: [PATCH 21/34] Prevent start session signal handler from getting called multiple times @@ -12555,7 +12558,7 @@ 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 60c4d00..74e3b12 100644 +index faf6598..2fb3a72 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c @@ -1085,8 +1085,17 @@ on_ready_to_start_session (GdmGreeterLoginWindow *login_window, @@ -12577,10 +12580,10 @@ index 60c4d00..74e3b12 100644 static void -- -1.7.3 +1.7.4.1 -From 127a965565b6644ba2df3866abc600afe1469078 Mon Sep 17 00:00:00 2001 +From 7e6633d4bf84a7a57800dca85bf98eed326b8b47 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 6 Feb 2009 16:25:47 -0500 Subject: [PATCH 22/34] Add fingerprint plugin @@ -12616,10 +12619,10 @@ fingerprint scans. create mode 100644 gui/simple-greeter/plugins/fingerprint/plugin.c diff --git a/configure.ac b/configure.ac -index 67b4cab..f8829f6 100644 +index c42a64d..095c82a 100644 --- a/configure.ac +++ b/configure.ac -@@ -1445,6 +1445,10 @@ gui/simple-greeter/libgdmsimplegreeter/Makefile +@@ -1462,6 +1462,10 @@ gui/simple-greeter/libgdmsimplegreeter/Makefile gui/simple-greeter/libgdmsimplegreeter/gdmsimplegreeter.pc gui/simple-greeter/plugins/Makefile gui/simple-greeter/plugins/password/Makefile @@ -13348,10 +13351,10 @@ index 7c344c9..dd08b21 100644 gui/user-switch-applet/gdm-entry-menu-item.c gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in -- -1.7.3 +1.7.4.1 -From e377e2770fabc19f4337f2f01c0150e8d84f19dd Mon Sep 17 00:00:00 2001 +From 3052debffd8e44051348d8d33454223164afecc5 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 6 Feb 2009 16:25:47 -0500 Subject: [PATCH 23/34] Add smartcard plugin @@ -13397,7 +13400,7 @@ smartcards are inserted. create mode 100644 gui/simple-greeter/plugins/smartcard/plugin.c diff --git a/configure.ac b/configure.ac -index f8829f6..28b08d4 100644 +index 095c82a..00b638d 100644 --- a/configure.ac +++ b/configure.ac @@ -67,6 +67,7 @@ LIBCANBERRA_GTK_REQUIRED_VERSION=0.4 @@ -13421,7 +13424,7 @@ index f8829f6..28b08d4 100644 PKG_CHECK_MODULES(XLIB, x11 xau, , [AC_PATH_XTRA if test "x$no_x" = xyes; then -@@ -1449,6 +1456,10 @@ gui/simple-greeter/plugins/fingerprint/Makefile +@@ -1466,6 +1473,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 @@ -16865,10 +16868,10 @@ index dd08b21..ed922a5 100644 gui/user-switch-applet/gdm-entry-menu-item.c gui/user-switch-applet/GNOME_FastUserSwitchApplet.server.in.in -- -1.7.3 +1.7.4.1 -From 52586f856c5ae4c1e21fe0942e2a69cbd4c26a8a Mon Sep 17 00:00:00 2001 +From d2f8b879039c3e1126e8b25f0121499f2288dc96 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 4 Aug 2010 18:26:01 -0400 Subject: [PATCH 24/34] squash with smartcard @@ -16906,10 +16909,10 @@ index b925f5e..b40a21c 100644 static void -- -1.7.3 +1.7.4.1 -From ff8a0c3705973be7b0a55023af99407c70a0077f Mon Sep 17 00:00:00 2001 +From f1a3379a06ec750d1a813055ec2148fbb14572c1 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 21 Apr 2009 10:25:18 -0400 Subject: [PATCH 25/34] When one PAM conversation wins, stop the others @@ -16922,7 +16925,7 @@ e.g. two factor authentication. 2 files changed, 53 insertions(+), 20 deletions(-) diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c -index 5a604bf..41c7dc2 100644 +index 832b870..3c512c0 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c @@ -2370,6 +2370,47 @@ gdm_session_direct_open_session (GdmSession *session, @@ -17025,10 +17028,10 @@ index 5a604bf..41c7dc2 100644 static void diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index 05972a4..a19d4b3 100644 +index 6642e61..11fde2c 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -598,7 +598,7 @@ on_session_conversation_stopped (GdmSession *session, +@@ -671,7 +671,7 @@ on_session_conversation_stopped (GdmSession *session, gboolean res; g_debug ("GdmSimpleSlave: conversation stopped"); @@ -17038,10 +17041,10 @@ index 05972a4..a19d4b3 100644 service_name); if (! res) { -- -1.7.3 +1.7.4.1 -From d24d158cf1c2ff032143ee50a4360729edc66995 Mon Sep 17 00:00:00 2001 +From a2e415c6487fe1592e54caba4ee6a5fa35a4ea35 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 24 Jul 2009 14:41:48 -0400 Subject: [PATCH 26/34] KILL stuck processes if they don't die on TERM @@ -17162,10 +17165,10 @@ index be85f30..8b93663 100644 if (WIFEXITED (exit_status) && (WEXITSTATUS (exit_status) != 0)) { g_debug ("GdmSessionWorkerJob: Wait on child process failed"); -- -1.7.3 +1.7.4.1 -From 3dbbc2d4a678786cb327311e13e0c411f5684a9e Mon Sep 17 00:00:00 2001 +From 861185f30451bd005ae645f00a22495131545493 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 13 Jul 2010 22:36:19 -0400 Subject: [PATCH 27/34] add better debug spew (needs squash) @@ -17175,7 +17178,7 @@ Subject: [PATCH 27/34] add better debug spew (needs squash) 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/daemon/gdm-session-direct.c b/daemon/gdm-session-direct.c -index 41c7dc2..e4e4166 100644 +index 3c512c0..53d26df 100644 --- a/daemon/gdm-session-direct.c +++ b/daemon/gdm-session-direct.c @@ -210,7 +210,7 @@ find_conversation_by_name (GdmSessionDirect *session, @@ -17215,10 +17218,10 @@ index 41c7dc2..e4e4166 100644 conversation = find_conversation_by_name (impl, service_name); -- -1.7.3 +1.7.4.1 -From 887730359a1441410513e3b9dc5cc0ca99a47402 Mon Sep 17 00:00:00 2001 +From 946f8e6ba227511c69419fdb33cd4656fb9b55a6 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 13 Jul 2010 22:37:35 -0400 Subject: [PATCH 28/34] switch to proper mode when going to timed login @@ -17228,7 +17231,7 @@ Subject: [PATCH 28/34] switch to proper mode when going to timed login 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 74e3b12..f03b1c3 100644 +index 2fb3a72..9b617de 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c @@ -1383,7 +1383,7 @@ begin_auto_login (GdmGreeterLoginWindow *login_window) @@ -17241,10 +17244,10 @@ index 74e3b12..f03b1c3 100644 show_widget (login_window, "conversation-list", FALSE); gdm_task_list_foreach_task (GDM_TASK_LIST (login_window->priv->conversation_list), -- -1.7.3 +1.7.4.1 -From d85bcf69bf7d45f0d3b087aa8121061791108f19 Mon Sep 17 00:00:00 2001 +From f6ee59df044822d00f7a2862d94779da46fa9caa Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 3 Aug 2010 15:21:26 -0400 Subject: [PATCH 29/34] Drop "Cancelling" message for plugin initiated cancels @@ -17257,10 +17260,10 @@ but for now just drop the message. 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index f03b1c3..c576d6c 100644 +index 9b617de..648a326 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c -@@ -2145,7 +2145,7 @@ static void +@@ -2147,7 +2147,7 @@ static void on_conversation_cancel (GdmGreeterLoginWindow *login_window, GdmConversation *conversation) { @@ -17270,10 +17273,10 @@ index f03b1c3..c576d6c 100644 static gboolean -- -1.7.3 +1.7.4.1 -From aa4d38ae8169ed0f4d08441fa89eb0957365af45 Mon Sep 17 00:00:00 2001 +From d2c415e401c6aca39d0ce92dbea4cb82956c9736 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 4 Aug 2010 18:11:27 -0400 Subject: [PATCH 30/34] drop code for label that doesn't exist anymore @@ -17283,7 +17286,7 @@ Subject: [PATCH 30/34] drop code for label that doesn't exist anymore 1 files changed, 0 insertions(+), 6 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index c576d6c..1000aef 100644 +index 648a326..0b8d01d 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c @@ -776,9 +776,6 @@ static void @@ -17307,10 +17310,10 @@ index c576d6c..1000aef 100644 /* If we don't have a user list jump straight to authenticate */ g_debug ("GdmGreeterLoginWindow: jumping straight to authenticate"); -- -1.7.3 +1.7.4.1 -From e05412f5c8a99b3df2de4bb5ce0eba375f9e0884 Mon Sep 17 00:00:00 2001 +From 38aacae0c09a3ebe473b8ec6a0b5571ffc457c93 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 4 Aug 2010 18:03:52 -0400 Subject: [PATCH 31/34] Add delay when showing messages (needs split) @@ -17323,15 +17326,15 @@ adds some queueing and timeouts to make sure the messages stay on screen for a sufficient amount of time. --- gui/simple-greeter/gdm-greeter-login-window.c | 119 ++++++++++++++++++-- - .../libgdmsimplegreeter/gdm-conversation.c | 18 +++ + .../libgdmsimplegreeter/gdm-conversation.c | 17 +++ .../libgdmsimplegreeter/gdm-conversation.h | 2 + .../fingerprint/gdm-fingerprint-extension.c | 20 ++++ .../plugins/password/gdm-password-extension.c | 20 ++++ .../plugins/smartcard/gdm-smartcard-extension.c | 19 +++ - 6 files changed, 188 insertions(+), 10 deletions(-) + 6 files changed, 187 insertions(+), 10 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 1000aef..a34f42f 100644 +index 0b8d01d..9852d89 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c @@ -137,6 +137,9 @@ struct GdmGreeterLoginWindowPrivate @@ -17510,7 +17513,7 @@ index 1000aef..a34f42f 100644 } else { g_debug ("GdmGreeterLoginWindow: not starting session since " "user hasn't had an opportunity to pick language " -@@ -2171,6 +2237,35 @@ on_conversation_chose_user (GdmGreeterLoginWindow *login_window, +@@ -2173,6 +2239,35 @@ on_conversation_chose_user (GdmGreeterLoginWindow *login_window, return TRUE; } @@ -17546,7 +17549,7 @@ index 1000aef..a34f42f 100644 void gdm_greeter_login_window_remove_extension (GdmGreeterLoginWindow *login_window, GdmGreeterExtension *extension) -@@ -2333,6 +2428,10 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, +@@ -2335,6 +2430,10 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, "user-chosen", G_CALLBACK (on_conversation_chose_user), login_window); @@ -17558,7 +17561,7 @@ index 1000aef..a34f42f 100644 g_debug ("GdmGreeterLoginWindow: new extension '%s - %s' added", name, description); diff --git a/gui/simple-greeter/libgdmsimplegreeter/gdm-conversation.c b/gui/simple-greeter/libgdmsimplegreeter/gdm-conversation.c -index ee763ef..1320d9c 100644 +index ee763ef..a3514e8 100644 --- a/gui/simple-greeter/libgdmsimplegreeter/gdm-conversation.c +++ b/gui/simple-greeter/libgdmsimplegreeter/gdm-conversation.c @@ -32,6 +32,7 @@ enum { @@ -17586,7 +17589,7 @@ index ee763ef..1320d9c 100644 } void -@@ -184,3 +195,10 @@ gdm_conversation_choose_user (GdmConversation *conversation, +@@ -184,3 +195,9 @@ gdm_conversation_choose_user (GdmConversation *conversation, return was_chosen; } @@ -17596,7 +17599,6 @@ index ee763ef..1320d9c 100644 +{ + g_signal_emit (conversation, signals [MESSAGE_SET], 0); +} -+ diff --git a/gui/simple-greeter/libgdmsimplegreeter/gdm-conversation.h b/gui/simple-greeter/libgdmsimplegreeter/gdm-conversation.h index b37b21e..f76b18c 100644 --- a/gui/simple-greeter/libgdmsimplegreeter/gdm-conversation.h @@ -17773,10 +17775,10 @@ index b40a21c..5e234b9 100644 static void -- -1.7.3 +1.7.4.1 -From 37119c0445e6d8cc78938ed71ff84e9af76a6836 Mon Sep 17 00:00:00 2001 +From dfd3359907ecaf17f0da7be63292f59100736707 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 4 Aug 2010 19:27:14 -0400 Subject: [PATCH 32/34] Drop cancelling message @@ -17787,7 +17789,7 @@ We cancel very quickly in most cases now, so the message isn't useful 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index a34f42f..4bfd3f5 100644 +index 9852d89..886d700 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c @@ -849,7 +849,7 @@ static void @@ -17800,10 +17802,10 @@ index a34f42f..4bfd3f5 100644 } -- -1.7.3 +1.7.4.1 -From 1932eb618974600b765a6c835c6f72d403b25bf5 Mon Sep 17 00:00:00 2001 +From ac8518ec2f563463fc2fe9f9b2f56099bff5692c Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 6 Aug 2010 11:14:23 -0400 Subject: [PATCH 33/34] manage tasks outside of task list @@ -17823,7 +17825,7 @@ when we don't need to. 1 files changed, 206 insertions(+), 190 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 4bfd3f5..204f37d 100644 +index 886d700..557eb61 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c @@ -98,6 +98,7 @@ enum { @@ -18476,7 +18478,7 @@ index 4bfd3f5..204f37d 100644 } else if (strcmp (item_id, GDM_USER_CHOOSER_USER_GUEST) == 0) { /* FIXME: handle guest account stuff */ g_free (item_id); -@@ -1725,63 +1784,28 @@ static void +@@ -1727,63 +1786,28 @@ static void on_task_activated (GdmGreeterLoginWindow *login_window, GdmTask *task) { @@ -18549,7 +18551,7 @@ index 4bfd3f5..204f37d 100644 } static void -@@ -1886,6 +1910,7 @@ load_theme (GdmGreeterLoginWindow *login_window) +@@ -1888,6 +1912,7 @@ load_theme (GdmGreeterLoginWindow *login_window) box = GTK_WIDGET (gtk_builder_get_object (login_window->priv->builder, "computer-info-event-box")); g_signal_connect (box, "button-press-event", G_CALLBACK (on_computer_info_label_button_press), login_window); @@ -18557,7 +18559,7 @@ index 4bfd3f5..204f37d 100644 switch_mode (login_window, MODE_SELECTION); gdm_profile_end (NULL); -@@ -2224,15 +2249,12 @@ on_conversation_chose_user (GdmGreeterLoginWindow *login_window, +@@ -2226,15 +2251,12 @@ on_conversation_chose_user (GdmGreeterLoginWindow *login_window, /* If we're already authenticating then we can't pick a user */ @@ -18576,7 +18578,7 @@ index 4bfd3f5..204f37d 100644 return TRUE; } -@@ -2256,11 +2278,7 @@ on_conversation_message_set (GdmGreeterLoginWindow *login_window, +@@ -2258,11 +2280,7 @@ on_conversation_message_set (GdmGreeterLoginWindow *login_window, } if (login_window->priv->service_name_of_session_ready_to_start != NULL ) { @@ -18589,7 +18591,7 @@ index 4bfd3f5..204f37d 100644 gdm_greeter_login_window_start_session (login_window); } } -@@ -2436,9 +2454,7 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, +@@ -2438,9 +2456,7 @@ gdm_greeter_login_window_add_extension (GdmGreeterLoginWindow *login_window, g_debug ("GdmGreeterLoginWindow: new extension '%s - %s' added", name, description); @@ -18601,10 +18603,10 @@ index 4bfd3f5..204f37d 100644 if (gdm_task_is_choosable (GDM_TASK (extension))) { -- -1.7.3 +1.7.4.1 -From 80cdd8a3dad6ae36ee257d453879922a9f409ca0 Mon Sep 17 00:00:00 2001 +From abdfbbd5398cd25fb8909aaa4ccab2b97919a0a1 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 9 Aug 2010 18:09:19 -0400 Subject: [PATCH 34/34] hide task actions more aggressively @@ -18615,7 +18617,7 @@ This fixes "dual login buttons" after the user hits cancel. 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/gui/simple-greeter/gdm-greeter-login-window.c b/gui/simple-greeter/gdm-greeter-login-window.c -index 204f37d..8b3cace 100644 +index 557eb61..99a18f4 100644 --- a/gui/simple-greeter/gdm-greeter-login-window.c +++ b/gui/simple-greeter/gdm-greeter-login-window.c @@ -492,6 +492,8 @@ set_log_in_button_mode (GdmGreeterLoginWindow *login_window, @@ -18636,5 +18638,5 @@ index 204f37d..8b3cace 100644 return FALSE; } -- -1.7.3 +1.7.4.1 diff --git a/gdm.spec b/gdm.spec index 3812dc8..7507e0d 100644 --- a/gdm.spec +++ b/gdm.spec @@ -14,7 +14,7 @@ Summary: The GNOME Display Manager Name: gdm -Version: 2.32.0 +Version: 2.32.1 Release: 1%{?dist} Epoch: 1 License: GPLv2+ @@ -80,7 +80,6 @@ BuildRequires: check-devel BuildRequires: iso-codes-devel BuildRequires: gnome-panel-devel BuildRequires: libxklavier-devel >= 4.0 -BuildRequires: DeviceKit-power-devel >= 008 BuildRequires: libXdmcp-devel Provides: service(graphical-login) = %{name} @@ -369,7 +368,8 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor >&/dev/ull || : %changelog * Thu Sep 30 2010 Ray Strode 2.32.0-1 -- Update to 2.32.0 +- Update to 2.32.0 (CVE-2011-0727) + Resolves: #691496 * Wed Sep 15 2010 Ray Strode 2.31.90-7 - More user switch applet fixes diff --git a/plymouth.patch b/plymouth.patch index 0658664..3763c27 100644 --- a/plymouth.patch +++ b/plymouth.patch @@ -1,157 +1,149 @@ -From 9768d9e2783de7e836421d9645070bb1917800dd Mon Sep 17 00:00:00 2001 +From 68ac898ef906ae4a5038107107043ece1e29aa6b Mon Sep 17 00:00:00 2001 From: Ray Strode -Date: Fri, 27 Nov 2009 18:27:53 -0500 -Subject: [PATCH 1/2] Save root window to pixmap at _XROOTPMAP_ID +Date: Mon, 28 Mar 2011 13:33:18 -0400 +Subject: [PATCH] plymouth patch -This combined with starting the X server with -nr -will give us a nice fade transition when g-s-d starts --- - daemon/gdm-simple-slave.c | 9 +++++ - daemon/gdm-slave.c | 72 +++++++++++++++++++++++++++++++++++++++++++++ - daemon/gdm-slave.h | 1 + - 3 files changed, 82 insertions(+), 0 deletions(-) + configure.ac | 17 +++++++ + daemon/Makefile.am | 1 + + daemon/gdm-display.c | 30 +++++++++++- + daemon/gdm-server.c | 56 ++++++++++++++++++++++ + daemon/gdm-server.h | 1 + + daemon/gdm-simple-slave.c | 110 ++++++++++++++++++++++++++++++++++++++++++- + daemon/gdm-simple-slave.h | 3 +- + daemon/gdm-slave.c | 95 +++++++++++++++++++++++++++++++++++++ + daemon/gdm-slave.h | 1 + + daemon/gdm-static-display.c | 17 +++++++ + daemon/simple-slave-main.c | 4 +- + data/Makefile.am | 8 +++ + 12 files changed, 336 insertions(+), 7 deletions(-) -diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index 2cbb568..66d1c77 100644 ---- a/daemon/gdm-simple-slave.c -+++ b/daemon/gdm-simple-slave.c -@@ -863,6 +863,15 @@ setup_server (GdmSimpleSlave *slave) - { - /* Set the busy cursor */ - gdm_slave_set_busy_cursor (GDM_SLAVE (slave)); -+ -+ /* The root window has a background that may be useful -+ * to cross fade or transition from when setting the -+ * login screen background. We read it here, and stuff -+ * it into the standard _XROOTPMAP_ID root window property, -+ * so gnome-settings-daemon can get at it. -+ */ -+ gdm_slave_save_root_windows (GDM_SLAVE (slave)); -+ - } +diff --git a/configure.ac b/configure.ac +index 97ae3f8..bb77b9a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1275,6 +1275,23 @@ AC_SUBST(GDM_SCREENSHOT_DIR) - static void -diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c -index e11e16c..da86f77 100644 ---- a/daemon/gdm-slave.c -+++ b/daemon/gdm-slave.c -@@ -42,6 +42,7 @@ - #include - #include /* for Display */ -+#include /* for XA_PIXMAP */ - #include /* for watch cursor */ - - #include "gdm-common.h" -@@ -351,6 +352,77 @@ gdm_slave_run_script (GdmSlave *slave, - return ret; - } - -+static void -+gdm_slave_save_root_window_of_screen (GdmSlave *slave, -+ Atom id_atom, -+ int screen_number) -+{ -+ Window root_window; -+ GC gc; -+ XGCValues values; -+ Pixmap pixmap; -+ int width, height, depth; -+ -+ root_window = RootWindow (slave->priv->server_display, -+ screen_number); -+ -+ width = DisplayWidth (slave->priv->server_display, screen_number); -+ height = DisplayHeight (slave->priv->server_display, screen_number); -+ depth = DefaultDepth (slave->priv->server_display, screen_number); -+ pixmap = XCreatePixmap (slave->priv->server_display, -+ root_window, -+ width, height, depth); -+ -+ values.function = GXcopy; -+ values.plane_mask = AllPlanes; -+ values.fill_style = FillSolid; -+ values.subwindow_mode = IncludeInferiors; -+ -+ gc = XCreateGC (slave->priv->server_display, -+ root_window, -+ GCFunction | GCPlaneMask | GCFillStyle | GCSubwindowMode, -+ &values); -+ -+ if (XCopyArea (slave->priv->server_display, -+ root_window, pixmap, gc, 0, 0, -+ width, height, 0, 0)) { + dnl --------------------------------------------------------------------------- ++dnl - Directory to spool events from other processes ++dnl --------------------------------------------------------------------------- + -+ long pixmap_as_long; ++AC_ARG_WITH(spool-dir, ++ AS_HELP_STRING([--with-spool-dir=], ++ [spool directory])) + -+ pixmap_as_long = (long) pixmap; ++if ! test -z "$with_spool_dir"; then ++ GDM_SPOOL_DIR=$with_spool_dir ++else ++ GDM_SPOOL_DIR=${localstatedir}/spool/gdm ++fi + -+ XChangeProperty (slave->priv->server_display, -+ root_window, id_atom, XA_PIXMAP, -+ 32, PropModeReplace, (guchar *) &pixmap_as_long, -+ 1); ++AC_SUBST(GDM_SPOOL_DIR) + -+ } + -+ XFreeGC (slave->priv->server_display, gc); -+} ++dnl --------------------------------------------------------------------------- + dnl - Finish + dnl --------------------------------------------------------------------------- + +diff --git a/daemon/Makefile.am b/daemon/Makefile.am +index da18835..5594ac0 100644 +--- a/daemon/Makefile.am ++++ b/daemon/Makefile.am +@@ -15,6 +15,7 @@ AM_CPPFLAGS = \ + -DLOGDIR=\"$(logdir)\" \ + -DSBINDIR=\"$(sbindir)\" \ + -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ ++ -DGDM_SPOOL_DIR=\"$(GDM_SPOOL_DIR)\" \ + -DGDM_XAUTH_DIR=\"$(GDM_XAUTH_DIR)\" \ + -DGDM_SCREENSHOT_DIR=\"$(GDM_SCREENSHOT_DIR)\" \ + -DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\" \ +diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c +index abedc0b..77877b4 100644 +--- a/daemon/gdm-display.c ++++ b/daemon/gdm-display.c +@@ -65,7 +65,9 @@ struct GdmDisplayPrivate + gsize x11_cookie_size; + GdmDisplayAccessFile *access_file; + +- gboolean is_local; ++ guint is_local : 1; ++ guint force_active_vt : 1; + -+void -+gdm_slave_save_root_windows (GdmSlave *slave) + guint finish_idle_id; + + GdmSlaveProxy *slave_proxy; +@@ -84,6 +86,7 @@ enum { + PROP_X11_COOKIE, + PROP_X11_AUTHORITY_FILE, + PROP_IS_LOCAL, ++ PROP_FORCE_ACTIVE_VT, + PROP_SLAVE_COMMAND, + }; + +@@ -574,9 +577,10 @@ gdm_display_real_prepare (GdmDisplay *display) + gdm_slave_proxy_set_log_path (display->priv->slave_proxy, log_path); + g_free (log_path); + +- command = g_strdup_printf ("%s --display-id %s", ++ command = g_strdup_printf ("%s --display-id %s %s", + display->priv->slave_command, +- display->priv->id); ++ display->priv->id, ++ display->priv->force_active_vt? "--force-active-vt" : ""); + gdm_slave_proxy_set_command (display->priv->slave_proxy, command); + g_free (command); + +@@ -824,6 +828,13 @@ _gdm_display_set_is_local (GdmDisplay *display, + } + + static void ++_gdm_display_set_force_active_vt (GdmDisplay *display, ++ gboolean force_active_vt) +{ -+ int i, number_of_screens; -+ Atom atom; -+ -+ number_of_screens = ScreenCount (slave->priv->server_display); -+ -+ atom = XInternAtom (slave->priv->server_display, -+ "_XROOTPMAP_ID", False); -+ -+ if (atom == 0) { -+ return; -+ } -+ -+ for (i = 0; i < number_of_screens; i++) { -+ gdm_slave_save_root_window_of_screen (slave, atom, i); -+ } -+ -+ XSync (slave->priv->server_display, False); ++ display->priv->force_active_vt = force_active_vt; +} + - void - gdm_slave_set_busy_cursor (GdmSlave *slave) ++static void + _gdm_display_set_slave_command (GdmDisplay *display, + const char *command) { -diff --git a/daemon/gdm-slave.h b/daemon/gdm-slave.h -index af28b00..1652457 100644 ---- a/daemon/gdm-slave.h -+++ b/daemon/gdm-slave.h -@@ -74,6 +74,7 @@ gboolean gdm_slave_switch_to_user_session (GdmSlave *slave, +@@ -866,6 +877,9 @@ gdm_display_set_property (GObject *object, + case PROP_IS_LOCAL: + _gdm_display_set_is_local (self, g_value_get_boolean (value)); + break; ++ case PROP_FORCE_ACTIVE_VT: ++ _gdm_display_set_force_active_vt (self, g_value_get_boolean (value)); ++ break; + case PROP_SLAVE_COMMAND: + _gdm_display_set_slave_command (self, g_value_get_string (value)); + break; +@@ -914,6 +928,9 @@ gdm_display_get_property (GObject *object, + case PROP_IS_LOCAL: + g_value_set_boolean (value, self->priv->is_local); + break; ++ case PROP_FORCE_ACTIVE_VT: ++ g_value_set_boolean (value, self->priv->force_active_vt); ++ break; + case PROP_SLAVE_COMMAND: + g_value_set_string (value, self->priv->slave_command); + break; +@@ -1084,6 +1101,13 @@ gdm_display_class_init (GdmDisplayClass *klass) + NULL, + TRUE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); ++ g_object_class_install_property (object_class, ++ PROP_FORCE_ACTIVE_VT, ++ g_param_spec_boolean ("force-active-vt", ++ NULL, ++ NULL, ++ FALSE, ++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - gboolean gdm_slave_connect_to_x11_display (GdmSlave *slave); - void gdm_slave_set_busy_cursor (GdmSlave *slave); -+void gdm_slave_save_root_windows (GdmSlave *slave); - gboolean gdm_slave_run_script (GdmSlave *slave, - const char *dir, - const char *username); --- -1.6.5.2 - - -From 2343620d464b93cfa46abddf8af14c7268f17df2 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Fri, 27 Nov 2009 18:52:54 -0500 -Subject: [PATCH 2/2] Enable smooth transition between plymouth and X - -This commit checks if plymouth is running, and if so, -turns on the smooth transition between plymouth and X. ---- - daemon/gdm-server.c | 56 +++++++++++++++++++++++++++ - daemon/gdm-server.h | 1 + - daemon/gdm-simple-slave.c | 91 ++++++++++++++++++++++++++++++++++++++++++++- - 3 files changed, 147 insertions(+), 1 deletions(-) - + g_object_class_install_property (object_class, + PROP_SLAVE_COMMAND, diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c -index ba10386..3ec21e9 100644 +index 339f3cc..70115a8 100644 --- a/daemon/gdm-server.c +++ b/daemon/gdm-server.c @@ -32,8 +32,11 @@ @@ -163,10 +155,10 @@ index ba10386..3ec21e9 100644 +#include + - #include - #include - #include -@@ -663,6 +666,44 @@ gdm_server_spawn (GdmServer *server, + #ifdef HAVE_SYS_PRCTL_H + #include + #endif +@@ -673,6 +676,44 @@ gdm_server_spawn (GdmServer *server, return ret; } @@ -211,7 +203,7 @@ index ba10386..3ec21e9 100644 /** * gdm_server_start: * @disp: Pointer to a GdmDisplay structure -@@ -681,6 +722,21 @@ gdm_server_start (GdmServer *server) +@@ -691,6 +732,21 @@ gdm_server_start (GdmServer *server) return res; } @@ -246,18 +238,23 @@ index 535a69a..bd6c60a 100644 char * gdm_server_get_display_device (GdmServer *server); diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c -index 66d1c77..4703537 100644 +index e3cb96d..f50aef1 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c -@@ -84,6 +84,7 @@ struct GdmSimpleSlavePrivate - - guint start_session_when_ready : 1; - guint waiting_to_start_session : 1; +@@ -91,10 +91,12 @@ struct GdmSimpleSlavePrivate + #ifdef HAVE_LOGINDEVPERM + gboolean use_logindevperm; + #endif + guint plymouth_is_running : 1; }; enum { -@@ -858,6 +859,72 @@ on_start_session_later (GdmGreeterServer *session, + PROP_0, ++ FORCE_ACTIVE_VT + }; + + static void gdm_simple_slave_class_init (GdmSimpleSlaveClass *klass); +@@ -1002,11 +1004,90 @@ on_start_session_later (GdmGreeterServer *session, slave->priv->start_session_when_ready = FALSE; } @@ -330,10 +327,17 @@ index 66d1c77..4703537 100644 static void setup_server (GdmSimpleSlave *slave) { -@@ -872,6 +939,10 @@ setup_server (GdmSimpleSlave *slave) - */ - gdm_slave_save_root_windows (GDM_SLAVE (slave)); - + /* Set the busy cursor */ + gdm_slave_set_busy_cursor (GDM_SLAVE (slave)); ++ ++ /* The root window has a background that may be useful ++ * to cross fade or transition from when setting the ++ * login screen background. We read it here, and stuff ++ * it into the standard _XROOTPMAP_ID root window property, ++ * so gnome-settings-daemon can get at it. ++ */ ++ gdm_slave_save_root_windows (GDM_SLAVE (slave)); ++ + /* Plymouth is waiting for the go-ahead to exit */ + if (slave->priv->plymouth_is_running) { + plymouth_quit_with_transition (slave); @@ -341,7 +345,7 @@ index 66d1c77..4703537 100644 } static void -@@ -1063,6 +1134,10 @@ on_server_exited (GdmServer *server, +@@ -1206,6 +1287,10 @@ on_server_exited (GdmServer *server, g_debug ("GdmSimpleSlave: server exited with code %d\n", exit_code); gdm_slave_stopped (GDM_SLAVE (slave)); @@ -352,7 +356,7 @@ index 66d1c77..4703537 100644 } static void -@@ -1075,6 +1150,10 @@ on_server_died (GdmServer *server, +@@ -1218,6 +1303,10 @@ on_server_died (GdmServer *server, g_strsignal (signal_number)); gdm_slave_stopped (GDM_SLAVE (slave)); @@ -363,7 +367,21 @@ index 66d1c77..4703537 100644 } static gboolean -@@ -1119,7 +1198,14 @@ gdm_simple_slave_run (GdmSimpleSlave *slave) +@@ -1226,11 +1315,13 @@ gdm_simple_slave_run (GdmSimpleSlave *slave) + char *display_name; + char *auth_file; + gboolean display_is_local; ++ gboolean force_active_vt; + + g_object_get (slave, + "display-is-local", &display_is_local, + "display-name", &display_name, + "display-x11-authority-file", &auth_file, ++ "force-active-vt", &force_active_vt, + NULL); + + /* if this is local display start a server if one doesn't +@@ -1262,7 +1353,17 @@ gdm_simple_slave_run (GdmSimpleSlave *slave) G_CALLBACK (on_server_ready), slave); @@ -374,12 +392,15 @@ index 66d1c77..4703537 100644 + plymouth_prepare_for_transition (slave); + res = gdm_server_start_on_active_vt (slave->priv->server); + } else { -+ res = gdm_server_start (slave->priv->server); ++ if (force_active_vt) ++ res = gdm_server_start_on_active_vt (slave->priv->server); ++ else ++ res = gdm_server_start (slave->priv->server); + } if (! res) { g_warning (_("Could not start the X " "server (your graphical environment) " -@@ -1129,6 +1215,9 @@ gdm_simple_slave_run (GdmSimpleSlave *slave) +@@ -1272,6 +1373,9 @@ gdm_simple_slave_run (GdmSimpleSlave *slave) "In the meantime this display will be " "disabled. Please restart GDM when " "the problem is corrected.")); @@ -389,157 +410,7 @@ index 66d1c77..4703537 100644 exit (1); } --- -1.6.5.2 - -diff -up gdm-2.29.92/configure.ac.force-active-vt gdm-2.29.92/configure.ac ---- gdm-2.29.92/configure.ac.force-active-vt 2010-03-08 17:09:47.000000000 -0500 -+++ gdm-2.29.92/configure.ac 2010-03-25 19:56:04.160116854 -0400 -@@ -1265,6 +1265,23 @@ AC_SUBST(GDM_SCREENSHOT_DIR) - - - dnl --------------------------------------------------------------------------- -+dnl - Directory to spool events from other processes -+dnl --------------------------------------------------------------------------- -+ -+AC_ARG_WITH(spool-dir, -+ AS_HELP_STRING([--with-spool-dir=], -+ [spool directory])) -+ -+if ! test -z "$with_spool_dir"; then -+ GDM_SPOOL_DIR=$with_spool_dir -+else -+ GDM_SPOOL_DIR=${localstatedir}/spool/gdm -+fi -+ -+AC_SUBST(GDM_SPOOL_DIR) -+ -+ -+dnl --------------------------------------------------------------------------- - dnl - Finish - dnl --------------------------------------------------------------------------- - -diff -up gdm-2.29.92/daemon/gdm-display.c.force-active-vt gdm-2.29.92/daemon/gdm-display.c ---- gdm-2.29.92/daemon/gdm-display.c.force-active-vt 2010-03-08 16:53:57.000000000 -0500 -+++ gdm-2.29.92/daemon/gdm-display.c 2010-03-25 19:56:04.161124001 -0400 -@@ -65,7 +65,9 @@ struct GdmDisplayPrivate - gsize x11_cookie_size; - GdmDisplayAccessFile *access_file; - -- gboolean is_local; -+ guint is_local : 1; -+ guint force_active_vt : 1; -+ - guint finish_idle_id; - - GdmSlaveProxy *slave_proxy; -@@ -84,6 +86,7 @@ enum { - PROP_X11_COOKIE, - PROP_X11_AUTHORITY_FILE, - PROP_IS_LOCAL, -+ PROP_FORCE_ACTIVE_VT, - PROP_SLAVE_COMMAND, - }; - -@@ -574,9 +577,10 @@ gdm_display_real_prepare (GdmDisplay *di - gdm_slave_proxy_set_log_path (display->priv->slave_proxy, log_path); - g_free (log_path); - -- command = g_strdup_printf ("%s --display-id %s", -+ command = g_strdup_printf ("%s --display-id %s %s", - display->priv->slave_command, -- display->priv->id); -+ display->priv->id, -+ display->priv->force_active_vt? "--force-active-vt" : ""); - gdm_slave_proxy_set_command (display->priv->slave_proxy, command); - g_free (command); - -@@ -824,6 +828,13 @@ _gdm_display_set_is_local (GdmDisplay - } - - static void -+_gdm_display_set_force_active_vt (GdmDisplay *display, -+ gboolean force_active_vt) -+{ -+ display->priv->force_active_vt = force_active_vt; -+} -+ -+static void - _gdm_display_set_slave_command (GdmDisplay *display, - const char *command) - { -@@ -866,6 +877,9 @@ gdm_display_set_property (GObject - case PROP_IS_LOCAL: - _gdm_display_set_is_local (self, g_value_get_boolean (value)); - break; -+ case PROP_FORCE_ACTIVE_VT: -+ _gdm_display_set_force_active_vt (self, g_value_get_boolean (value)); -+ break; - case PROP_SLAVE_COMMAND: - _gdm_display_set_slave_command (self, g_value_get_string (value)); - break; -@@ -914,6 +928,9 @@ gdm_display_get_property (GObject - case PROP_IS_LOCAL: - g_value_set_boolean (value, self->priv->is_local); - break; -+ case PROP_FORCE_ACTIVE_VT: -+ g_value_set_boolean (value, self->priv->force_active_vt); -+ break; - case PROP_SLAVE_COMMAND: - g_value_set_string (value, self->priv->slave_command); - break; -@@ -1084,6 +1101,13 @@ gdm_display_class_init (GdmDisplayClass - NULL, - TRUE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); -+ g_object_class_install_property (object_class, -+ PROP_FORCE_ACTIVE_VT, -+ g_param_spec_boolean ("force-active-vt", -+ NULL, -+ NULL, -+ FALSE, -+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - - g_object_class_install_property (object_class, - PROP_SLAVE_COMMAND, -diff -up gdm-2.29.92/daemon/gdm-simple-slave.c.force-active-vt gdm-2.29.92/daemon/gdm-simple-slave.c ---- gdm-2.29.92/daemon/gdm-simple-slave.c.force-active-vt 2010-03-25 19:56:04.156102795 -0400 -+++ gdm-2.29.92/daemon/gdm-simple-slave.c 2010-03-25 19:58:27.983101340 -0400 -@@ -89,6 +89,7 @@ struct GdmSimpleSlavePrivate - - enum { - PROP_0, -+ FORCE_ACTIVE_VT - }; - - static void gdm_simple_slave_class_init (GdmSimpleSlaveClass *klass); -@@ -1198,11 +1199,13 @@ gdm_simple_slave_run (GdmSimpleSlave *sl - char *display_name; - char *auth_file; - gboolean display_is_local; -+ gboolean force_active_vt; - - g_object_get (slave, - "display-is-local", &display_is_local, - "display-name", &display_name, - "display-x11-authority-file", &auth_file, -+ "force-active-vt", &force_active_vt, - NULL); - - /* if this is local display start a server if one doesn't -@@ -1240,7 +1243,10 @@ gdm_simple_slave_run (GdmSimpleSlave *sl - plymouth_prepare_for_transition (slave); - res = gdm_server_start_on_active_vt (slave->priv->server); - } else { -- res = gdm_server_start (slave->priv->server); -+ if (force_active_vt) -+ res = gdm_server_start_on_active_vt (slave->priv->server); -+ else -+ res = gdm_server_start (slave->priv->server); - } - if (! res) { - g_warning (_("Could not start the X " -@@ -1392,12 +1398,14 @@ gdm_simple_slave_finalize (GObject *obje +@@ -1428,12 +1532,14 @@ gdm_simple_slave_finalize (GObject *object) } GdmSlave * @@ -555,9 +426,10 @@ diff -up gdm-2.29.92/daemon/gdm-simple-slave.c.force-active-vt gdm-2.29.92/daemo NULL); return GDM_SLAVE (object); -diff -up gdm-2.29.92/daemon/gdm-simple-slave.h.force-active-vt gdm-2.29.92/daemon/gdm-simple-slave.h ---- gdm-2.29.92/daemon/gdm-simple-slave.h.force-active-vt 2010-03-08 16:53:57.000000000 -0500 -+++ gdm-2.29.92/daemon/gdm-simple-slave.h 2010-03-25 19:56:04.166103788 -0400 +diff --git a/daemon/gdm-simple-slave.h b/daemon/gdm-simple-slave.h +index 1f1aa1d..e9aa624 100644 +--- a/daemon/gdm-simple-slave.h ++++ b/daemon/gdm-simple-slave.h @@ -48,7 +48,8 @@ typedef struct } GdmSimpleSlaveClass; @@ -568,10 +440,19 @@ diff -up gdm-2.29.92/daemon/gdm-simple-slave.h.force-active-vt gdm-2.29.92/daemo G_END_DECLS -diff -up gdm-2.29.92/daemon/gdm-slave.c.force-active-vt gdm-2.29.92/daemon/gdm-slave.c ---- gdm-2.29.92/daemon/gdm-slave.c.force-active-vt 2010-03-25 19:56:04.153102867 -0400 -+++ gdm-2.29.92/daemon/gdm-slave.c 2010-03-25 19:56:04.168101809 -0400 -@@ -84,6 +84,7 @@ struct GdmSlavePrivate +diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c +index f0e93d5..170a998 100644 +--- a/daemon/gdm-slave.c ++++ b/daemon/gdm-slave.c +@@ -43,6 +43,7 @@ + #include + + #include /* for Display */ ++#include /* for XA_PIXMAP */ + #include /* for watch cursor */ + #include + +@@ -86,6 +87,7 @@ struct GdmSlavePrivate char *display_hostname; gboolean display_is_local; gboolean display_is_parented; @@ -579,7 +460,7 @@ diff -up gdm-2.29.92/daemon/gdm-slave.c.force-active-vt gdm-2.29.92/daemon/gdm-s char *display_seat_id; char *display_x11_authority_file; char *parent_display_name; -@@ -102,6 +103,7 @@ enum { +@@ -105,6 +107,7 @@ enum { PROP_DISPLAY_NUMBER, PROP_DISPLAY_HOSTNAME, PROP_DISPLAY_IS_LOCAL, @@ -587,7 +468,85 @@ diff -up gdm-2.29.92/daemon/gdm-slave.c.force-active-vt gdm-2.29.92/daemon/gdm-s PROP_DISPLAY_SEAT_ID, PROP_DISPLAY_X11_AUTHORITY_FILE }; -@@ -1402,6 +1404,13 @@ _gdm_slave_set_display_is_local (GdmSlav +@@ -354,6 +357,77 @@ gdm_slave_run_script (GdmSlave *slave, + return ret; + } + ++static void ++gdm_slave_save_root_window_of_screen (GdmSlave *slave, ++ Atom id_atom, ++ int screen_number) ++{ ++ Window root_window; ++ GC gc; ++ XGCValues values; ++ Pixmap pixmap; ++ int width, height, depth; ++ ++ root_window = RootWindow (slave->priv->server_display, ++ screen_number); ++ ++ width = DisplayWidth (slave->priv->server_display, screen_number); ++ height = DisplayHeight (slave->priv->server_display, screen_number); ++ depth = DefaultDepth (slave->priv->server_display, screen_number); ++ pixmap = XCreatePixmap (slave->priv->server_display, ++ root_window, ++ width, height, depth); ++ ++ values.function = GXcopy; ++ values.plane_mask = AllPlanes; ++ values.fill_style = FillSolid; ++ values.subwindow_mode = IncludeInferiors; ++ ++ gc = XCreateGC (slave->priv->server_display, ++ root_window, ++ GCFunction | GCPlaneMask | GCFillStyle | GCSubwindowMode, ++ &values); ++ ++ if (XCopyArea (slave->priv->server_display, ++ root_window, pixmap, gc, 0, 0, ++ width, height, 0, 0)) { ++ ++ long pixmap_as_long; ++ ++ pixmap_as_long = (long) pixmap; ++ ++ XChangeProperty (slave->priv->server_display, ++ root_window, id_atom, XA_PIXMAP, ++ 32, PropModeReplace, (guchar *) &pixmap_as_long, ++ 1); ++ ++ } ++ ++ XFreeGC (slave->priv->server_display, gc); ++} ++ ++void ++gdm_slave_save_root_windows (GdmSlave *slave) ++{ ++ int i, number_of_screens; ++ Atom atom; ++ ++ number_of_screens = ScreenCount (slave->priv->server_display); ++ ++ atom = XInternAtom (slave->priv->server_display, ++ "_XROOTPMAP_ID", False); ++ ++ if (atom == 0) { ++ return; ++ } ++ ++ for (i = 0; i < number_of_screens; i++) { ++ gdm_slave_save_root_window_of_screen (slave, atom, i); ++ } ++ ++ XSync (slave->priv->server_display, False); ++} ++ + void + gdm_slave_set_busy_cursor (GdmSlave *slave) + { +@@ -1451,6 +1525,13 @@ _gdm_slave_set_display_is_local (GdmSlave *slave, } static void @@ -601,7 +560,7 @@ diff -up gdm-2.29.92/daemon/gdm-slave.c.force-active-vt gdm-2.29.92/daemon/gdm-s gdm_slave_set_property (GObject *object, guint prop_id, const GValue *value, -@@ -1433,6 +1442,9 @@ gdm_slave_set_property (GObject *ob +@@ -1482,6 +1563,9 @@ gdm_slave_set_property (GObject *object, case PROP_DISPLAY_IS_LOCAL: _gdm_slave_set_display_is_local (self, g_value_get_boolean (value)); break; @@ -611,7 +570,7 @@ diff -up gdm-2.29.92/daemon/gdm-slave.c.force-active-vt gdm-2.29.92/daemon/gdm-s default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; -@@ -1471,6 +1483,9 @@ gdm_slave_get_property (GObject *obje +@@ -1520,6 +1604,9 @@ gdm_slave_get_property (GObject *object, case PROP_DISPLAY_IS_LOCAL: g_value_set_boolean (value, self->priv->display_is_local); break; @@ -621,7 +580,7 @@ diff -up gdm-2.29.92/daemon/gdm-slave.c.force-active-vt gdm-2.29.92/daemon/gdm-s default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; -@@ -1596,6 +1611,14 @@ gdm_slave_class_init (GdmSlaveClass *kla +@@ -1645,6 +1732,14 @@ gdm_slave_class_init (GdmSlaveClass *klass) TRUE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); @@ -636,10 +595,23 @@ diff -up gdm-2.29.92/daemon/gdm-slave.c.force-active-vt gdm-2.29.92/daemon/gdm-s signals [STOPPED] = g_signal_new ("stopped", G_TYPE_FROM_CLASS (object_class), -diff -up gdm-2.29.92/daemon/gdm-static-display.c.force-active-vt gdm-2.29.92/daemon/gdm-static-display.c ---- gdm-2.29.92/daemon/gdm-static-display.c.force-active-vt 2010-03-08 16:53:57.000000000 -0500 -+++ gdm-2.29.92/daemon/gdm-static-display.c 2010-03-25 19:56:04.168101809 -0400 -@@ -86,10 +86,27 @@ gdm_static_display_remove_user_authoriza +diff --git a/daemon/gdm-slave.h b/daemon/gdm-slave.h +index af28b00..1652457 100644 +--- a/daemon/gdm-slave.h ++++ b/daemon/gdm-slave.h +@@ -74,6 +74,7 @@ gboolean gdm_slave_switch_to_user_session (GdmSlave *slave, + + gboolean gdm_slave_connect_to_x11_display (GdmSlave *slave); + void gdm_slave_set_busy_cursor (GdmSlave *slave); ++void gdm_slave_save_root_windows (GdmSlave *slave); + gboolean gdm_slave_run_script (GdmSlave *slave, + const char *dir, + const char *username); +diff --git a/daemon/gdm-static-display.c b/daemon/gdm-static-display.c +index a747ee3..8a96b42 100644 +--- a/daemon/gdm-static-display.c ++++ b/daemon/gdm-static-display.c +@@ -86,10 +86,27 @@ gdm_static_display_remove_user_authorization (GdmDisplay *display, } static gboolean @@ -667,21 +639,11 @@ diff -up gdm-2.29.92/daemon/gdm-static-display.c.force-active-vt gdm-2.29.92/dae GDM_DISPLAY_CLASS (gdm_static_display_parent_class)->manage (display); return TRUE; -diff -up gdm-2.29.92/daemon/Makefile.am.force-active-vt gdm-2.29.92/daemon/Makefile.am ---- gdm-2.29.92/daemon/Makefile.am.force-active-vt 2010-03-08 16:53:57.000000000 -0500 -+++ gdm-2.29.92/daemon/Makefile.am 2010-03-25 19:56:04.169102529 -0400 -@@ -14,6 +14,7 @@ AM_CPPFLAGS = \ - -DLOGDIR=\"$(logdir)\" \ - -DSBINDIR=\"$(sbindir)\" \ - -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ -+ -DGDM_SPOOL_DIR=\"$(GDM_SPOOL_DIR)\" \ - -DGDM_XAUTH_DIR=\"$(GDM_XAUTH_DIR)\" \ - -DGDM_SCREENSHOT_DIR=\"$(GDM_SCREENSHOT_DIR)\" \ - -DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\" \ -diff -up gdm-2.29.92/daemon/simple-slave-main.c.force-active-vt gdm-2.29.92/daemon/simple-slave-main.c ---- gdm-2.29.92/daemon/simple-slave-main.c.force-active-vt 2010-03-08 16:53:57.000000000 -0500 -+++ gdm-2.29.92/daemon/simple-slave-main.c 2010-03-25 19:56:04.169102529 -0400 -@@ -178,9 +178,11 @@ main (int argc, +diff --git a/daemon/simple-slave-main.c b/daemon/simple-slave-main.c +index 7751b61..484301a 100644 +--- a/daemon/simple-slave-main.c ++++ b/daemon/simple-slave-main.c +@@ -177,9 +177,11 @@ main (int argc, DBusGConnection *connection; GdmSlave *slave; static char *display_id = NULL; @@ -702,9 +664,10 @@ diff -up gdm-2.29.92/daemon/simple-slave-main.c.force-active-vt gdm-2.29.92/daem if (slave == NULL) { goto out; } -diff -up gdm-2.29.92/data/Makefile.am.force-active-vt gdm-2.29.92/data/Makefile.am ---- gdm-2.29.92/data/Makefile.am.force-active-vt 2010-03-08 16:53:57.000000000 -0500 -+++ gdm-2.29.92/data/Makefile.am 2010-03-25 19:56:04.170104437 -0400 +diff --git a/data/Makefile.am b/data/Makefile.am +index 8624306..db31b6b 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am @@ -13,6 +13,7 @@ predir = $(gdmconfdir)/PreSession postlogindir = $(gdmconfdir)/PostLogin workingdir = $(GDM_WORKING_DIR) @@ -721,7 +684,7 @@ diff -up gdm-2.29.92/data/Makefile.am.force-active-vt gdm-2.29.92/data/Makefile. install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.path if test '!' -d $(DESTDIR)$(gdmconfdir); then \ -@@ -228,6 +230,12 @@ install-data-hook: gdm.conf-custom Xsess +@@ -228,6 +230,12 @@ install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.pa chown root:gdm $(DESTDIR)$(cachedir) || : ; \ fi @@ -734,4 +697,6 @@ diff -up gdm-2.29.92/data/Makefile.am.force-active-vt gdm-2.29.92/data/Makefile. $(INSTALL_DATA) $(srcdir)/gconf.path $(DESTDIR)$(workingdir)/.gconf.path gconftool-2 --direct --config-source=xml:merged:$(DESTDIR)$(workingdir)/.gconf.mandatory --recursive-unset / gconftool-2 --direct --config-source=xml:merged:$(DESTDIR)$(workingdir)/.gconf.mandatory --load $(srcdir)/session-setup.entries +-- +1.7.4.1 diff --git a/sources b/sources index 6e129f7..66de4b6 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -3c28e13a3d5e5f35d29669460acb57bb gdm-2.32.0.tar.bz2 +8ccce9438b23264050d3ea76bc3df74f gdm-2.32.1.tar.bz2