windib target can now control screensaver with SDL_VIDEO_ALLOW_SCREENSAVER.

Fixes Bugzilla #415.

--HG--
branch : SDL-1.2
This commit is contained in:
Ryan C. Gordon 2007-06-26 20:02:40 +00:00
parent 857fb30004
commit ab4f135dd8
3 changed files with 14 additions and 2 deletions

View File

@ -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 */

View File

@ -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);
}

View File

@ -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];