@@ -28,6 +28,8 @@ var ScreensaverController = class {
2828 global . settings . set_boolean ( "session-locked-state" , false ) ;
2929 }
3030
31+ this . #screenSaverProxy = new ScreenSaver . ScreenSaverProxy ( ) ;
32+
3133 // The internal screensaver is the only option for wayland sessions. X11 sessions can use either
3234 // the internal one or cinnamon-screensaver (>= 6.7).
3335 if ( Meta . is_wayland_compositor ( ) || global . settings . get_boolean ( 'internal-screensaver-enabled' ) ) {
@@ -54,6 +56,26 @@ var ScreensaverController = class {
5456 this . #locked = false ;
5557 this . emit ( 'locked-changed' , false ) ;
5658 } ) ;
59+ } else {
60+ this . #screenSaverProxy. connectSignal ( 'ActiveChanged' , ( proxy , senderName , [ isActive ] ) => {
61+ this . #locked = isActive ;
62+ this . emit ( 'locked-changed' , isActive ) ;
63+ } ) ;
64+
65+ this . #screenSaverProxy. connect ( 'notify::g-name-owner' , ( ) => {
66+ if ( this . #screenSaverProxy. g_name_owner ) {
67+ this . #screenSaverProxy. GetActiveRemote ( ( result , error ) => {
68+ if ( result ) {
69+ let [ isActive ] = result ;
70+ this . #locked = isActive ;
71+ this . emit ( 'locked-changed' , isActive ) ;
72+ }
73+ } ) ;
74+ } else {
75+ this . #locked = false ;
76+ this . emit ( 'locked-changed' , false ) ;
77+ }
78+ } ) ;
5779 }
5880 }
5981
@@ -86,9 +108,6 @@ var ScreensaverController = class {
86108 return ;
87109 }
88110
89- if ( this . #screenSaverProxy === null )
90- this . #screenSaverProxy = new ScreenSaver . ScreenSaverProxy ( ) ;
91-
92111 this . #screenSaverProxy. LockRemote ( awayMessage || "" ) ;
93112 }
94113
0 commit comments