Implemented SDL_GetHintBoolean() to make it easier to check boolean hints
diff --git a/include/SDL_hints.h b/include/SDL_hints.h
index 9c914d0..9efb955 100644
--- a/include/SDL_hints.h
+++ b/include/SDL_hints.h
@@ -739,6 +739,13 @@
extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name);
/**
+ * \brief Get a hint
+ *
+ * \return The boolean value of a hint variable.
+ */
+extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value);
+
+/**
* \brief Add a function to watch a particular hint
*
* \param name The hint to watch
diff --git a/src/SDL_hints.c b/src/SDL_hints.c
index 0452332..390d94f 100644
--- a/src/SDL_hints.c
+++ b/src/SDL_hints.c
@@ -118,6 +118,19 @@
return env;
}
+SDL_bool
+SDL_GetHintBoolean(const char *name, SDL_bool default_value)
+{
+ const char *hint = SDL_GetHint(name);
+ if (!hint) {
+ return default_value;
+ }
+ if (*hint == '0' || SDL_strcasecmp(hint, "false") == 0) {
+ return SDL_FALSE;
+ }
+ return SDL_TRUE;
+}
+
void
SDL_AddHintCallback(const char *name, SDL_HintCallback callback, void *userdata)
{
diff --git a/src/core/winrt/SDL_winrtapp_direct3d.cpp b/src/core/winrt/SDL_winrtapp_direct3d.cpp
index 2398e72..e4ffada 100644
--- a/src/core/winrt/SDL_winrtapp_direct3d.cpp
+++ b/src/core/winrt/SDL_winrtapp_direct3d.cpp
@@ -822,11 +822,8 @@
SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_AC_BACK);
SDL_SendKeyboardKey(SDL_RELEASED, SDL_SCANCODE_AC_BACK);
- const char *hint = SDL_GetHint(SDL_HINT_WINRT_HANDLE_BACK_BUTTON);
- if (hint) {
- if (*hint == '1') {
- args->Handled = true;
- }
+ if (SDL_GetHintBoolean(SDL_HINT_WINRT_HANDLE_BACK_BUTTON, SDL_FALSE)) {
+ args->Handled = true;
}
}
@@ -854,3 +851,5 @@
*/
}
#endif
+
+/* vi: set ts=4 sw=4 expandtab: */
diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h
index fbb03f9..9541611 100644
--- a/src/dynapi/SDL_dynapi_overrides.h
+++ b/src/dynapi/SDL_dynapi_overrides.h
@@ -611,3 +611,4 @@
#define SDL_SetWindowResizable SDL_SetWindowResizable_REAL
#define SDL_CreateRGBSurfaceWithFormat SDL_CreateRGBSurfaceWithFormat_REAL
#define SDL_CreateRGBSurfaceWithFormatFrom SDL_CreateRGBSurfaceWithFormatFrom_REAL
+#define SDL_GetHintBoolean SDL_GetHintBoolean_REAL
diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h
index b7cf285..a08835b 100644
--- a/src/dynapi/SDL_dynapi_procs.h
+++ b/src/dynapi/SDL_dynapi_procs.h
@@ -643,3 +643,4 @@
SDL_DYNAPI_PROC(void,SDL_SetWindowResizable,(SDL_Window *a, SDL_bool b),(a,b),)
SDL_DYNAPI_PROC(SDL_Surface*,SDL_CreateRGBSurfaceWithFormat,(Uint32 a, int b, int c, int d, Uint32 e),(a,b,c,d,e),return)
SDL_DYNAPI_PROC(SDL_Surface*,SDL_CreateRGBSurfaceWithFormatFrom,(void *a, int b, int c, int d, int e, Uint32 f),(a,b,c,d,e,f),return)
+SDL_DYNAPI_PROC(SDL_bool,SDL_GetHintBoolean,(const char *a, SDL_bool b),(a,b),return)
diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c
index f343c52..4236a99 100644
--- a/src/events/SDL_mouse.c
+++ b/src/events/SDL_mouse.c
@@ -564,21 +564,11 @@
static SDL_bool
ShouldUseRelativeModeWarp(SDL_Mouse *mouse)
{
- const char *hint;
-
if (!mouse->SetRelativeMouseMode) {
return SDL_TRUE;
}
- hint = SDL_GetHint(SDL_HINT_MOUSE_RELATIVE_MODE_WARP);
- if (hint) {
- if (*hint == '0') {
- return SDL_FALSE;
- } else {
- return SDL_TRUE;
- }
- }
- return SDL_FALSE;
+ return SDL_GetHintBoolean(SDL_HINT_MOUSE_RELATIVE_MODE_WARP, SDL_FALSE);
}
int
diff --git a/src/events/SDL_quit.c b/src/events/SDL_quit.c
index 5b7105e..3cb6b3d 100644
--- a/src/events/SDL_quit.c
+++ b/src/events/SDL_quit.c
@@ -91,9 +91,7 @@
int
SDL_QuitInit(void)
{
- const char *hint = SDL_GetHint(SDL_HINT_NO_SIGNAL_HANDLERS);
- disable_signals = hint && (SDL_atoi(hint) == 1);
- if (!disable_signals) {
+ if (!SDL_GetHintBoolean(SDL_HINT_NO_SIGNAL_HANDLERS, SDL_FALSE)) {
return SDL_QuitInit_Internal();
}
return 0;
diff --git a/src/haptic/windows/SDL_xinputhaptic.c b/src/haptic/windows/SDL_xinputhaptic.c
index 5b0cb8c..afbab45 100644
--- a/src/haptic/windows/SDL_xinputhaptic.c
+++ b/src/haptic/windows/SDL_xinputhaptic.c
@@ -44,8 +44,7 @@
int
SDL_XINPUT_HapticInit(void)
{
- const char *env = SDL_GetHint(SDL_HINT_XINPUT_ENABLED);
- if (!env || SDL_atoi(env)) {
+ if (SDL_GetHintBoolean(SDL_HINT_XINPUT_ENABLED, SDL_TRUE)) {
loaded_xinput = (WIN_LoadXInputDLL() == 0);
}
diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c
index 929a9ac..075b657 100644
--- a/src/joystick/android/SDL_sysjoystick.c
+++ b/src/joystick/android/SDL_sysjoystick.c
@@ -352,11 +352,9 @@
int
SDL_SYS_JoystickInit(void)
{
- const char *hint;
SDL_SYS_JoystickDetect();
- hint = SDL_GetHint(SDL_HINT_ACCELEROMETER_AS_JOYSTICK);
- if (!hint || SDL_atoi(hint)) {
+ if (SDL_GetHintBoolean(SDL_HINT_ACCELEROMETER_AS_JOYSTICK, SDL_TRUE)) {
/* Default behavior, accelerometer as joystick */
Android_AddJoystick(ANDROID_ACCELEROMETER_DEVICE_ID, ANDROID_ACCELEROMETER_NAME, SDL_TRUE, 0, 3, 0, 0);
}
diff --git a/src/joystick/iphoneos/SDL_sysjoystick.m b/src/joystick/iphoneos/SDL_sysjoystick.m
index da92263..eb7e000 100644
--- a/src/joystick/iphoneos/SDL_sysjoystick.m
+++ b/src/joystick/iphoneos/SDL_sysjoystick.m
@@ -127,13 +127,11 @@
}
#if TARGET_OS_TV
else if (controller.microGamepad) {
- const char *hint = SDL_GetHint(SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION);
-
device->naxes = 2; /* treat the touch surface as two axes */
device->nhats = 0; /* apparently the touch surface-as-dpad is buggy */
device->nbuttons = 3; /* AX, pause button */
- controller.microGamepad.allowsRotation = (hint != NULL && *hint != '0');
+ controller.microGamepad.allowsRotation = SDL_GetHintBoolean(SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION, SDL_FALSE);
}
#endif /* TARGET_OS_TV */
@@ -279,8 +277,7 @@
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
#if !TARGET_OS_TV
- const char *hint = SDL_GetHint(SDL_HINT_ACCELEROMETER_AS_JOYSTICK);
- if (!hint || SDL_atoi(hint)) {
+ if (SDL_GetHintBoolean(SDL_HINT_ACCELEROMETER_AS_JOYSTICK, SDL_TRUE)) {
/* Default behavior, accelerometer as joystick */
SDL_SYS_AddJoystickDevice(nil, SDL_TRUE);
}
diff --git a/src/joystick/windows/SDL_xinputjoystick.c b/src/joystick/windows/SDL_xinputjoystick.c
index 3e34117..d581d45 100644
--- a/src/joystick/windows/SDL_xinputjoystick.c
+++ b/src/joystick/windows/SDL_xinputjoystick.c
@@ -40,8 +40,7 @@
{
static int s_XInputUseOldJoystickMapping = -1;
if (s_XInputUseOldJoystickMapping < 0) {
- const char *hint = SDL_GetHint(SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING);
- s_XInputUseOldJoystickMapping = (hint && *hint == '1') ? 1 : 0;
+ s_XInputUseOldJoystickMapping = SDL_GetHintBoolean(SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING, SDL_FALSE);
}
return (s_XInputUseOldJoystickMapping > 0);
}
@@ -54,10 +53,7 @@
int
SDL_XINPUT_JoystickInit(void)
{
- const char *env = SDL_GetHint(SDL_HINT_XINPUT_ENABLED);
- if (env && !SDL_atoi(env)) {
- s_bXInputEnabled = SDL_FALSE;
- }
+ s_bXInputEnabled = SDL_GetHintBoolean(SDL_HINT_XINPUT_ENABLED, SDL_TRUE);
if (s_bXInputEnabled && WIN_LoadXInputDLL() < 0) {
s_bXInputEnabled = SDL_FALSE; /* oh well. */
diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c
index 1631a72..c4601ed 100644
--- a/src/render/SDL_render.c
+++ b/src/render/SDL_render.c
@@ -234,12 +234,11 @@
return NULL;
}
- hint = SDL_GetHint(SDL_HINT_RENDER_VSYNC);
- if (hint) {
- if (*hint == '0') {
- flags &= ~SDL_RENDERER_PRESENTVSYNC;
- } else {
+ if (SDL_GetHint(SDL_HINT_RENDER_VSYNC)) {
+ if (SDL_GetHintBoolean(SDL_HINT_RENDER_VSYNC, SDL_TRUE)) {
flags |= SDL_RENDERER_PRESENTVSYNC;
+ } else {
+ flags &= ~SDL_RENDERER_PRESENTVSYNC;
}
}
diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c
index c54897f..151dbbf 100644
--- a/src/render/direct3d/SDL_render_d3d.c
+++ b/src/render/direct3d/SDL_render_d3d.c
@@ -512,7 +512,6 @@
D3D_RenderData *data;
SDL_SysWMinfo windowinfo;
HRESULT result;
- const char *hint;
D3DPRESENT_PARAMETERS pparams;
IDirect3DSwapChain9 *chain;
D3DCAPS9 caps;
@@ -607,8 +606,7 @@
device_flags |= D3DCREATE_SOFTWARE_VERTEXPROCESSING;
}
- hint = SDL_GetHint(SDL_HINT_RENDER_DIRECT3D_THREADSAFE);
- if (hint && SDL_atoi(hint)) {
+ if (SDL_GetHintBoolean(SDL_HINT_RENDER_DIRECT3D_THREADSAFE, SDL_FALSE)) {
device_flags |= D3DCREATE_MULTITHREADED;
}
diff --git a/src/render/direct3d11/SDL_render_d3d11.c b/src/render/direct3d11/SDL_render_d3d11.c
index e6b73d4..df0f155 100644
--- a/src/render/direct3d11/SDL_render_d3d11.c
+++ b/src/render/direct3d11/SDL_render_d3d11.c
@@ -1000,7 +1000,6 @@
IDXGIDevice1 *dxgiDevice = NULL;
HRESULT result = S_OK;
UINT creationFlags;
- const char *hint;
/* This array defines the set of DirectX hardware feature levels this app will support.
* Note the ordering should be preserved.
@@ -1078,8 +1077,7 @@
creationFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
/* Make sure Direct3D's debugging feature gets used, if the app requests it. */
- hint = SDL_GetHint(SDL_HINT_RENDER_DIRECT3D11_DEBUG);
- if (hint && SDL_atoi(hint) > 0) {
+ if (SDL_GetHintBoolean(SDL_HINT_RENDER_DIRECT3D11_DEBUG, SDL_FALSE)) {
creationFlags |= D3D11_CREATE_DEVICE_DEBUG;
}
diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c
index 7dbd9fa..df0fd05 100644
--- a/src/render/opengl/SDL_render_gl.c
+++ b/src/render/opengl/SDL_render_gl.c
@@ -390,7 +390,6 @@
{
SDL_Renderer *renderer;
GL_RenderData *data;
- const char *hint;
GLint value;
Uint32 window_flags;
int profile_mask = 0, major = 0, minor = 0;
@@ -528,8 +527,7 @@
}
/* Check for shader support */
- hint = SDL_GetHint(SDL_HINT_RENDER_OPENGL_SHADERS);
- if (!hint || *hint != '0') {
+ if (SDL_GetHintBoolean(SDL_HINT_RENDER_OPENGL_SHADERS, SDL_TRUE)) {
data->shaders = GL_CreateShaderContext();
}
SDL_LogInfo(SDL_LOG_CATEGORY_RENDER, "OpenGL shaders: %s",
diff --git a/src/thread/windows/SDL_systhread.c b/src/thread/windows/SDL_systhread.c
index ffad0d8..20a4bd6e 100644
--- a/src/thread/windows/SDL_systhread.c
+++ b/src/thread/windows/SDL_systhread.c
@@ -171,8 +171,7 @@
THREADNAME_INFO inf;
/* C# and friends will try to catch this Exception, let's avoid it. */
- const char *hint = SDL_GetHint(SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING);
- if (hint && *hint == '1') {
+ if (SDL_GetHintBoolean(SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING, SDL_FALSE)) {
return;
}
diff --git a/src/video/SDL_bmp.c b/src/video/SDL_bmp.c
index e71c6cc..8b72489 100644
--- a/src/video/SDL_bmp.c
+++ b/src/video/SDL_bmp.c
@@ -556,10 +556,7 @@
}
if (save32bit) {
- const char *hint = SDL_GetHint(SDL_HINT_BMP_SAVE_LEGACY_FORMAT);
- if (hint != NULL && (hint[0] == '1' && hint[1] == 0)) {
- saveLegacyBMP = SDL_TRUE;
- }
+ saveLegacyBMP = SDL_GetHintBoolean(SDL_HINT_BMP_SAVE_LEGACY_FORMAT, SDL_FALSE);
}
if (surface && (SDL_LockSurface(surface) == 0)) {
diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
index f488e64..0a21ef5 100644
--- a/src/video/SDL_video.c
+++ b/src/video/SDL_video.c
@@ -181,7 +181,7 @@
/* See if the user or application wants a specific behavior */
hint = SDL_GetHint(SDL_HINT_FRAMEBUFFER_ACCELERATION);
if (hint) {
- if (*hint == '0') {
+ if (*hint == '0' || SDL_strcasecmp(hint, "false") == 0) {
return SDL_FALSE;
} else {
return SDL_TRUE;
@@ -258,6 +258,8 @@
/* Check to see if there's a specific driver requested */
if (hint && *hint != '0' && *hint != '1' &&
+ SDL_strcasecmp(hint, "true") != 0 &&
+ SDL_strcasecmp(hint, "false") != 0 &&
SDL_strcasecmp(hint, "software") != 0) {
for (i = 0; i < SDL_GetNumRenderDrivers(); ++i) {
SDL_RendererInfo info;
@@ -447,10 +449,8 @@
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) {
@@ -538,13 +538,7 @@
joystick, or passively watching a movie. Things that use SDL but
function more like a normal desktop app should explicitly reenable the
screensaver. */
- 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) {
+ if (!SDL_GetHintBoolean(SDL_HINT_VIDEO_ALLOW_SCREENSAVER, SDL_FALSE)) {
SDL_DisableScreenSaver();
}
@@ -1336,7 +1330,6 @@
SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags)
{
SDL_Window *window;
- const char *hint;
if (!_this) {
/* Initialize the video system if needed */
@@ -1384,8 +1377,7 @@
* SDL_WINDOW_ALLOW_HIGHDPI flag.
*/
if (flags & SDL_WINDOW_ALLOW_HIGHDPI) {
- hint = SDL_GetHint(SDL_HINT_VIDEO_HIGHDPI_DISABLED);
- if (hint && SDL_atoi(hint) > 0) {
+ if (SDL_GetHintBoolean(SDL_HINT_VIDEO_HIGHDPI_DISABLED, SDL_FALSE)) {
flags &= ~SDL_WINDOW_ALLOW_HIGHDPI;
}
}
@@ -2509,8 +2501,6 @@
static SDL_bool
ShouldMinimizeOnFocusLoss(SDL_Window * window)
{
- const char *hint;
-
if (!(window->flags & SDL_WINDOW_FULLSCREEN) || window->is_destroying) {
return SDL_FALSE;
}
@@ -2521,16 +2511,7 @@
}
#endif
- hint = SDL_GetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS);
- if (hint) {
- if (*hint == '0') {
- return SDL_FALSE;
- } else {
- return SDL_TRUE;
- }
- }
-
- return SDL_TRUE;
+ return SDL_GetHintBoolean(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, SDL_TRUE);
}
void
@@ -3779,15 +3760,7 @@
SDL_bool
SDL_ShouldAllowTopmost(void)
{
- const char *hint = SDL_GetHint(SDL_HINT_ALLOW_TOPMOST);
- if (hint) {
- if (*hint == '0') {
- return SDL_FALSE;
- } else {
- return SDL_TRUE;
- }
- }
- return SDL_TRUE;
+ return SDL_GetHintBoolean(SDL_HINT_ALLOW_TOPMOST, SDL_TRUE);
}
int
diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m
index 1e78602..b604fd7 100644
--- a/src/video/cocoa/SDL_cocoaevents.m
+++ b/src/video/cocoa/SDL_cocoaevents.m
@@ -348,8 +348,7 @@
[SDLApplication sharedApplication];
SDL_assert(NSApp != nil);
- const char *hint = SDL_GetHint(SDL_HINT_MAC_BACKGROUND_APP);
- if (!hint || *hint == '0') {
+ if (!SDL_GetHintBoolean(SDL_HINT_MAC_BACKGROUND_APP, SDL_FALSE)) {
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
[NSApp activateIgnoringOtherApps:YES];
}
diff --git a/src/video/cocoa/SDL_cocoavideo.m b/src/video/cocoa/SDL_cocoavideo.m
index 76d558e..92805f5 100644
--- a/src/video/cocoa/SDL_cocoavideo.m
+++ b/src/video/cocoa/SDL_cocoavideo.m
@@ -150,8 +150,7 @@
Cocoa_InitKeyboard(_this);
Cocoa_InitMouse(_this);
- const char *hint = SDL_GetHint(SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES);
- data->allow_spaces = ( (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6) && (!hint || (*hint != '0')) );
+ data->allow_spaces = ((floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6) && SDL_GetHintBoolean(SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES, SDL_TRUE));
/* The IOPM assertion API can disable the screensaver as of 10.7. */
data->screensaver_use_iopm = floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6;
diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m
index 25c98a9..cfad548 100644
--- a/src/video/cocoa/SDL_cocoawindow.m
+++ b/src/video/cocoa/SDL_cocoawindow.m
@@ -211,8 +211,7 @@
static int
GetHintCtrlClickEmulateRightClick()
{
- const char *hint = SDL_GetHint( SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK );
- return hint != NULL && *hint != '0';
+ return SDL_GetHintBoolean(SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK, SDL_FALSE);
}
static NSUInteger
@@ -1118,12 +1117,11 @@
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
{
- const char *hint = SDL_GetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH);
- if (!hint) {
- /* Check older hint for backwards compatibility */
- hint = SDL_GetHint("SDL_MAC_MOUSE_FOCUS_CLICKTHROUGH");
+ if (SDL_GetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH)) {
+ return SDL_GetHintBoolean(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH, SDL_FALSE);
+ } else {
+ return SDL_GetHintBoolean("SDL_MAC_MOUSE_FOCUS_CLICKTHROUGH", SDL_FALSE);
}
- return hint && *hint != '0';
}
@end
diff --git a/src/video/uikit/SDL_uikitvideo.m b/src/video/uikit/SDL_uikitvideo.m
index 9cfc922..88d4617 100644
--- a/src/video/uikit/SDL_uikitvideo.m
+++ b/src/video/uikit/SDL_uikitvideo.m
@@ -158,7 +158,7 @@
@autoreleasepool {
/* Ignore ScreenSaver API calls if the idle timer hint has been set. */
/* FIXME: The idle timer hint should be deprecated for SDL 2.1. */
- if (SDL_GetHint(SDL_HINT_IDLE_TIMER_DISABLED) == NULL) {
+ if (!SDL_GetHintBoolean(SDL_HINT_IDLE_TIMER_DISABLED, SDL_FALSE)) {
UIApplication *app = [UIApplication sharedApplication];
/* Prevent the display from dimming and going to sleep. */
diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c
index b043155..882d5fd 100644
--- a/src/video/windows/SDL_windowsevents.c
+++ b/src/video/windows/SDL_windowsevents.c
@@ -201,8 +201,7 @@
static SDL_bool
WIN_ShouldIgnoreFocusClick()
{
- const char *hint = SDL_GetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH);
- return (!hint || (*hint == '0')) ? SDL_TRUE : SDL_FALSE;
+ return !SDL_GetHintBoolean(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH, SDL_FALSE);
}
void
@@ -340,17 +339,7 @@
static SDL_bool
ShouldGenerateWindowCloseOnAltF4(void)
{
- const char *hint;
-
- hint = SDL_GetHint(SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4);
- if (hint) {
- if (*hint == '0') {
- return SDL_TRUE;
- } else {
- return SDL_FALSE;
- }
- }
- return SDL_TRUE;
+ return !SDL_GetHintBoolean(SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4, SDL_FALSE);
}
LRESULT CALLBACK
diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c
index c03c7fa..56d2368 100644
--- a/src/video/x11/SDL_x11events.c
+++ b/src/video/x11/SDL_x11events.c
@@ -1035,8 +1035,7 @@
if (data->last_focus_event_time) {
const int X11_FOCUS_CLICK_TIMEOUT = 10;
if (!SDL_TICKS_PASSED(SDL_GetTicks(), data->last_focus_event_time + X11_FOCUS_CLICK_TIMEOUT)) {
- const char *hint = SDL_GetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH);
- ignore_click = (!hint || *hint == '0');
+ ignore_click = !SDL_GetHintBoolean(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH, SDL_FALSE);
}
data->last_focus_event_time = 0;
}
diff --git a/src/video/x11/SDL_x11modes.c b/src/video/x11/SDL_x11modes.c
index ba28001..29307b3 100644
--- a/src/video/x11/SDL_x11modes.c
+++ b/src/video/x11/SDL_x11modes.c
@@ -157,14 +157,12 @@
{
int event_base = 0;
int error_base = 0;
- const char *env;
/* Default the extension not available */
*major = *minor = 0;
/* Allow environment override */
- env = SDL_GetHint(SDL_HINT_VIDEO_X11_XINERAMA);
- if (env && !SDL_atoi(env)) {
+ if (!SDL_GetHintBoolean(SDL_HINT_VIDEO_X11_XINERAMA, SDL_TRUE)) {
#ifdef X11MODES_DEBUG
printf("Xinerama disabled due to hint\n");
#endif
@@ -213,22 +211,19 @@
static SDL_bool
CheckXRandR(Display * display, int *major, int *minor)
{
- const char *env;
-
/* Default the extension not available */
*major = *minor = 0;
/* Allow environment override */
- env = SDL_GetHint(SDL_HINT_VIDEO_X11_XRANDR);
#ifdef XRANDR_DISABLED_BY_DEFAULT
- if (!env || !SDL_atoi(env)) {
+ if (!SDL_GetHintBoolean(SDL_HINT_VIDEO_X11_XRANDR, SDL_FALSE)) {
#ifdef X11MODES_DEBUG
printf("XRandR disabled by default due to window manager issues\n");
#endif
return SDL_FALSE;
}
#else
- if (env && !SDL_atoi(env)) {
+ if (!SDL_GetHintBoolean(SDL_HINT_VIDEO_X11_XRANDR, SDL_TRUE)) {
#ifdef X11MODES_DEBUG
printf("XRandR disabled due to hint\n");
#endif
@@ -507,14 +502,11 @@
static SDL_bool
CheckVidMode(Display * display, int *major, int *minor)
{
- const char *env;
-
/* Default the extension not available */
*major = *minor = 0;
/* Allow environment override */
- env = SDL_GetHint(SDL_HINT_VIDEO_X11_XVIDMODE);
- if (env && !SDL_atoi(env)) {
+ if (!SDL_GetHintBoolean(SDL_HINT_VIDEO_X11_XVIDMODE, SDL_TRUE)) {
#ifdef X11MODES_DEBUG
printf("XVidMode disabled due to hint\n");
#endif
@@ -622,8 +614,7 @@
we sort out the ramifications of removing XVidMode support outright.
This block should be removed with the XVidMode support. */
{
- const char *env = SDL_GetHint("SDL_VIDEO_X11_REQUIRE_XRANDR");
- if (env && SDL_atoi(env)) {
+ if (SDL_GetHintBoolean("SDL_VIDEO_X11_REQUIRE_XRANDR", SDL_FALSE)) {
#if SDL_VIDEO_DRIVER_X11_XRANDR
return SDL_SetError("XRandR support is required but not available");
#else
diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c
index db10a89..668bce2 100644
--- a/src/video/x11/SDL_x11window.c
+++ b/src/video/x11/SDL_x11window.c
@@ -576,14 +576,12 @@
{
Atom protocols[3];
int proto_count = 0;
- const char *ping_hint;
protocols[proto_count++] = data->WM_DELETE_WINDOW; /* Allow window to be deleted by the WM */
protocols[proto_count++] = data->WM_TAKE_FOCUS; /* Since we will want to set input focus explicitly */
- ping_hint = SDL_GetHint(SDL_HINT_VIDEO_X11_NET_WM_PING);
/* Default to using ping if there is no hint */
- if (!ping_hint || SDL_atoi(ping_hint)) {
+ if (SDL_GetHintBoolean(SDL_HINT_VIDEO_X11_NET_WM_PING, SDL_TRUE)) {
protocols[proto_count++] = data->_NET_WM_PING; /* Respond so WM knows we're alive */
}
@@ -1477,7 +1475,6 @@
Display *display = data->videodata->display;
SDL_bool oldstyle_fullscreen;
SDL_bool grab_keyboard;
- const char *hint;
/* ICCCM2.0-compliant window managers can handle fullscreen windows
If we're using XVidMode to change resolution we need to confine
@@ -1501,8 +1498,7 @@
X11_XRaiseWindow(display, data->xwindow);
/* Now grab the keyboard */
- hint = SDL_GetHint(SDL_HINT_GRAB_KEYBOARD);
- if (hint && SDL_atoi(hint)) {
+ if (SDL_GetHintBoolean(SDL_HINT_GRAB_KEYBOARD, SDL_FALSE)) {
grab_keyboard = SDL_TRUE;
} else {
/* We need to do this with the old style override_redirect