From 27d4f0992907ddfc9d27a1380c1e76fd590d3fd6 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 7 Oct 2016 23:40:44 -0700 Subject: [PATCH] Implemented SDL_GetHintBoolean() to make it easier to check boolean hints --- include/SDL_hints.h | 7 ++++ src/SDL_hints.c | 13 +++++++ src/core/winrt/SDL_winrtapp_direct3d.cpp | 9 +++-- src/dynapi/SDL_dynapi_overrides.h | 1 + src/dynapi/SDL_dynapi_procs.h | 1 + src/events/SDL_mouse.c | 12 +------ src/events/SDL_quit.c | 4 +-- src/haptic/windows/SDL_xinputhaptic.c | 3 +- src/joystick/android/SDL_sysjoystick.c | 4 +-- src/joystick/iphoneos/SDL_sysjoystick.m | 7 ++-- src/joystick/windows/SDL_xinputjoystick.c | 8 ++--- src/render/SDL_render.c | 9 +++-- src/render/direct3d/SDL_render_d3d.c | 4 +-- src/render/direct3d11/SDL_render_d3d11.c | 4 +-- src/render/opengl/SDL_render_gl.c | 4 +-- src/thread/windows/SDL_systhread.c | 3 +- src/video/SDL_bmp.c | 5 +-- src/video/SDL_video.c | 41 ++++------------------- src/video/cocoa/SDL_cocoaevents.m | 3 +- src/video/cocoa/SDL_cocoavideo.m | 3 +- src/video/cocoa/SDL_cocoawindow.m | 12 +++---- src/video/uikit/SDL_uikitvideo.m | 2 +- src/video/windows/SDL_windowsevents.c | 15 ++------- src/video/x11/SDL_x11events.c | 3 +- src/video/x11/SDL_x11modes.c | 19 +++-------- src/video/x11/SDL_x11window.c | 8 ++--- 26 files changed, 68 insertions(+), 136 deletions(-) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 9c914d0c1..9efb9550c 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -738,6 +738,13 @@ extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name, */ 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 * diff --git a/src/SDL_hints.c b/src/SDL_hints.c index 04523327a..390d94f9f 100644 --- a/src/SDL_hints.c +++ b/src/SDL_hints.c @@ -118,6 +118,19 @@ SDL_GetHint(const char *name) 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 2398e7285..e4ffadaad 100644 --- a/src/core/winrt/SDL_winrtapp_direct3d.cpp +++ b/src/core/winrt/SDL_winrtapp_direct3d.cpp @@ -822,11 +822,8 @@ static void WINRT_OnBackButtonPressed(BackButtonEventArgs ^ args) 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 @@ void SDL_WinRTApp::OnGamepadAdded(Platform::Object ^sender, Windows::Gaming::Inp */ } #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 fbb03f943..9541611ce 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 b7cf285e8..a08835b26 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -643,3 +643,4 @@ SDL_DYNAPI_PROC(Uint32,SDL_DequeueAudio,(SDL_AudioDeviceID a, void *b, Uint32 c) 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 f343c5214..4236a9901 100644 --- a/src/events/SDL_mouse.c +++ b/src/events/SDL_mouse.c @@ -564,21 +564,11 @@ SDL_WarpMouseGlobal(int x, int y) 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 5b7105ef8..3cb6b3d4f 100644 --- a/src/events/SDL_quit.c +++ b/src/events/SDL_quit.c @@ -91,9 +91,7 @@ SDL_QuitInit_Internal(void) 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 5b0cb8c9b..afbab456a 100644 --- a/src/haptic/windows/SDL_xinputhaptic.c +++ b/src/haptic/windows/SDL_xinputhaptic.c @@ -44,8 +44,7 @@ static SDL_bool loaded_xinput = SDL_FALSE; 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 929a9ac44..075b65797 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -352,11 +352,9 @@ Android_RemoveJoystick(int device_id) 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 da9226394..eb7e00032 100644 --- a/src/joystick/iphoneos/SDL_sysjoystick.m +++ b/src/joystick/iphoneos/SDL_sysjoystick.m @@ -127,13 +127,11 @@ SDL_SYS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCController *contr } #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 @@ SDL_SYS_JoystickInit(void) 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 3e34117e3..d581d45b9 100644 --- a/src/joystick/windows/SDL_xinputjoystick.c +++ b/src/joystick/windows/SDL_xinputjoystick.c @@ -40,8 +40,7 @@ SDL_XInputUseOldJoystickMapping() { 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 @@ SDL_bool SDL_XINPUT_Enabled(void) 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 1631a7254..c4601edff 100644 --- a/src/render/SDL_render.c +++ b/src/render/SDL_render.c @@ -234,12 +234,11 @@ SDL_CreateRenderer(SDL_Window * window, int index, Uint32 flags) 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 c54897fe7..151dbbf04 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -512,7 +512,6 @@ D3D_CreateRenderer(SDL_Window * window, Uint32 flags) D3D_RenderData *data; SDL_SysWMinfo windowinfo; HRESULT result; - const char *hint; D3DPRESENT_PARAMETERS pparams; IDirect3DSwapChain9 *chain; D3DCAPS9 caps; @@ -607,8 +606,7 @@ D3D_CreateRenderer(SDL_Window * window, Uint32 flags) 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 e6b73d40c..df0f1558a 100644 --- a/src/render/direct3d11/SDL_render_d3d11.c +++ b/src/render/direct3d11/SDL_render_d3d11.c @@ -1000,7 +1000,6 @@ D3D11_CreateDeviceResources(SDL_Renderer * renderer) 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 @@ D3D11_CreateDeviceResources(SDL_Renderer * renderer) 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 7dbd9fa5b..df0fd05f8 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -390,7 +390,6 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags) { 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 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags) } /* 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 ffad0d805..20a4bd6e2 100644 --- a/src/thread/windows/SDL_systhread.c +++ b/src/thread/windows/SDL_systhread.c @@ -171,8 +171,7 @@ SDL_SYS_SetupThread(const char *name) 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 e71c6ccdb..8b724896a 100644 --- a/src/video/SDL_bmp.c +++ b/src/video/SDL_bmp.c @@ -556,10 +556,7 @@ SDL_SaveBMP_RW(SDL_Surface * saveme, SDL_RWops * dst, int freedst) } 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 f488e6487..0a21ef5fc 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -181,7 +181,7 @@ ShouldUseTextureFramebuffer() /* 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 @@ SDL_CreateWindowTexture(SDL_VideoDevice *unused, SDL_Window * window, Uint32 * f /* 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 @@ 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) { @@ -538,13 +538,7 @@ 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. */ - 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_Window * 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_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags) * 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 @@ SDL_OnWindowFocusGained(SDL_Window * window) 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 @@ ShouldMinimizeOnFocusLoss(SDL_Window * window) } #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_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, S 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 1e78602f4..b604fd7c0 100644 --- a/src/video/cocoa/SDL_cocoaevents.m +++ b/src/video/cocoa/SDL_cocoaevents.m @@ -348,8 +348,7 @@ Cocoa_RegisterApp(void) [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 76d558e53..92805f542 100644 --- a/src/video/cocoa/SDL_cocoavideo.m +++ b/src/video/cocoa/SDL_cocoavideo.m @@ -150,8 +150,7 @@ Cocoa_VideoInit(_THIS) 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 25c98a902..cfad54854 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -211,8 +211,7 @@ ScheduleContextUpdates(SDL_WindowData *data) 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 @@ SetWindowStyle(SDL_Window * window, NSUInteger style) - (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 9cfc922bc..88d461751 100644 --- a/src/video/uikit/SDL_uikitvideo.m +++ b/src/video/uikit/SDL_uikitvideo.m @@ -158,7 +158,7 @@ UIKit_SuspendScreenSaver(_THIS) @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 b04315573..882d5fdfd 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -201,8 +201,7 @@ WindowsScanCodeToSDLScanCode(LPARAM lParam, WPARAM wParam) 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 @@ WIN_ConvertUTF32toUTF8(UINT32 codepoint, char * text) 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 c03c7fa7b..56d2368a0 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -1035,8 +1035,7 @@ X11_DispatchEvent(_THIS) 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 ba28001f8..29307b3a6 100644 --- a/src/video/x11/SDL_x11modes.c +++ b/src/video/x11/SDL_x11modes.c @@ -157,14 +157,12 @@ CheckXinerama(Display * display, int *major, int *minor) { 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 @@ X11_XineramaFailed(Display * d, XErrorEvent * e) 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 @@ X11_InitModes_XRandR(_THIS) 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 @@ X11_InitModes(_THIS) 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 db10a8947..668bce225 100644 --- a/src/video/x11/SDL_x11window.c +++ b/src/video/x11/SDL_x11window.c @@ -576,14 +576,12 @@ X11_CreateWindow(_THIS, SDL_Window * window) { 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 @@ X11_SetWindowGrab(_THIS, SDL_Window * window, SDL_bool grabbed) 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_SetWindowGrab(_THIS, SDL_Window * window, SDL_bool grabbed) 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