[MSIEXEC] Sync with Wine Staging 2.16. CORE-13762
[reactos.git] / base / system / winlogon / screensaver.c
index 321c87b..a613928 100644 (file)
 
 #include "winlogon.h"
 
-WINE_DEFAULT_DEBUG_CHANNEL(winlogon);
-
 /* FUNCTIONS ****************************************************************/
 
 #ifndef USE_GETLASTINPUTINFO
 static
 LRESULT
 CALLBACK
-KeyboardActivityProc(IN INT nCode,
-                     IN WPARAM wParam,
-                     IN LPARAM lParam)
+KeyboardActivityProc(
+    IN INT nCode,
+    IN WPARAM wParam,
+    IN LPARAM lParam)
 {
     InterlockedExchange((LONG*)&WLSession->LastActivity, ((PKBDLLHOOKSTRUCT)lParam)->time);
     return CallNextHookEx(NULL, nCode, wParam, lParam);
@@ -30,9 +29,10 @@ KeyboardActivityProc(IN INT nCode,
 static
 LRESULT
 CALLBACK
-MouseActivityProc(IN INT nCode,
-                  IN WPARAM wParam,
-                  IN LPARAM lParam)
+MouseActivityProc(
+    IN INT nCode,
+    IN WPARAM wParam,
+    IN LPARAM lParam)
 {
     InterlockedExchange((LONG*)&WLSession->LastActivity, ((PMSLLHOOKSTRUCT)lParam)->time);
     return CallNextHookEx(NULL, nCode, wParam, lParam);
@@ -42,7 +42,8 @@ MouseActivityProc(IN INT nCode,
 
 static
 VOID
-LoadScreenSaverParameters(OUT LPDWORD Timeout)
+LoadScreenSaverParameters(
+    OUT LPDWORD Timeout)
 {
     BOOL Enabled;
 
@@ -72,7 +73,8 @@ LoadScreenSaverParameters(OUT LPDWORD Timeout)
 static
 DWORD
 WINAPI
-ScreenSaverThreadMain(IN LPVOID lpParameter)
+ScreenSaverThreadMain(
+    IN LPVOID lpParameter)
 {
     PWLSESSION Session = (PWLSESSION)lpParameter;
     HANDLE HandleArray[3];
@@ -175,13 +177,14 @@ ScreenSaverThreadMain(IN LPVOID lpParameter)
     }
 
 cleanup:
-    RevertToSelf();
     if (Session->hUserActivity)
         CloseHandle(Session->hUserActivity);
 
     if (Session->hEndOfScreenSaver)
         CloseHandle(Session->hEndOfScreenSaver);
 
+    RevertToSelf();
+
 #ifndef USE_GETLASTINPUTINFO
     if (Session->KeyboardHook)
         UnhookWindowsHookEx(Session->KeyboardHook);
@@ -192,12 +195,14 @@ cleanup:
 
     CloseHandle(Session->hEndOfScreenSaverThread);
     CloseHandle(Session->hScreenSaverParametersChanged);
+
     return 0;
 }
 
 
 BOOL
-InitializeScreenSaver(IN OUT PWLSESSION Session)
+InitializeScreenSaver(
+    IN OUT PWLSESSION Session)
 {
     HANDLE ScreenSaverThread;
 
@@ -249,7 +254,8 @@ InitializeScreenSaver(IN OUT PWLSESSION Session)
 
 
 VOID
-StartScreenSaver(IN PWLSESSION Session)
+StartScreenSaver(
+    IN PWLSESSION Session)
 {
     HKEY hKey = NULL, hCurrentUser = NULL;
     WCHAR szApplicationName[MAX_PATH];
@@ -273,7 +279,7 @@ StartScreenSaver(IN PWLSESSION Session)
                             &hCurrentUser);
     if (rc != ERROR_SUCCESS)
     {
-        ERR("WL: RegOpenCurrentUser Error!\n");
+        ERR("WL: RegOpenCurrentUser error %lu\n", rc);
         goto cleanup;
     }
 
@@ -284,7 +290,7 @@ StartScreenSaver(IN PWLSESSION Session)
                        &hKey);
     if (rc != ERROR_SUCCESS)
     {
-        ERR("WL: RegOpenKeyEx Error!\n");
+        ERR("WL: RegOpenKeyEx error %lu\n", rc);
         goto cleanup;
     }
 
@@ -296,7 +302,8 @@ StartScreenSaver(IN PWLSESSION Session)
                           &bufferSize);
     if (rc != ERROR_SUCCESS || dwType != REG_SZ)
     {
-        ERR("WL: RegQueryValueEx Error!\n");
+        if (rc != ERROR_FILE_NOT_FOUND)
+            ERR("WL: RegQueryValueEx error %lu\n", rc);
         goto cleanup;
     }
 
@@ -343,6 +350,8 @@ StartScreenSaver(IN PWLSESSION Session)
 
     SystemParametersInfoW(SPI_SETSCREENSAVERRUNNING, TRUE, NULL, 0);
 
+    CallNotificationDlls(Session, StartScreenSaverHandler);
+
     /* Wait the end of the process or some other activity */
     ResetEvent(Session->hUserActivity);
     HandleArray[0] = ProcessInformation.hProcess;
@@ -358,14 +367,17 @@ StartScreenSaver(IN PWLSESSION Session)
 
     CloseHandle(ProcessInformation.hProcess);
 
+    CallNotificationDlls(Session, StopScreenSaverHandler);
+
 cleanup:
-    RevertToSelf();
     if (hKey)
         RegCloseKey(hKey);
 
     if (hCurrentUser)
         RegCloseKey(hCurrentUser);
 
+    RevertToSelf();
+
     if (!ret)
     {
         PostMessageW(Session->SASWindow, WLX_WM_SAS, WLX_SAS_TYPE_SCRNSVR_ACTIVITY, 0);