From 678d3623ed2a9f1cb3a32f4effa38e7d4ec29927 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 752eeaad1..a6f825a7e 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js @@ -658,13 +658,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)) {