Alexandre Julliard : explorer: Move screen saver activation to the X11 driver.
Module: wine Branch: master Commit: ed22f0454bc50f7820fc93fbe8c2af4877083006 URL: https://source.winehq.org/git/wine.git/?a=commit;h=ed22f0454bc50f7820fc93fbe... Author: Alexandre Julliard <julliard(a)winehq.org> Date: Fri May 3 12:28:38 2019 +0200 explorer: Move screen saver activation to the X11 driver. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winex11.drv/window.c | 26 +++++++++++++++++++++++++- programs/explorer/desktop.c | 22 ++-------------------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index 97dee52..fb97ec5 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -21,6 +21,7 @@ */ #include "config.h" +#include "wine/port.h" #include <stdarg.h> #include <stdlib.h> @@ -2764,6 +2765,25 @@ static BOOL is_netwm_supported( Display *display, Atom atom ) /*********************************************************************** + * start_screensaver + */ +static LRESULT start_screensaver(void) +{ + if (root_window == DefaultRootWindow(gdi_display)) + { + const char *argv[3] = { "xdg-screensaver", "activate", NULL }; + int pid = _spawnvp( _P_DETACH, argv[0], argv ); + if (pid > 0) + { + TRACE( "started process %d\n", pid ); + return 0; + } + } + return -1; +} + + +/*********************************************************************** * SysCommand (X11DRV.@) * * Perform WM_SYSCOMMAND handling. @@ -2774,7 +2794,11 @@ LRESULT CDECL X11DRV_SysCommand( HWND hwnd, WPARAM wparam, LPARAM lparam ) int dir; struct x11drv_win_data *data; - if (!(data = get_win_data( hwnd ))) return -1; + if (!(data = get_win_data( hwnd ))) + { + if (wparam == SC_SCREENSAVE && hwnd == GetDesktopWindow()) return start_screensaver(); + return -1; + } if (!data->whole_window || !data->managed || !data->mapped) goto failed; switch (wparam & 0xfff0) diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c index 27b9b24..f4cc7b1 100644 --- a/programs/explorer/desktop.c +++ b/programs/explorer/desktop.c @@ -583,22 +583,6 @@ static void initialize_launchers( HWND hwnd ) } } -/* screen saver handler */ -static BOOL start_screensaver( void ) -{ - if (using_root) - { - const char *argv[3] = { "xdg-screensaver", "activate", NULL }; - int pid = _spawnvp( _P_DETACH, argv[0], argv ); - if (pid > 0) - { - WINE_TRACE( "started process %d\n", pid ); - return TRUE; - } - } - return FALSE; -} - static WNDPROC desktop_orig_wndproc; /* window procedure for the desktop window */ @@ -613,11 +597,9 @@ static LRESULT WINAPI desktop_wnd_proc( HWND hwnd, UINT message, WPARAM wp, LPAR { case SC_CLOSE: ExitWindows( 0, 0 ); - break; - case SC_SCREENSAVE: - return start_screensaver(); + return 0; } - return 0; + break; case WM_CLOSE: PostQuitMessage(0);
participants (1)
-
Alexandre Julliard