r27860 - in /desktop/experimental/gdm3/debian: TODO changelog patches/14_pam_dialog.patch patches/18_switch_kill_greeter.patch patches/series
joss at users.alioth.debian.org
joss at users.alioth.debian.org
Wed May 4 21:25:24 UTC 2011
Author: joss
Date: Wed May 4 21:25:06 2011
New Revision: 27860
URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=27860
Log:
* 18_switch_kill_greeter.patch: remove the 2 second timeout, it is
useless now.
* 14_pam_dialog.patch: completely revamped. Use a message queue to
show messages on the text area instead of showing an ugly dialog.
Modified:
desktop/experimental/gdm3/debian/TODO
desktop/experimental/gdm3/debian/changelog
desktop/experimental/gdm3/debian/patches/14_pam_dialog.patch
desktop/experimental/gdm3/debian/patches/18_switch_kill_greeter.patch
desktop/experimental/gdm3/debian/patches/series
Modified: desktop/experimental/gdm3/debian/TODO
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gdm3/debian/TODO?rev=27860&op=diff
==============================================================================
--- desktop/experimental/gdm3/debian/TODO [utf-8] (original)
+++ desktop/experimental/gdm3/debian/TODO [utf-8] Wed May 4 21:25:06 2011
@@ -1,5 +1,4 @@
Must be solved before going to unstable
- * Restore 14_pam_dialog.patch
* Check that a user logged on a tty is not considered as logged on
(previously fixed by 08_frequent-users_greeter.patch)
* Handle the DConf stuff in a more flexible way, allowing for system
Modified: desktop/experimental/gdm3/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gdm3/debian/changelog?rev=27860&op=diff
==============================================================================
--- desktop/experimental/gdm3/debian/changelog [utf-8] (original)
+++ desktop/experimental/gdm3/debian/changelog [utf-8] Wed May 4 21:25:06 2011
@@ -1,3 +1,12 @@
+gdm3 (3.0.0-2) UNRELEASED; urgency=low
+
+ * 18_switch_kill_greeter.patch: remove the 2 second timeout, it is
+ useless now.
+ * 14_pam_dialog.patch: completely revamped. Use a message queue to
+ show messages on the text area instead of showing an ugly dialog.
+
+ -- Josselin Mouette <joss at debian.org> Wed, 04 May 2011 21:09:36 +0200
+
gdm3 (3.0.0-1) experimental; urgency=low
* DISCLAIMER: this one is labeled “experimental” for a reason.
Modified: desktop/experimental/gdm3/debian/patches/14_pam_dialog.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gdm3/debian/patches/14_pam_dialog.patch?rev=27860&op=diff
==============================================================================
--- desktop/experimental/gdm3/debian/patches/14_pam_dialog.patch [utf-8] (original)
+++ desktop/experimental/gdm3/debian/patches/14_pam_dialog.patch [utf-8] Wed May 4 21:25:06 2011
@@ -1,90 +1,144 @@
GNOME #583856
Novell #439918
-Index: gdm-2.30.5/daemon/gdm-session-worker.c
+Index: gdm-3.0.0/gui/simple-greeter/gdm-greeter-login-window.c
===================================================================
---- gdm-2.30.5.orig/daemon/gdm-session-worker.c 2010-09-16 11:29:04.000000000 +0200
-+++ gdm-2.30.5/daemon/gdm-session-worker.c 2010-09-16 11:31:42.000000000 +0200
-@@ -815,7 +815,7 @@
- res = gdm_session_worker_ask_for_secret (worker, utf8_msg, &user_answer);
- break;
- case PAM_TEXT_INFO:
-- res = gdm_session_worker_report_info (worker, utf8_msg);
-+ res = gdm_session_worker_report_problem (worker, utf8_msg);
- break;
- case PAM_ERROR_MSG:
- res = gdm_session_worker_report_problem (worker, utf8_msg);
-Index: gdm-2.30.5/gui/simple-greeter/gdm-greeter-login-window.c
-===================================================================
---- gdm-2.30.5.orig/gui/simple-greeter/gdm-greeter-login-window.c 2010-08-11 19:40:07.000000000 +0200
-+++ gdm-2.30.5/gui/simple-greeter/gdm-greeter-login-window.c 2010-09-16 11:31:06.000000000 +0200
-@@ -667,9 +667,68 @@
+--- gdm-3.0.0.orig/gui/simple-greeter/gdm-greeter-login-window.c 2011-04-04 16:37:16.000000000 +0200
++++ gdm-3.0.0/gui/simple-greeter/gdm-greeter-login-window.c 2011-05-04 22:40:43.980253960 +0200
+@@ -131,8 +131,18 @@ struct GdmGreeterLoginWindowPrivate
- g_debug ("GdmGreeterLoginWindow: problem: %s", text);
+ guint login_button_handler_id;
+ guint start_session_handler_id;
++
++ GSList *message_queue;
++ guint message_timeout_id;
++ gboolean session_ready_to_start;
+ };
+
++typedef struct {
++ char *message_text;
++ guint timeout_seconds;
++ gboolean needs_beep;
++} QueuedMessage;
++
+ enum {
+ PROP_0,
+ PROP_DISPLAY_IS_LOCAL,
+@@ -225,6 +235,65 @@ set_message (GdmGreeterLoginWindow *logi
+ }
+
+ static void
++free_queued_message (QueuedMessage *msg)
++{
++ g_free (msg->message_text);
++ g_free (msg);
++}
++
++static void
++purge_message_queue (GdmGreeterLoginWindow *login_window)
++{
++ g_slist_free_full (login_window->priv->message_queue, (GDestroyNotify) free_queued_message);
++ if (login_window->priv->message_timeout_id) {
++ g_source_remove (login_window->priv->message_timeout_id);
++ login_window->priv->message_timeout_id = 0;
++ }
++}
++
++static gboolean
++message_set_or_timeout (GdmGreeterLoginWindow *login_window)
++{
++ QueuedMessage *msg;
++ if (login_window->priv->message_queue) {
++ msg = (QueuedMessage *)login_window->priv->message_queue->data;
++ set_message (login_window, msg->message_text);
++ login_window->priv->message_timeout_id = g_timeout_add_seconds (msg->timeout_seconds, (GSourceFunc)message_set_or_timeout, login_window);
++ if (msg->needs_beep)
++ gdk_window_beep (gtk_widget_get_window (GTK_WIDGET (login_window)));
++ free_queued_message (msg);
++ login_window->priv->message_queue = g_slist_delete_link (login_window->priv->message_queue,
++ login_window->priv->message_queue);
++ } else {
++ set_message (login_window, "");
++ login_window->priv->message_timeout_id = 0;
++ if (login_window->priv->session_ready_to_start) {
++ /* All messages have been shown, proceed */
++ g_signal_emit (login_window, signals[START_SESSION], 0);
++ }
++ }
++ return FALSE;
++}
++
++static void
++queue_message (GdmGreeterLoginWindow *login_window,
++ const char *text,
++ guint timeout_seconds,
++ gboolean needs_beep)
++{
++ QueuedMessage *msg = g_new0 (QueuedMessage, 1);
++ msg->message_text = g_strdup (text);
++ msg->timeout_seconds = timeout_seconds;
++ msg->needs_beep = needs_beep;
++
++ login_window->priv->message_queue = g_slist_append (login_window->priv->message_queue, msg);
++ if (login_window->priv->message_timeout_id == 0) {
++ message_set_or_timeout (login_window);
++ }
++}
++
++
++static void
+ on_user_interaction (GdmGreeterLoginWindow *login_window)
+ {
+ g_debug ("GdmGreeterLoginWindow: user is interacting with session!\n");
+@@ -640,6 +709,9 @@ reset_dialog (GdmGreeterLoginWindow *log
+
+ login_window->priv->num_queries = 0;
+
++ purge_message_queue (login_window);
++ login_window->priv->session_ready_to_start = FALSE;
++
+ if (dialog_mode == MODE_SELECTION) {
+ if (login_window->priv->timed_login_enabled) {
+ gdm_chooser_widget_set_item_timer (GDM_CHOOSER_WIDGET (login_window->priv->user_chooser),
+@@ -763,7 +835,7 @@ gdm_greeter_login_window_info (GdmGreete
+
+ g_debug ("GdmGreeterLoginWindow: info: %s", text);
- set_message (GDM_GREETER_LOGIN_WINDOW (login_window), text);
-+ _gdm_greeter_login_window_set_interactive (login_window, FALSE);
-+
-+ GtkWidget *dialog;
-+ GtkWidget *dialog_vbox;
-+ GtkWidget *dialog_action_area;
-+ GtkWidget *hbox;
-+ GtkWidget *vbox;
-+ GtkWidget *label;
-+ GtkWidget *button;
-+ GtkWidget *image;
-+ gchar *title;
-+ gchar *msg;
-+
-+ dialog = gtk_dialog_new ();
-+
-+ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
-+ gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
-+ gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
-+ gtk_window_set_title (GTK_WINDOW (dialog), "");
-+
-+ dialog_vbox = GTK_DIALOG (dialog)->vbox;
-+ gtk_box_set_spacing (GTK_BOX (dialog_vbox), 12);
-+
-+ hbox = gtk_hbox_new (FALSE, 12);
-+ gtk_box_pack_start (GTK_BOX (dialog_vbox), hbox, FALSE, FALSE, 0);
-+ gtk_container_set_border_width (GTK_CONTAINER (hbox), 5);
-+ gtk_widget_show (hbox);
-+
-+ image = gtk_image_new_from_stock ("gtk-dialog-warning", GTK_ICON_SIZE_DIALOG);
-+ gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
-+ gtk_widget_show (image);
-+
-+ vbox = gtk_vbox_new (FALSE, 6);
-+ gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
-+ gtk_widget_show (vbox);
-+
-+ title = g_strconcat ("<b>", text, "</b>", NULL);
-+ label = gtk_label_new (title);
-+ gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
-+ gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
-+ gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
-+ gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-+ gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-+ gtk_widget_show (label);
-+ g_free (title);
-+
-+ button = gtk_button_new_from_stock (GTK_STOCK_OK);
-+ gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, GTK_RESPONSE_OK);
-+ GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
-+ gtk_widget_show (button);
-+
-+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (login_window));
-+
-+ gtk_dialog_set_default_response (GTK_DIALOG (dialog),
-+ GTK_RESPONSE_OK);
-+ gtk_dialog_run (GTK_DIALOG (dialog));
-+ gtk_widget_destroy (dialog);
-+
- gdk_window_beep (GTK_WIDGET (login_window)->window);
++ queue_message (GDM_GREETER_LOGIN_WINDOW (login_window), text, 2, FALSE);
+ maybe_show_cancel_button (login_window);
-+ _gdm_greeter_login_window_set_interactive (login_window, TRUE);
-+
+ return TRUE;
+@@ -778,8 +850,7 @@ gdm_greeter_login_window_problem (GdmGre
+ g_debug ("GdmGreeterLoginWindow: problem: %s", text);
+ maybe_show_cancel_button (login_window);
+
+- set_message (GDM_GREETER_LOGIN_WINDOW (login_window), text);
+- gdk_window_beep (gtk_widget_get_window (GTK_WIDGET (login_window)));
++ queue_message (GDM_GREETER_LOGIN_WINDOW (login_window), text, 3, TRUE);
+
return TRUE;
}
+@@ -834,7 +905,12 @@ gdm_greeter_login_window_start_session_w
+ {
+ if (login_window->priv->is_interactive) {
+ g_debug ("GdmGreeterLoginWindow: starting session");
+- g_signal_emit (login_window, signals[START_SESSION], 0);
++ if (login_window->priv->message_timeout_id) {
++ /* Wait for all PAM messages to be displayed */
++ login_window->priv->session_ready_to_start = TRUE;
++ } else {
++ g_signal_emit (login_window, signals[START_SESSION], 0);
++ }
+ } else {
+ g_debug ("GdmGreeterLoginWindow: not starting session since "
+ "user hasn't had an opportunity to pick language "
+@@ -1799,6 +1875,8 @@ gdm_greeter_login_window_finalize (GObje
+ g_object_unref (login_window->priv->client);
+ }
++ purge_message_queue (login_window);
++
+ G_OBJECT_CLASS (gdm_greeter_login_window_parent_class)->finalize (object);
+ }
+
Modified: desktop/experimental/gdm3/debian/patches/18_switch_kill_greeter.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gdm3/debian/patches/18_switch_kill_greeter.patch?rev=27860&op=diff
==============================================================================
--- desktop/experimental/gdm3/debian/patches/18_switch_kill_greeter.patch [utf-8] (original)
+++ desktop/experimental/gdm3/debian/patches/18_switch_kill_greeter.patch [utf-8] Wed May 4 21:25:06 2011
@@ -1,53 +1,34 @@
Index: gdm-3.0.0/daemon/gdm-simple-slave.c
===================================================================
---- gdm-3.0.0.orig/daemon/gdm-simple-slave.c 2011-04-28 20:35:33.037192030 +0200
-+++ gdm-3.0.0/daemon/gdm-simple-slave.c 2011-04-28 20:40:41.430699692 +0200
-@@ -299,6 +299,23 @@ queue_auth_failed_reset (GdmSimpleSlave
- slave->priv->greeter_reset_id = g_idle_add ((GSourceFunc)auth_failed_reset_timeout, slave);
- }
-
-+static gboolean
-+greeter_stop_timeout (GdmSimpleSlave *slave)
-+{
-+ gdm_slave_stopped (GDM_SLAVE (slave));
-+ return FALSE;
-+}
-+
-+static void
-+queue_greeter_stop (GdmSimpleSlave *slave)
-+{
-+ if (slave->priv->greeter_reset_id > 0) {
-+ return;
-+ }
-+
-+ slave->priv->greeter_reset_id = g_timeout_add_seconds (2, (GSourceFunc)greeter_stop_timeout, slave);
-+}
-+
- static void
- on_session_setup_complete (GdmSession *session,
- GdmSimpleSlave *slave)
-@@ -475,7 +492,7 @@ start_session_timeout (GdmSimpleSlave *s
- when Xorg exits it switches to the VT it was
- started from. That interferes with fast
- user switching. */
+--- gdm-3.0.0.orig/daemon/gdm-simple-slave.c 2011-05-04 18:46:10.943454386 +0200
++++ gdm-3.0.0/daemon/gdm-simple-slave.c 2011-05-04 21:08:55.293323358 +0200
+@@ -470,12 +470,7 @@ start_session_timeout (GdmSimpleSlave *s
+ g_debug ("GdmSimpleSlave: migrated: %d", migrated);
+ if (migrated) {
+ destroy_session (slave);
+-
+- /* We don't stop the slave here because
+- when Xorg exits it switches to the VT it was
+- started from. That interferes with fast
+- user switching. */
- queue_greeter_reset (slave);
-+ queue_greeter_stop (slave);
++ gdm_slave_stopped (GDM_SLAVE (slave));
goto out;
}
-@@ -548,7 +565,7 @@ on_session_accreditation_failed (GdmSess
+@@ -548,7 +543,7 @@ on_session_accreditation_failed (GdmSess
user switching. */
destroy_session (slave);
- queue_greeter_reset (slave);
-+ queue_greeter_stop (slave);
++ gdm_slave_stopped (GDM_SLAVE (slave));
}
static void
Index: gdm-3.0.0/daemon/gdm-server.c
===================================================================
---- gdm-3.0.0.orig/daemon/gdm-server.c 2011-04-28 21:05:31.161982611 +0200
-+++ gdm-3.0.0/daemon/gdm-server.c 2011-04-28 21:07:21.482521945 +0200
+--- gdm-3.0.0.orig/daemon/gdm-server.c 2011-05-04 18:46:09.127445508 +0200
++++ gdm-3.0.0/daemon/gdm-server.c 2011-05-04 21:04:52.384135839 +0200
@@ -1143,7 +1143,12 @@ gdm_server_init (GdmServer *server)
server->priv = GDM_SERVER_GET_PRIVATE (server);
Modified: desktop/experimental/gdm3/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gdm3/debian/patches/series?rev=27860&op=diff
==============================================================================
--- desktop/experimental/gdm3/debian/patches/series [utf-8] (original)
+++ desktop/experimental/gdm3/debian/patches/series [utf-8] Wed May 4 21:25:06 2011
@@ -7,7 +7,7 @@
09_default_session.patch
10_gdm3_pam.patch
#11_xephyr_nested.patch
-#14_pam_dialog.patch
+14_pam_dialog.patch
16_xserver_path.patch
18_switch_kill_greeter.patch
#19_configure_xserver.patch
More information about the pkg-gnome-commits
mailing list