Alexandre Julliard : winex11: Move the screen saver support to a new SystemParametersInfo entry point.

Alexandre Julliard julliard at winehq.org
Thu Nov 15 15:26:31 CST 2012


Module: wine
Branch: master
Commit: 67d16ddee3ba20ea0aa794a4153fcbbb67869a66
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=67d16ddee3ba20ea0aa794a4153fcbbb67869a66

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Nov 15 17:46:37 2012 +0100

winex11: Move the screen saver support to a new SystemParametersInfo entry point.

---

 dlls/winex11.drv/winex11.drv.spec |    3 +-
 dlls/winex11.drv/x11drv_main.c    |   58 +++++++++++++++++++-----------------
 2 files changed, 32 insertions(+), 29 deletions(-)

diff --git a/dlls/winex11.drv/winex11.drv.spec b/dlls/winex11.drv/winex11.drv.spec
index db3e4f5..f14be21 100644
--- a/dlls/winex11.drv/winex11.drv.spec
+++ b/dlls/winex11.drv/winex11.drv.spec
@@ -19,8 +19,6 @@
 @ cdecl GetCursorPos(ptr) X11DRV_GetCursorPos
 @ cdecl SetCursorPos(long long) X11DRV_SetCursorPos
 @ cdecl ClipCursor(ptr) X11DRV_ClipCursor
-@ cdecl GetScreenSaveActive() X11DRV_GetScreenSaveActive
-@ cdecl SetScreenSaveActive(long) X11DRV_SetScreenSaveActive
 @ cdecl ChangeDisplaySettingsEx(ptr ptr long long long) X11DRV_ChangeDisplaySettingsEx
 @ cdecl EnumDisplayMonitors(long ptr ptr long) X11DRV_EnumDisplayMonitors
 @ cdecl EnumDisplaySettingsEx(ptr long ptr long) X11DRV_EnumDisplaySettingsEx
@@ -54,6 +52,7 @@
 @ cdecl WindowMessage(long long long long) X11DRV_WindowMessage
 @ cdecl WindowPosChanging(long long long ptr ptr ptr ptr) X11DRV_WindowPosChanging
 @ cdecl WindowPosChanged(long long long ptr ptr ptr ptr ptr) X11DRV_WindowPosChanged
+@ cdecl SystemParametersInfo(long long ptr long) X11DRV_SystemParametersInfo
 
 # WinTab32
 @ cdecl AttachEventQueueToTablet(long) X11DRV_AttachEventQueueToTablet
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
index 3ff4233..ef6b1a9 100644
--- a/dlls/winex11.drv/x11drv_main.c
+++ b/dlls/winex11.drv/x11drv_main.c
@@ -696,35 +696,39 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
     return ret;
 }
 
-/***********************************************************************
- *              GetScreenSaveActive (X11DRV.@)
- *
- * Returns the active status of the screen saver
- */
-BOOL CDECL X11DRV_GetScreenSaveActive(void)
-{
-    int timeout, temp;
-    XGetScreenSaver(gdi_display, &timeout, &temp, &temp, &temp);
-    return timeout != 0;
-}
 
 /***********************************************************************
- *              SetScreenSaveActive (X11DRV.@)
- *
- * Activate/Deactivate the screen saver
+ *              SystemParametersInfo (X11DRV.@)
  */
-void CDECL X11DRV_SetScreenSaveActive(BOOL bActivate)
+BOOL CDECL X11DRV_SystemParametersInfo( UINT action, UINT int_param, void *ptr_param, UINT flags )
 {
-    int timeout, interval, prefer_blanking, allow_exposures;
-    static int last_timeout = 15 * 60;
-
-    XLockDisplay( gdi_display );
-    XGetScreenSaver(gdi_display, &timeout, &interval, &prefer_blanking,
-                    &allow_exposures);
-    if (timeout) last_timeout = timeout;
-
-    timeout = bActivate ? last_timeout : 0;
-    XSetScreenSaver(gdi_display, timeout, interval, prefer_blanking,
-                    allow_exposures);
-    XUnlockDisplay( gdi_display );
+    switch (action)
+    {
+    case SPI_GETSCREENSAVEACTIVE:
+        if (ptr_param)
+        {
+            int timeout, temp;
+            XGetScreenSaver(gdi_display, &timeout, &temp, &temp, &temp);
+            *(BOOL *)ptr_param = timeout != 0;
+            return TRUE;
+        }
+        break;
+    case SPI_SETSCREENSAVEACTIVE:
+        {
+            int timeout, interval, prefer_blanking, allow_exposures;
+            static int last_timeout = 15 * 60;
+
+            XLockDisplay( gdi_display );
+            XGetScreenSaver(gdi_display, &timeout, &interval, &prefer_blanking,
+                            &allow_exposures);
+            if (timeout) last_timeout = timeout;
+
+            timeout = int_param ? last_timeout : 0;
+            XSetScreenSaver(gdi_display, timeout, interval, prefer_blanking,
+                            allow_exposures);
+            XUnlockDisplay( gdi_display );
+        }
+        break;
+    }
+    return FALSE;  /* let user32 handle it */
 }




More information about the wine-cvs mailing list