From 127f10e7a8bbbbd089d217f8cd89971c187ae9c3 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Tue, 5 Mar 2013 01:51:28 -0500 Subject: [PATCH] screenShield: Don't wait until the dialog is loaded before opening it If we wait asynchronously, key presses while the shield is opening will be dropped in the void. https://bugzilla.gnome.org/show_bug.cgi?id=686740 --- js/gdm/loginDialog.js | 11 +---------- js/ui/screenShield.js | 14 ++++++-------- js/ui/unlockDialog.js | 5 ----- 3 files changed, 7 insertions(+), 23 deletions(-) diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js index b1ee38462..e9cb99fcf 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js @@ -1014,7 +1014,7 @@ const LoginDialog = new Lang.Class({ function() { // If we're just starting out, start on the right // item. - if (!this.is_loaded) { + if (!this._userManager.is_loaded) { this._userList.jumpToItem(this._timedLoginItem); } }, @@ -1152,15 +1152,6 @@ const LoginDialog = new Lang.Class({ Lang.bind(this, function(userManager, user) { this._userList.removeUser(user); })); - - // emitted in idle so caller doesn't have to explicitly check if - // it's loaded immediately after construction - // (since there's no way the caller could be listening for - // 'loaded' yet) - Mainloop.idle_add(Lang.bind(this, function() { - this.emit('loaded'); - this.is_loaded = true; - })); }, _onOpened: function() { diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js index 4081219be..ada1024e6 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js @@ -892,14 +892,12 @@ const ScreenShield = new Lang.Class({ let time = global.get_current_time(); - this._dialog.connect('loaded', Lang.bind(this, function() { - if (!this._dialog.open(time, onPrimary)) { - // This is kind of an impossible error: we're already modal - // by the time we reach this... - log('Could not open login dialog: failed to acquire grab'); - this.deactivate(true); - } - })); + if (!this._dialog.open(time, onPrimary)) { + // This is kind of an impossible error: we're already modal + // by the time we reach this... + log('Could not open login dialog: failed to acquire grab'); + this.deactivate(true); + } this._dialog.connect('failed', Lang.bind(this, this._onUnlockFailed)); this._dialog.connect('unlocked', Lang.bind(this, this._onUnlockSucceded)); diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js index 775cab5ed..07cbe4fbc 100644 --- a/js/ui/unlockDialog.js +++ b/js/ui/unlockDialog.js @@ -141,11 +141,6 @@ const UnlockDialog = new Lang.Class({ let batch = new Batch.Hold(); this._userVerifier.begin(this._userName, batch); - GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() { - this.emit('loaded'); - return false; - })); - Main.ctrlAltTabManager.addGroup(this.dialogLayout, _("Unlock Window"), 'dialog-password-symbolic'); this._idleMonitor = new GnomeDesktop.IdleMonitor();