From e56bbe3f71732e44af0d153376556bfc66ec9c1d Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 28 Feb 2014 14:23:41 -0800 Subject: [PATCH] Added a hint to enable the screensaver by default --- include/SDL_hints.h | 11 +++++++++++ src/video/SDL_video.c | 12 +++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 2e80a6ec6..26edca586 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -128,6 +128,17 @@ extern "C" { */ #define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC" +/** + * \brief A variable controlling whether the screensaver is enabled. + * + * This variable can be set to the following values: + * "0" - Disable screensaver + * "1" - Enable screensaver + * + * By default SDL will disable the screensaver. + */ +#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER" + /** * \brief A variable controlling whether the X11 VidMode extension should be used. * diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index dcce0822d..87e8506c0 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -421,8 +421,10 @@ int SDL_VideoInit(const char *driver_name) { SDL_VideoDevice *video; + const char *hint; int index; int i; + SDL_bool allow_screensaver; /* Check to make sure we don't overwrite '_this' */ if (_this != NULL) { @@ -510,7 +512,15 @@ SDL_VideoInit(const char *driver_name) joystick, or passively watching a movie. Things that use SDL but function more like a normal desktop app should explicitly reenable the screensaver. */ - SDL_DisableScreenSaver(); + hint = SDL_GetHint(SDL_HINT_VIDEO_ALLOW_SCREENSAVER); + if (hint) { + allow_screensaver = SDL_atoi(hint) ? SDL_TRUE : SDL_FALSE; + } else { + allow_screensaver = SDL_FALSE; + } + if (!allow_screensaver) { + SDL_DisableScreenSaver(); + } /* If we don't use a screen keyboard, turn on text input by default, otherwise programs that expect to get text events without enabling