From fa0f41763154e100915e74b50a9d74a2f7bc543d Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 1 Oct 2016 14:48:18 -0700 Subject: [PATCH] Fixed build warnings and errors --- src/haptic/windows/SDL_dinputhaptic.c | 2 +- src/joystick/windows/SDL_dinputjoystick.c | 4 ++-- src/joystick/windows/SDL_dinputjoystick_c.h | 2 ++ src/render/opengl/SDL_render_gl.c | 5 ++++- src/video/x11/SDL_x11video.c | 22 ++++++++++----------- 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/haptic/windows/SDL_dinputhaptic.c b/src/haptic/windows/SDL_dinputhaptic.c index c51470dd5..0c9d9ec1d 100644 --- a/src/haptic/windows/SDL_dinputhaptic.c +++ b/src/haptic/windows/SDL_dinputhaptic.c @@ -325,7 +325,7 @@ SDL_DINPUT_HapticOpenFromDevice(SDL_Haptic * haptic, LPDIRECTINPUTDEVICE8 device /* Set data format. */ ret = IDirectInputDevice8_SetDataFormat(haptic->hwdata->device, - &c_dfDIJoystick2); + &SDL_c_dfDIJoystick2); if (FAILED(ret)) { DI_SetError("Setting data format", ret); goto acquire_err; diff --git a/src/joystick/windows/SDL_dinputjoystick.c b/src/joystick/windows/SDL_dinputjoystick.c index 14df6527c..7166075b1 100644 --- a/src/joystick/windows/SDL_dinputjoystick.c +++ b/src/joystick/windows/SDL_dinputjoystick.c @@ -214,7 +214,7 @@ static DIOBJECTDATAFORMAT dfDIJoystick2[] = { { &GUID_Slider, FIELD_OFFSET(DIJOYSTATE2, rglFSlider[1]), DIDFT_OPTIONAL | DIDFT_AXIS | DIDFT_ANYINSTANCE, 0 }, }; -static const DIDATAFORMAT c_dfDIJoystick2 = { +const DIDATAFORMAT SDL_c_dfDIJoystick2 = { sizeof(DIDATAFORMAT), sizeof(DIOBJECTDATAFORMAT), DIDF_ABSAXIS, @@ -594,7 +594,7 @@ SDL_DINPUT_JoystickOpen(SDL_Joystick * joystick, JoyStick_DeviceData *joystickde /* Use the extended data structure: DIJOYSTATE2. */ result = IDirectInputDevice8_SetDataFormat(joystick->hwdata->InputDevice, - &c_dfDIJoystick2); + &SDL_c_dfDIJoystick2); if (FAILED(result)) { return SetDIerror("IDirectInputDevice8::SetDataFormat", result); } diff --git a/src/joystick/windows/SDL_dinputjoystick_c.h b/src/joystick/windows/SDL_dinputjoystick_c.h index 7e4ff3e19..fa36885e7 100644 --- a/src/joystick/windows/SDL_dinputjoystick_c.h +++ b/src/joystick/windows/SDL_dinputjoystick_c.h @@ -27,4 +27,6 @@ extern void SDL_DINPUT_JoystickUpdate(SDL_Joystick * joystick); extern void SDL_DINPUT_JoystickClose(SDL_Joystick * joystick); extern void SDL_DINPUT_JoystickQuit(void); +extern const DIDATAFORMAT SDL_c_dfDIJoystick2; + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index 0276f28da..5b28dec9f 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -1439,7 +1439,10 @@ GL_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect, return SDL_OutOfMemory(); } - convert_format(data, temp_format, &internalFormat, &format, &type); + if (!convert_format(data, temp_format, &internalFormat, &format, &type)) { + return SDL_SetError("Texture format %s not supported by OpenGL", + SDL_GetPixelFormatName(temp_format)); + } SDL_GetRendererOutputSize(renderer, &w, &h); diff --git a/src/video/x11/SDL_x11video.c b/src/video/x11/SDL_x11video.c index a8c3b2547..66a1c2679 100644 --- a/src/video/x11/SDL_x11video.c +++ b/src/video/x11/SDL_x11video.c @@ -290,7 +290,7 @@ X11_CreateDevice(int devindex) device->StartTextInput = X11_StartTextInput; device->StopTextInput = X11_StopTextInput; device->SetTextInputRect = X11_SetTextInputRect; - + device->free = X11_DeleteDevice; return device; @@ -395,33 +395,31 @@ X11_VideoInit(_THIS) Compose keys will work correctly. */ char *prev_locale = setlocale(LC_ALL, NULL); char *prev_xmods = X11_XSetLocaleModifiers(NULL); - + const char *new_xmods = ""; + const char *env_xmods = SDL_getenv("XMODIFIERS"); + if (prev_xmods) { prev_xmods = SDL_strdup(prev_xmods); } - + /* IBus resends some key events that were filtered by XFilterEvents when it is used via XIM which causes issues. Prevent this by forcing @im=none if XMODIFIERS contains @im=ibus. IBus can still be used via the DBus implementation, which also has support for pre-editing. */ - const char *new_xmods = ""; - const char *env_xmods = SDL_getenv("XMODIFIERS"); - if (env_xmods && SDL_strstr(env_xmods, "@im=ibus") != NULL) { new_xmods = "@im=none"; } - + setlocale(LC_ALL, ""); X11_XSetLocaleModifiers(new_xmods); - - data->im = - X11_XOpenIM(data->display, NULL, data->classname, data->classname); - + + data->im = X11_XOpenIM(data->display, NULL, data->classname, data->classname); + /* Reset the locale + X locale modifiers back to how they were, locale first because the X locale modifiers depend on it. */ setlocale(LC_ALL, prev_locale); X11_XSetLocaleModifiers(prev_xmods); - + if (prev_xmods) { SDL_free(prev_xmods); }