Skip to content
Permalink
Browse files

windib target can now control screensaver with SDL_VIDEO_ALLOW_SCREEN…

…SAVER.

  Fixes Bugzilla #415.
  • Loading branch information
icculus committed Jun 26, 2007
1 parent 7f96ad3 commit d488381b141a904234ab07bdc067ba1058345db0
Showing with 14 additions and 2 deletions.
  1. +7 −2 src/video/windib/SDL_dibevents.c
  2. +5 −0 src/video/windib/SDL_dibvideo.c
  3. +2 −0 src/video/windib/SDL_dibvideo.h
@@ -225,9 +225,14 @@ LRESULT DIB_HandleMessage(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPar

#if defined(SC_SCREENSAVE) && defined(SC_MONITORPOWER)
case WM_SYSCOMMAND: {
if ((wParam&0xFFF0)==SC_SCREENSAVE ||
(wParam&0xFFF0)==SC_MONITORPOWER)
const DWORD val = (DWORD) (wParam & 0xFFF0);
if ((val == SC_SCREENSAVE) || (val == SC_MONITORPOWER)) {
if (!this->hidden->allow_screensaver) {
/* Note that this doesn't stop anything on Vista
if the screensaver has a password. */
return(0);
}
}
}
/* Fall through to default processing */
#endif /* SC_SCREENSAVE && SC_MONITORPOWER */
@@ -282,6 +282,7 @@ static HPALETTE DIB_CreatePalette(int bpp)

int DIB_VideoInit(_THIS, SDL_PixelFormat *vformat)
{
const char *env = NULL;
#ifndef NO_CHANGEDISPLAYSETTINGS
int i;
DEVMODE settings;
@@ -380,6 +381,10 @@ int DIB_VideoInit(_THIS, SDL_PixelFormat *vformat)
this->hidden->origRotation = -1;
#endif

/* Allow environment override of screensaver disable. */
env = SDL_getenv("SDL_VIDEO_ALLOW_SCREENSAVER");
this->hidden->allow_screensaver = ( (env && SDL_atoi(env)) ? 1 : 0 );

/* We're done! */
return(0);
}
@@ -41,6 +41,8 @@ struct SDL_PrivateVideoData {
HBITMAP screen_bmp;
HPALETTE screen_pal;

int allow_screensaver;

#define NUM_MODELISTS 4 /* 8, 16, 24, and 32 bits-per-pixel */
int SDL_nummodes[NUM_MODELISTS];
SDL_Rect **SDL_modelist[NUM_MODELISTS];

0 comments on commit d488381

Please sign in to comment.