From 271508c0a871ae508b94e06a7d11985b5998bc12 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Tue, 6 Nov 2012 23:41:51 +0100 Subject: [PATCH] ScreenShield: fix code to detect missing unlock dialog If the session mode has no locking support, screenshield had code to unlock automatically, but it did so by checking the return value of the constructor, instead of checking if the constructor was actually callable, so it would get a TypeError before reaching the check. https://bugzilla.gnome.org/show_bug.cgi?id=687708 --- js/ui/screenShield.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js index 7c7c7c020..8de5c6245 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js @@ -713,13 +713,15 @@ const ScreenShield = new Lang.Class({ _ensureUnlockDialog: function(onPrimary) { if (!this._dialog) { let constructor = Main.sessionMode.unlockDialog; - this._dialog = new constructor(this._lockDialogGroup); - if (!this._dialog) { + if (!constructor) { // This session mode has no locking capabilities this.unlock(); return; } + this._dialog = new constructor(this._lockDialogGroup); + + let time = global.get_current_time(); this._dialog.connect('loaded', Lang.bind(this, function() { if (!this._dialog.open(time, onPrimary)) {