diff -up gnome-screensaver-2.16.1/src/gnome-screensaver-dialog.c.dont-stall gnome-screensaver-2.16.1/src/gnome-screensaver-dialog.c --- gnome-screensaver-2.16.1/src/gnome-screensaver-dialog.c.dont-stall 2010-11-23 15:42:17.034667540 -0500 +++ gnome-screensaver-2.16.1/src/gnome-screensaver-dialog.c 2010-11-23 15:50:00.934467968 -0500 @@ -209,6 +209,7 @@ auth_message_handler (GSAuthMessageStyle gpointer data) { gboolean ret; + gboolean asked_question; GSLockPlug *plug; const char *message; @@ -229,6 +230,7 @@ auth_message_handler (GSAuthMessageStyle if (msg != NULL) { char *resp; resp = request_response (plug, message, TRUE); + asked_question = TRUE; *response = resp; } break; @@ -236,25 +238,30 @@ auth_message_handler (GSAuthMessageStyle if (msg != NULL) { char *resp; resp = request_response (plug, message, FALSE); + asked_question = TRUE; *response = resp; } break; case GS_AUTH_MESSAGE_ERROR_MSG: gs_lock_plug_show_message (plug, message); + asked_question = FALSE; break; case GS_AUTH_MESSAGE_TEXT_INFO: gs_lock_plug_show_message (plug, message); + asked_question = FALSE; break; default: g_assert_not_reached (); } - if (*response == NULL) { - gs_debug ("Got no response"); - ret = FALSE; - } else { - gs_lock_plug_show_message (plug, _("Checking...")); - gs_lock_plug_set_sensitive (plug, FALSE); + if (asked_question) { + if (*response == NULL) { + gs_debug ("Got no response"); + ret = FALSE; + } else { + gs_lock_plug_show_message (plug, _("Checking...")); + gs_lock_plug_set_sensitive (plug, FALSE); + } } /* we may have pending events that should be processed before continuing back into PAM */ @@ -262,7 +269,9 @@ auth_message_handler (GSAuthMessageStyle gtk_main_iteration (); } - gs_lock_plug_set_busy (plug); + if (asked_question) { + gs_lock_plug_set_busy (plug); + } gs_profile_end (NULL); return ret; diff -up gnome-screensaver-2.16.1/src/gs-auth-pam.c.dont-stall gnome-screensaver-2.16.1/src/gs-auth-pam.c