Package: gnome-shell
Version: 3.36.5-1

When the screen locks on gnome-shell 3.36.5-1, I get the following errors in my logs, and the screen ends up black with a cursor but never going to sleep, and moving the mouse brings the old screen contents up but does not let me unlock.

Doing a 'killall -HUP gnome-shell' by ssh brings it back, but that's obviously not a real solution.

JS ERROR: TypeError: widget.get_effect(...) is null
_updateBackgroundEffects@resource:///org/gnome/shell/ui/unlockDialog.js:651:20
_updateBackgrounds@resource:///org/gnome/shell/ui/unlockDialog.js:667:14
_init@resource:///org/gnome/shell/ui/unlockDialog.js:531:14
_ensureUnlockDialog@resource:///org/gnome/shell/ui/screenShield.js:379:28
activate@resource:///org/gnome/shell/ui/screenShield.js:564:14
lock@resource:///org/gnome/shell/ui/screenShield.js:620:14
_onStatusChanged/this._lockTimeoutId<@resource:///org/gnome/shell/ui/screenShield.js:263:26
JS ERROR: TypeError: widget.get_effect(...) is null
_updateBackgroundEffects@resource:///org/gnome/shell/ui/unlockDialog.js:651:20
_updateBackgrounds@resource:///org/gnome/shell/ui/unlockDialog.js:667:14
_init@resource:///org/gnome/shell/ui/unlockDialog.js:531:14
_ensureUnlockDialog@resource:///org/gnome/shell/ui/screenShield.js:379:28
activate@resource:///org/gnome/shell/ui/screenShield.js:564:14
_onLongLightbox@resource:///org/gnome/shell/ui/screenShield.js:308:18
onComplete@resource:///org/gnome/shell/ui/lightbox.js:195:18
_makeEaseCallback/<@resource:///org/gnome/shell/ui/environment.js:75:13
_easeActor/<@resource:///org/gnome/shell/ui/environment.js:149:56

Taking a look at the source, unlockDialog.js at line 651 as indeed assuming that widget.get_effect will return non-null, and other places such as getWindowDimmer in windowManager.js around line 156 go out of their way to be more careful.

The attached patch fixes the issue on my system.

Regards,
Zephaniah E. Loss-Cutler-Hull.
--- gnome-shell-3.36.5.orig/js/ui/unlockDialog.js
+++ gnome-shell-3.36.5/js/ui/unlockDialog.js
@@ -648,10 +648,14 @@ var UnlockDialog = GObject.registerClass
         const themeContext = St.ThemeContext.get_for_stage(global.stage);
 
         for (const widget of this._backgroundGroup.get_children()) {
-            widget.get_effect('blur').set({
-                brightness: BLUR_BRIGHTNESS,
-                sigma: BLUR_SIGMA * themeContext.scale_factor,
-            });
+            let effect = widget.get_effect('blur')
+
+	    if (effect) {
+		effect.set({
+		    brightness: BLUR_BRIGHTNESS,
+		    sigma: BLUR_SIGMA * themeContext.scale_factor,
+		});
+	    }
         }
     }
 

Reply via email to