Paul Chitescu : explorer: WM_SYSCOMMAND SC_SCREENSAVE to desktop triggers screen saver.
Alexandre Julliard
julliard at winehq.org
Thu Sep 18 07:55:36 CDT 2008
Module: wine
Branch: master
Commit: ac865ad9318618d9f93bd18c94643c2beab99003
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ac865ad9318618d9f93bd18c94643c2beab99003
Author: Paul Chitescu <paulc at voip.null.ro>
Date: Wed Sep 17 18:12:28 2008 +0300
explorer: WM_SYSCOMMAND SC_SCREENSAVE to desktop triggers screen saver.
---
programs/explorer/desktop.c | 27 ++++++++++++++++++++++++++-
1 files changed, 26 insertions(+), 1 deletions(-)
diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c
index 8c6259d..a74c621 100644
--- a/programs/explorer/desktop.c
+++ b/programs/explorer/desktop.c
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "config.h"
+#include "wine/port.h"
#include <stdio.h>
#include "wine/unicode.h"
@@ -34,6 +36,22 @@ WINE_DEFAULT_DEBUG_CHANNEL(explorer);
static BOOL using_root;
+/* screen saver handler */
+static BOOL start_screensaver( void )
+{
+ if (using_root)
+ {
+ const char *argv[3] = { "xdg-screensaver", "activate", NULL };
+ int pid = spawnvp( _P_NOWAIT, argv[0], argv );
+ if (pid > 0)
+ {
+ WINE_TRACE( "started process %d\n", pid );
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
/* window procedure for the desktop window */
static LRESULT WINAPI desktop_wnd_proc( HWND hwnd, UINT message, WPARAM wp, LPARAM lp )
{
@@ -42,7 +60,14 @@ static LRESULT WINAPI desktop_wnd_proc( HWND hwnd, UINT message, WPARAM wp, LPAR
switch(message)
{
case WM_SYSCOMMAND:
- if ((wp & 0xfff0) == SC_CLOSE) ExitWindows( 0, 0 );
+ switch(wp & 0xfff0)
+ {
+ case SC_CLOSE:
+ ExitWindows( 0, 0 );
+ break;
+ case SC_SCREENSAVE:
+ return start_screensaver();
+ }
return 0;
case WM_CLOSE:
More information about the wine-cvs
mailing list