[WINLOGON]
authorEric Kohl <eric.kohl@reactos.org>
Sat, 23 Feb 2013 19:48:22 +0000 (19:48 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Sat, 23 Feb 2013 19:48:22 +0000 (19:48 +0000)
- Call DispatchSAS when the screen saver is started by a WM_LOGONNOTIFY message.
- Lock the workstation after the screen saver was terminated.

svn path=/trunk/; revision=58359

reactos/base/system/winlogon/sas.c

index 7e71ed1..da72988 100644 (file)
@@ -23,8 +23,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(winlogon);
 #define HK_CTRL_ALT_DEL   0
 #define HK_CTRL_SHIFT_ESC 1
 
-static BOOL inScrn = FALSE;
-
 /* FUNCTIONS ****************************************************************/
 
 static BOOL
@@ -940,9 +938,9 @@ DispatchSAS(
                }
                else
                {
+                       StartScreenSaver(Session);
                        if (bSecure)
                                DoGenericAction(Session, WLX_SAS_ACTION_LOCK_WKSTA);
-                       StartScreenSaver(Session);
                }
        }
        else if (dwSasType == WLX_SAS_TYPE_SCRNSVR_ACTIVITY)
@@ -1154,24 +1152,7 @@ SASWindowProc(
                 }
                 case LN_START_SCREENSAVE:
                 {
-                    BOOL bSecure = FALSE;
-
-                    if (inScrn)
-                       break;
-
-                    inScrn = TRUE;
-
-                    // lParam 1 == Secure
-                    if (lParam)
-                    {
-                       if (Session->Gina.Functions.WlxScreenSaverNotify(Session->Gina.Context, &bSecure))
-                       {
-                          if (bSecure) DoGenericAction(Session, WLX_SAS_ACTION_LOCK_WKSTA);
-                      }
-                    }
-
-                    StartScreenSaver(Session);
-                    inScrn = FALSE;
+                    DispatchSAS(Session, WLX_SAS_TYPE_SCRNSVR_TIMEOUT);
                     break;
                 }
                 case LN_LOCK_WORKSTATION: