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