Browse Source

Fixed ISO C99 compatibility
SDL now builds with gcc 7.2 with the following command line options:
-Wall -pedantic-errors -Wno-deprecated-declarations -Wno-overlength-strings --std=c99

Sam Lantinga 7 years ago
parent
commit
90e72bf4e2
40 changed files with 176 additions and 196 deletions
  1. 5 5
      src/audio/SDL_audio.c
  2. 1 1
      src/audio/directsound/SDL_directsound.c
  3. 2 2
      src/audio/wasapi/SDL_wasapi_win32.c
  4. 1 1
      src/core/linux/SDL_dbus.c
  5. 5 5
      src/core/windows/SDL_xinput.c
  6. 1 1
      src/dynapi/SDL_dynapi.c
  7. 2 2
      src/events/SDL_quit.c
  8. 1 1
      src/filesystem/windows/SDL_sysfilesystem.c
  9. 2 2
      src/render/direct3d11/SDL_render_d3d11.c
  10. 14 17
      src/render/opengl/SDL_render_gl.c
  11. 14 14
      src/render/opengl/SDL_shaders_gl.c
  12. 2 2
      src/render/opengles/SDL_render_gles.c
  13. 3 4
      src/render/opengles2/SDL_render_gles2.c
  14. 1 5
      src/thread/pthread/SDL_systhread.c
  15. 1 1
      src/thread/windows/SDL_systhread.c
  16. 2 2
      src/video/SDL_blit.c
  17. 2 2
      src/video/SDL_egl.c
  18. 2 2
      src/video/SDL_sysvideo.h
  19. 12 9
      src/video/SDL_video.c
  20. 3 0
      src/video/SDL_vulkan_internal.h
  21. 5 4
      src/video/android/SDL_androidvulkan.c
  22. 3 3
      src/video/cocoa/SDL_cocoavulkan.m
  23. 1 1
      src/video/mir/SDL_mirdyn.c
  24. 3 2
      src/video/mir/SDL_mirvideo.c
  25. 5 5
      src/video/mir/SDL_mirvulkan.c
  26. 1 2
      src/video/uikit/SDL_uikitvulkan.m
  27. 3 3
      src/video/wayland/SDL_waylanddatamanager.c
  28. 1 1
      src/video/wayland/SDL_waylanddyn.c
  29. 1 0
      src/video/wayland/SDL_waylandopengles.h
  30. 5 5
      src/video/wayland/SDL_waylandvulkan.c
  31. 3 1
      src/video/windows/SDL_windowsevents.c
  32. 6 6
      src/video/windows/SDL_windowskeyboard.c
  33. 12 17
      src/video/windows/SDL_windowsopengl.c
  34. 7 9
      src/video/windows/SDL_windowsvideo.c
  35. 3 3
      src/video/windows/SDL_windowsvulkan.c
  36. 2 1
      src/video/winrt/SDL_winrtopengles.cpp
  37. 3 5
      src/video/x11/SDL_x11dyn.c
  38. 22 38
      src/video/x11/SDL_x11opengl.c
  39. 9 7
      src/video/x11/SDL_x11vulkan.c
  40. 5 5
      src/video/yuv2rgb/yuv_rgb_sse_func.h

+ 5 - 5
src/audio/SDL_audio.c

@@ -151,11 +151,11 @@ LoadLibSampleRate(void)
         return SDL_FALSE;
     }
 
-    SRC_src_new = (SRC_STATE* (*)(int converter_type, int channels, int *error))SDL_LoadFunction(SRC_lib, "src_new");
-    SRC_src_process = (int (*)(SRC_STATE *state, SRC_DATA *data))SDL_LoadFunction(SRC_lib, "src_process");
-    SRC_src_reset = (int(*)(SRC_STATE *state))SDL_LoadFunction(SRC_lib, "src_reset");
-    SRC_src_delete = (SRC_STATE* (*)(SRC_STATE *state))SDL_LoadFunction(SRC_lib, "src_delete");
-    SRC_src_strerror = (const char* (*)(int error))SDL_LoadFunction(SRC_lib, "src_strerror");
+    *(void **)&SRC_src_new = SDL_LoadFunction(SRC_lib, "src_new");
+    *(void **)&SRC_src_process = SDL_LoadFunction(SRC_lib, "src_process");
+    *(void **)&SRC_src_reset = SDL_LoadFunction(SRC_lib, "src_reset");
+    *(void **)&SRC_src_delete = SDL_LoadFunction(SRC_lib, "src_delete");
+    *(void **)&SRC_src_strerror = SDL_LoadFunction(SRC_lib, "src_strerror");
 
     if (!SRC_src_new || !SRC_src_process || !SRC_src_reset || !SRC_src_delete || !SRC_src_strerror) {
         SDL_UnloadObject(SRC_lib);

+ 1 - 1
src/audio/directsound/SDL_directsound.c

@@ -74,7 +74,7 @@ DSOUND_Load(void)
     } else {
         /* Now make sure we have DirectX 8 or better... */
         #define DSOUNDLOAD(f) { \
-            p##f = (fn##f) SDL_LoadFunction(DSoundDLL, #f); \
+            *(void**)&p##f = SDL_LoadFunction(DSoundDLL, #f); \
             if (!p##f) loaded = 0; \
         }
         loaded = 1;  /* will reset if necessary. */

+ 2 - 2
src/audio/wasapi/SDL_wasapi_win32.c

@@ -256,8 +256,8 @@ WASAPI_PlatformInit(void)
 
     libavrt = LoadLibraryW(L"avrt.dll");  /* this library is available in Vista and later. No WinXP, so have to LoadLibrary to use it for now! */
     if (libavrt) {
-        pAvSetMmThreadCharacteristicsW = (pfnAvSetMmThreadCharacteristicsW) GetProcAddress(libavrt, "AvSetMmThreadCharacteristicsW");
-        pAvRevertMmThreadCharacteristics = (pfnAvRevertMmThreadCharacteristics) GetProcAddress(libavrt, "AvRevertMmThreadCharacteristics");
+        *(void **)&pAvSetMmThreadCharacteristicsW = GetProcAddress(libavrt, "AvSetMmThreadCharacteristicsW");
+        *(void **)&pAvRevertMmThreadCharacteristics = GetProcAddress(libavrt, "AvRevertMmThreadCharacteristics");
     }
 
     return 0;

+ 1 - 1
src/core/linux/SDL_dbus.c

@@ -33,7 +33,7 @@ static int
 LoadDBUSSyms(void)
 {
     #define SDL_DBUS_SYM2(x, y) \
-        if (!(dbus.x = SDL_LoadFunction(dbus_handle, #y))) return -1
+        if (!(*(void**)&dbus.x = SDL_LoadFunction(dbus_handle, #y))) return -1
         
     #define SDL_DBUS_SYM(x) \
         SDL_DBUS_SYM2(x, dbus_##x)

+ 5 - 5
src/core/windows/SDL_xinput.c

@@ -104,13 +104,13 @@ WIN_LoadXInputDLL(void)
     s_XInputDLLRefCount = 1;
 
     /* 100 is the ordinal for _XInputGetStateEx, which returns the same struct as XinputGetState, but with extra data in wButtons for the guide button, we think... */
-    SDL_XInputGetState = (XInputGetState_t)GetProcAddress((HMODULE)s_pXInputDLL, (LPCSTR)100);
+    *(void**)&SDL_XInputGetState = GetProcAddress((HMODULE)s_pXInputDLL, (LPCSTR)100);
     if (!SDL_XInputGetState) {
-        SDL_XInputGetState = (XInputGetState_t)GetProcAddress((HMODULE)s_pXInputDLL, "XInputGetState");
+        *(void**)&SDL_XInputGetState = GetProcAddress((HMODULE)s_pXInputDLL, "XInputGetState");
     }
-    SDL_XInputSetState = (XInputSetState_t)GetProcAddress((HMODULE)s_pXInputDLL, "XInputSetState");
-    SDL_XInputGetCapabilities = (XInputGetCapabilities_t)GetProcAddress((HMODULE)s_pXInputDLL, "XInputGetCapabilities");
-    SDL_XInputGetBatteryInformation = (XInputGetBatteryInformation_t)GetProcAddress( (HMODULE)s_pXInputDLL, "XInputGetBatteryInformation" );
+    *(void**)&SDL_XInputSetState = GetProcAddress((HMODULE)s_pXInputDLL, "XInputSetState");
+    *(void**)&SDL_XInputGetCapabilities = GetProcAddress((HMODULE)s_pXInputDLL, "XInputGetCapabilities");
+    *(void**)&SDL_XInputGetBatteryInformation = GetProcAddress( (HMODULE)s_pXInputDLL, "XInputGetBatteryInformation" );
     if (!SDL_XInputGetState || !SDL_XInputSetState || !SDL_XInputGetCapabilities) {
         WIN_UnloadXInputDLL();
         return -1;

+ 1 - 1
src/dynapi/SDL_dynapi.c

@@ -263,7 +263,7 @@ SDL_InitDynamicAPILocked(void)
     SDL_DYNAPI_ENTRYFN entry = SDL_DYNAPI_entry;  /* funcs from here by default. */
 
     if (libname) {
-        entry = (SDL_DYNAPI_ENTRYFN) get_sdlapi_entry(libname, "SDL_DYNAPI_entry");
+        *(void **)&entry = get_sdlapi_entry(libname, "SDL_DYNAPI_entry");
         if (!entry) {
             /* !!! FIXME: fail to startup here instead? */
             /* !!! FIXME: definitely warn user. */

+ 2 - 2
src/events/SDL_quit.c

@@ -55,7 +55,7 @@ SDL_QuitInit_Internal(void)
     struct sigaction action;
     sigaction(SIGINT, NULL, &action);
 #ifdef HAVE_SA_SIGACTION
-    if ( action.sa_handler == SIG_DFL && action.sa_sigaction == (void*)SIG_DFL ) {
+    if ( action.sa_handler == SIG_DFL && (__sighandler_t)action.sa_sigaction == SIG_DFL ) {
 #else
     if ( action.sa_handler == SIG_DFL ) {
 #endif
@@ -65,7 +65,7 @@ SDL_QuitInit_Internal(void)
     sigaction(SIGTERM, NULL, &action);
 
 #ifdef HAVE_SA_SIGACTION
-    if ( action.sa_handler == SIG_DFL && action.sa_sigaction == (void*)SIG_DFL ) {
+    if ( action.sa_handler == SIG_DFL && (__sighandler_t)action.sa_sigaction == SIG_DFL ) {
 #else
     if ( action.sa_handler == SIG_DFL ) {
 #endif

+ 1 - 1
src/filesystem/windows/SDL_sysfilesystem.c

@@ -50,7 +50,7 @@ SDL_GetBasePath(void)
         return NULL;
     }
 
-    pGetModuleFileNameExW = (GetModuleFileNameExW_t)GetProcAddress(psapi, "GetModuleFileNameExW");
+    *(void**)&pGetModuleFileNameExW = GetProcAddress(psapi, "GetModuleFileNameExW");
     if (!pGetModuleFileNameExW) {
         WIN_SetError("Couldn't find GetModuleFileNameExW");
         FreeLibrary(psapi);

+ 2 - 2
src/render/direct3d11/SDL_render_d3d11.c

@@ -568,7 +568,7 @@ D3D11_CreateDeviceResources(SDL_Renderer * renderer)
         goto done;
     }
 
-    CreateDXGIFactoryFunc = (PFN_CREATE_DXGI_FACTORY)SDL_LoadFunction(data->hDXGIMod, "CreateDXGIFactory");
+    *(void**)&CreateDXGIFactoryFunc = SDL_LoadFunction(data->hDXGIMod, "CreateDXGIFactory");
     if (!CreateDXGIFactoryFunc) {
         result = E_FAIL;
         goto done;
@@ -580,7 +580,7 @@ D3D11_CreateDeviceResources(SDL_Renderer * renderer)
         goto done;
     }
 
-    D3D11CreateDeviceFunc = (PFN_D3D11_CREATE_DEVICE)SDL_LoadFunction(data->hD3D11Mod, "D3D11CreateDevice");
+    *(void**)D3D11CreateDeviceFunc = SDL_LoadFunction(data->hD3D11Mod, "D3D11CreateDevice");
     if (!D3D11CreateDeviceFunc) {
         result = E_FAIL;
         goto done;

+ 14 - 17
src/render/opengl/SDL_render_gl.c

@@ -260,10 +260,8 @@ GL_CheckAllErrors (const char *prefix, SDL_Renderer *renderer, const char *file,
 
 #if 0
 #define GL_CheckError(prefix, renderer)
-#elif defined(_MSC_VER) || defined(__WATCOMC__)
-#define GL_CheckError(prefix, renderer) GL_CheckAllErrors(prefix, renderer, __FILE__, __LINE__, __FUNCTION__)
 #else
-#define GL_CheckError(prefix, renderer) GL_CheckAllErrors(prefix, renderer, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+#define GL_CheckError(prefix, renderer) GL_CheckAllErrors(prefix, renderer, SDL_FILE, SDL_LINE, SDL_FUNCTION)
 #endif
 
 static int
@@ -274,7 +272,7 @@ GL_LoadFunctions(GL_RenderData * data)
 #else
 #define SDL_PROC(ret,func,params) \
     do { \
-        data->func = SDL_GL_GetProcAddress(#func); \
+        *(void **)&data->func = SDL_GL_GetProcAddress(#func); \
         if ( ! data->func ) { \
             return SDL_SetError("Couldn't load GL function %s: %s", #func, SDL_GetError()); \
         } \
@@ -492,7 +490,9 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags)
         data->debug_enabled = SDL_TRUE;
     }
     if (data->debug_enabled && SDL_GL_ExtensionSupported("GL_ARB_debug_output")) {
-        PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARBFunc = (PFNGLDEBUGMESSAGECALLBACKARBPROC) SDL_GL_GetProcAddress("glDebugMessageCallbackARB");
+        PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARBFunc;
+       
+        *(void **)&glDebugMessageCallbackARBFunc = SDL_GL_GetProcAddress("glDebugMessageCallbackARB");
 
         data->GL_ARB_debug_output_supported = SDL_TRUE;
         data->glGetPointerv(GL_DEBUG_CALLBACK_FUNCTION_ARB, (GLvoid **)(char *)&data->next_error_callback);
@@ -521,7 +521,7 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags)
 
     /* Check for multitexture support */
     if (SDL_GL_ExtensionSupported("GL_ARB_multitexture")) {
-        data->glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC) SDL_GL_GetProcAddress("glActiveTextureARB");
+        *(void **)&data->glActiveTextureARB = SDL_GL_GetProcAddress("glActiveTextureARB");
         if (data->glActiveTextureARB) {
             data->GL_ARB_multitexture_supported = SDL_TRUE;
             data->glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &data->num_texture_units);
@@ -549,16 +549,11 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags)
 
     if (SDL_GL_ExtensionSupported("GL_EXT_framebuffer_object")) {
         data->GL_EXT_framebuffer_object_supported = SDL_TRUE;
-        data->glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)
-            SDL_GL_GetProcAddress("glGenFramebuffersEXT");
-        data->glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)
-            SDL_GL_GetProcAddress("glDeleteFramebuffersEXT");
-        data->glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)
-            SDL_GL_GetProcAddress("glFramebufferTexture2DEXT");
-        data->glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)
-            SDL_GL_GetProcAddress("glBindFramebufferEXT");
-        data->glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)
-            SDL_GL_GetProcAddress("glCheckFramebufferStatusEXT");
+        *(void**)&data->glGenFramebuffersEXT = SDL_GL_GetProcAddress("glGenFramebuffersEXT");
+        *(void**)&data->glDeleteFramebuffersEXT = SDL_GL_GetProcAddress("glDeleteFramebuffersEXT");
+        *(void**)&data->glFramebufferTexture2DEXT = SDL_GL_GetProcAddress("glFramebufferTexture2DEXT");
+        *(void**)&data->glBindFramebufferEXT = SDL_GL_GetProcAddress("glBindFramebufferEXT");
+        *(void**)&data->glCheckFramebufferStatusEXT = SDL_GL_GetProcAddress("glCheckFramebufferStatusEXT");
         renderer->info.flags |= SDL_RENDERER_TARGETTEXTURE;
     }
     data->framebuffers = NULL;
@@ -1615,7 +1610,9 @@ GL_DestroyRenderer(SDL_Renderer * renderer)
 
         GL_ClearErrors(renderer);
         if (data->GL_ARB_debug_output_supported) {
-            PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARBFunc = (PFNGLDEBUGMESSAGECALLBACKARBPROC) SDL_GL_GetProcAddress("glDebugMessageCallbackARB");
+            PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARBFunc;
+            
+            *(void **)&glDebugMessageCallbackARBFunc = SDL_GL_GetProcAddress("glDebugMessageCallbackARB");
 
             /* Uh oh, we don't have a safe way of removing ourselves from the callback chain, if it changed after we set our callback. */
             /* For now, just always replace the callback with the original one */

+ 14 - 14
src/render/opengl/SDL_shaders_gl.c

@@ -453,20 +453,20 @@ GL_CreateShaderContext(void)
         SDL_GL_ExtensionSupported("GL_ARB_shading_language_100") &&
         SDL_GL_ExtensionSupported("GL_ARB_vertex_shader") &&
         SDL_GL_ExtensionSupported("GL_ARB_fragment_shader")) {
-        ctx->glGetError = (GLenum (*)(void)) SDL_GL_GetProcAddress("glGetError");
-        ctx->glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC) SDL_GL_GetProcAddress("glAttachObjectARB");
-        ctx->glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC) SDL_GL_GetProcAddress("glCompileShaderARB");
-        ctx->glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC) SDL_GL_GetProcAddress("glCreateProgramObjectARB");
-        ctx->glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC) SDL_GL_GetProcAddress("glCreateShaderObjectARB");
-        ctx->glDeleteObjectARB = (PFNGLDELETEOBJECTARBPROC) SDL_GL_GetProcAddress("glDeleteObjectARB");
-        ctx->glGetInfoLogARB = (PFNGLGETINFOLOGARBPROC) SDL_GL_GetProcAddress("glGetInfoLogARB");
-        ctx->glGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC) SDL_GL_GetProcAddress("glGetObjectParameterivARB");
-        ctx->glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC) SDL_GL_GetProcAddress("glGetUniformLocationARB");
-        ctx->glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC) SDL_GL_GetProcAddress("glLinkProgramARB");
-        ctx->glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC) SDL_GL_GetProcAddress("glShaderSourceARB");
-        ctx->glUniform1iARB = (PFNGLUNIFORM1IARBPROC) SDL_GL_GetProcAddress("glUniform1iARB");
-        ctx->glUniform1fARB = (PFNGLUNIFORM1FARBPROC) SDL_GL_GetProcAddress("glUniform1fARB");
-        ctx->glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC) SDL_GL_GetProcAddress("glUseProgramObjectARB");
+        *(void**)&ctx->glGetError = SDL_GL_GetProcAddress("glGetError");
+        *(void **)&ctx->glAttachObjectARB = SDL_GL_GetProcAddress("glAttachObjectARB");
+        *(void **)&ctx->glCompileShaderARB = SDL_GL_GetProcAddress("glCompileShaderARB");
+        *(void **)&ctx->glCreateProgramObjectARB = SDL_GL_GetProcAddress("glCreateProgramObjectARB");
+        *(void **)&ctx->glCreateShaderObjectARB = SDL_GL_GetProcAddress("glCreateShaderObjectARB");
+        *(void **)&ctx->glDeleteObjectARB = SDL_GL_GetProcAddress("glDeleteObjectARB");
+        *(void **)&ctx->glGetInfoLogARB = SDL_GL_GetProcAddress("glGetInfoLogARB");
+        *(void **)&ctx->glGetObjectParameterivARB = SDL_GL_GetProcAddress("glGetObjectParameterivARB");
+        *(void **)&ctx->glGetUniformLocationARB = SDL_GL_GetProcAddress("glGetUniformLocationARB");
+        *(void **)&ctx->glLinkProgramARB = SDL_GL_GetProcAddress("glLinkProgramARB");
+        *(void **)&ctx->glShaderSourceARB = SDL_GL_GetProcAddress("glShaderSourceARB");
+        *(void **)&ctx->glUniform1iARB = SDL_GL_GetProcAddress("glUniform1iARB");
+        *(void **)&ctx->glUniform1fARB = SDL_GL_GetProcAddress("glUniform1fARB");
+        *(void **)&ctx->glUseProgramObjectARB = SDL_GL_GetProcAddress("glUseProgramObjectARB");
         if (ctx->glGetError &&
             ctx->glAttachObjectARB &&
             ctx->glCompileShaderARB &&

+ 2 - 2
src/render/opengles/SDL_render_gles.c

@@ -198,14 +198,14 @@ static int GLES_LoadFunctions(GLES_RenderData * data)
 #else
 #define SDL_PROC(ret,func,params) \
     do { \
-        data->func = SDL_GL_GetProcAddress(#func); \
+        *(void**)&data->func = SDL_GL_GetProcAddress(#func); \
         if ( ! data->func ) { \
             return SDL_SetError("Couldn't load GLES function %s: %s", #func, SDL_GetError()); \
         } \
     } while ( 0 );
 #define SDL_PROC_OES(ret,func,params) \
     do { \
-        data->func = SDL_GL_GetProcAddress(#func); \
+        *(void**)&data->func = SDL_GL_GetProcAddress(#func); \
     } while ( 0 );    
 #endif /* __SDL_NOGETPROCADDR__ */
 

+ 3 - 4
src/render/opengles2/SDL_render_gles2.c

@@ -22,6 +22,7 @@
 
 #if SDL_VIDEO_RENDER_OGL_ES2 && !SDL_RENDER_DISABLED
 
+#include "SDL_assert.h"
 #include "SDL_hints.h"
 #include "SDL_opengles2.h"
 #include "../SDL_sysrender.h"
@@ -259,10 +260,8 @@ GL_CheckAllErrors (const char *prefix, SDL_Renderer *renderer, const char *file,
 
 #if 0
 #define GL_CheckError(prefix, renderer)
-#elif defined(_MSC_VER) || defined(__WATCOMC__)
-#define GL_CheckError(prefix, renderer) GL_CheckAllErrors(prefix, renderer, __FILE__, __LINE__, __FUNCTION__)
 #else
-#define GL_CheckError(prefix, renderer) GL_CheckAllErrors(prefix, renderer, __FILE__, __LINE__, __PRETTY_FUNCTION__)
+#define GL_CheckError(prefix, renderer) GL_CheckAllErrors(prefix, renderer, SDL_FILE, SDL_LINE, SDL_FUNCTION)
 #endif
 
 
@@ -295,7 +294,7 @@ static int GLES2_LoadFunctions(GLES2_DriverContext * data)
 #else
 #define SDL_PROC(ret,func,params) \
     do { \
-        data->func = SDL_GL_GetProcAddress(#func); \
+        *(void **)&data->func = SDL_GL_GetProcAddress(#func); \
         if ( ! data->func ) { \
             return SDL_SetError("Couldn't load GLES2 function %s: %s", #func, SDL_GetError()); \
         } \

+ 1 - 5
src/thread/pthread/SDL_systhread.c

@@ -91,11 +91,7 @@ SDL_SYS_CreateThread(SDL_Thread * thread, void *args)
     #if defined(__MACOSX__) || defined(__IPHONEOS__) || defined(__LINUX__)
     if (!checked_setname) {
         void *fn = dlsym(RTLD_DEFAULT, "pthread_setname_np");
-        #if defined(__MACOSX__) || defined(__IPHONEOS__)
-        ppthread_setname_np = (int(*)(const char*)) fn;
-        #elif defined(__LINUX__)
-        ppthread_setname_np = (int(*)(pthread_t, const char*)) fn;
-        #endif
+        *(void **)&ppthread_setname_np = fn;
         checked_setname = SDL_TRUE;
     }
     #endif

+ 1 - 1
src/thread/windows/SDL_systhread.c

@@ -178,7 +178,7 @@ SDL_SYS_SetupThread(const char *name)
         if (!kernel32) {
             kernel32 = LoadLibraryW(L"kernel32.dll");
             if (kernel32) {
-                pSetThreadDescription = (pfnSetThreadDescription) GetProcAddress(kernel32, "SetThreadDescription");
+                *(void**)&pSetThreadDescription = GetProcAddress(kernel32, "SetThreadDescription");
             }
         }
 

+ 2 - 2
src/video/SDL_blit.c

@@ -82,7 +82,7 @@ SDL_SoftBlit(SDL_Surface * src, SDL_Rect * srcrect,
         info->dst_pitch = dst->pitch;
         info->dst_skip =
             info->dst_pitch - info->dst_w * info->dst_fmt->BytesPerPixel;
-        RunBlit = (SDL_BlitFunc) src->map->data;
+        *(void**)&RunBlit = src->map->data;
 
         /* Run the actual software blit */
         RunBlit(info);
@@ -282,7 +282,7 @@ SDL_CalculateBlit(SDL_Surface * surface)
             blit = SDL_Blit_Slow;
         }
     }
-    map->data = blit;
+    *(SDL_BlitFunc *)&map->data = blit;
 
     /* Make sure we have a blit function */
     if (blit == NULL) {

+ 2 - 2
src/video/SDL_egl.c

@@ -87,7 +87,7 @@ static const char g_rpi_opt_path[] = "/opt/vc/lib";
 _this->egl_data->NAME = (void *)NAME;
 #else
 #define LOAD_FUNC(NAME) \
-_this->egl_data->NAME = SDL_LoadFunction(_this->egl_data->dll_handle, #NAME); \
+*(void**)&_this->egl_data->NAME = SDL_LoadFunction(_this->egl_data->dll_handle, #NAME); \
 if (!_this->egl_data->NAME) \
 { \
     return SDL_SetError("Could not retrieve EGL function " #NAME); \
@@ -432,7 +432,7 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa
             _this->egl_data->egl_display = _this->egl_data->eglGetPlatformDisplay(platform, (void *)(size_t)native_display, NULL);
         } else {
             if (SDL_EGL_HasExtension(_this, SDL_EGL_CLIENT_EXTENSION, "EGL_EXT_platform_base")) {
-                _this->egl_data->eglGetPlatformDisplayEXT = SDL_EGL_GetProcAddress(_this, "eglGetPlatformDisplayEXT");
+                *(void**)&_this->egl_data->eglGetPlatformDisplayEXT = SDL_EGL_GetProcAddress(_this, "eglGetPlatformDisplayEXT");
                 if (_this->egl_data->eglGetPlatformDisplayEXT) {
                     _this->egl_data->egl_display = _this->egl_data->eglGetPlatformDisplayEXT(platform, (void *)(size_t)native_display, NULL);
                 }

+ 2 - 2
src/video/SDL_sysvideo.h

@@ -365,8 +365,8 @@ struct SDL_VideoDevice
     /* Data used by the Vulkan drivers */
     struct
     {
-        void *vkGetInstanceProcAddr;
-        void *vkEnumerateInstanceExtensionProperties;
+        PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
+        PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;
         int loader_loaded;
         char loader_path[256];
         void *loader_handle;

+ 12 - 9
src/video/SDL_video.c

@@ -224,7 +224,7 @@ ShouldUseTextureFramebuffer()
                 const GLubyte *(APIENTRY * glGetStringFunc) (GLenum);
                 const char *vendor = NULL;
 
-                glGetStringFunc = SDL_GL_GetProcAddress("glGetString");
+                *(void**)&glGetStringFunc = SDL_GL_GetProcAddress("glGetString");
                 if (glGetStringFunc) {
                     vendor = (const char *) glGetStringFunc(GL_VENDOR);
                 }
@@ -2870,7 +2870,7 @@ SDL_GL_ExtensionSupported(const char *extension)
 
     /* Lookup the available extensions */
 
-    glGetStringFunc = SDL_GL_GetProcAddress("glGetString");
+    *(void**)&glGetStringFunc = SDL_GL_GetProcAddress("glGetString");
     if (!glGetStringFunc) {
         return SDL_FALSE;
     }
@@ -2881,8 +2881,8 @@ SDL_GL_ExtensionSupported(const char *extension)
         GLint num_exts = 0;
         GLint i;
 
-        glGetStringiFunc = SDL_GL_GetProcAddress("glGetStringi");
-        glGetIntegervFunc = SDL_GL_GetProcAddress("glGetIntegerv");
+        *(void**)&glGetStringiFunc = SDL_GL_GetProcAddress("glGetStringi");
+        *(void**)&glGetIntegervFunc = SDL_GL_GetProcAddress("glGetIntegerv");
         if ((!glGetStringiFunc) || (!glGetIntegervFunc)) {
             return SDL_FALSE;
         }
@@ -3342,13 +3342,13 @@ SDL_GL_GetAttribute(SDL_GLattr attr, int *value)
     }
 
 #if SDL_VIDEO_OPENGL
-    glGetStringFunc = SDL_GL_GetProcAddress("glGetString");
+    *(void**)&glGetStringFunc = SDL_GL_GetProcAddress("glGetString");
     if (!glGetStringFunc) {
         return -1;
     }
 
     if (attachmentattrib && isAtLeastGL3((const char *) glGetStringFunc(GL_VERSION))) {
-        glGetFramebufferAttachmentParameterivFunc = SDL_GL_GetProcAddress("glGetFramebufferAttachmentParameteriv");
+        *(void**)&glGetFramebufferAttachmentParameterivFunc = SDL_GL_GetProcAddress("glGetFramebufferAttachmentParameteriv");
 
         if (glGetFramebufferAttachmentParameterivFunc) {
             glGetFramebufferAttachmentParameterivFunc(GL_FRAMEBUFFER, attachment, attachmentattrib, (GLint *) value);
@@ -3359,7 +3359,7 @@ SDL_GL_GetAttribute(SDL_GLattr attr, int *value)
 #endif
     {
         void (APIENTRY *glGetIntegervFunc) (GLenum pname, GLint * params);
-        glGetIntegervFunc = SDL_GL_GetProcAddress("glGetIntegerv");
+        *(void**)&glGetIntegervFunc = SDL_GL_GetProcAddress("glGetIntegerv");
         if (glGetIntegervFunc) {
             glGetIntegervFunc(attrib, (GLint *) value);
         } else {
@@ -3367,7 +3367,7 @@ SDL_GL_GetAttribute(SDL_GLattr attr, int *value)
         }
     }
 
-    glGetErrorFunc = SDL_GL_GetProcAddress("glGetError");
+    *(void**)&glGetErrorFunc = SDL_GL_GetProcAddress("glGetError");
     if (!glGetErrorFunc) {
         return -1;
     }
@@ -3995,14 +3995,17 @@ int SDL_Vulkan_LoadLibrary(const char *path)
 
 void *SDL_Vulkan_GetVkGetInstanceProcAddr(void)
 {
+    void *func = NULL;
     if (!_this) {
         SDL_UninitializedVideo();
         return NULL;
     }
     if (!_this->vulkan_config.loader_loaded) {
         SDL_SetError("No Vulkan loader has been loaded");
+        return NULL;
     }
-    return _this->vulkan_config.vkGetInstanceProcAddr;
+    *(PFN_vkGetInstanceProcAddr*)&func =  _this->vulkan_config.vkGetInstanceProcAddr;
+    return func;
 }
 
 void SDL_Vulkan_UnloadLibrary(void)

+ 3 - 0
src/video/SDL_vulkan_internal.h

@@ -81,6 +81,9 @@ extern SDL_bool SDL_Vulkan_GetInstanceExtensions_Helper(unsigned *userCount,
 /* No SDL Vulkan support, just include the header for typedefs */
 #include "SDL_vulkan.h"
 
+typedef void* PFN_vkGetInstanceProcAddr;
+typedef void* PFN_vkEnumerateInstanceExtensionProperties;
+
 #endif /* SDL_VIDEO_VULKAN */
 
 #endif /* SDL_vulkan_internal_h_ */

+ 5 - 4
src/video/android/SDL_androidvulkan.c

@@ -56,13 +56,13 @@ int Android_Vulkan_LoadLibrary(_THIS, const char *path)
         return -1;
     SDL_strlcpy(_this->vulkan_config.loader_path, path,
                 SDL_arraysize(_this->vulkan_config.loader_path));
-    vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)SDL_LoadFunction(
+    *(void**)&vkGetInstanceProcAddr = SDL_LoadFunction(
         _this->vulkan_config.loader_handle, "vkGetInstanceProcAddr");
     if(!vkGetInstanceProcAddr)
         goto fail;
-    _this->vulkan_config.vkGetInstanceProcAddr = (void *)vkGetInstanceProcAddr;
+    _this->vulkan_config.vkGetInstanceProcAddr = vkGetInstanceProcAddr;
     _this->vulkan_config.vkEnumerateInstanceExtensionProperties =
-        (void *)((PFN_vkGetInstanceProcAddr)_this->vulkan_config.vkGetInstanceProcAddr)(
+        (PFN_vkEnumerateInstanceExtensionProperties)_this->vulkan_config.vkGetInstanceProcAddr(
             VK_NULL_HANDLE, "vkEnumerateInstanceExtensionProperties");
     if(!_this->vulkan_config.vkEnumerateInstanceExtensionProperties)
         goto fail;
@@ -139,7 +139,7 @@ SDL_bool Android_Vulkan_CreateSurface(_THIS,
         (PFN_vkCreateAndroidSurfaceKHR)vkGetInstanceProcAddr(
                                             (VkInstance)instance,
                                             "vkCreateAndroidSurfaceKHR");
-    VkAndroidSurfaceCreateInfoKHR createInfo = {};
+    VkAndroidSurfaceCreateInfoKHR createInfo;
     VkResult result;
 
     if(!_this->vulkan_config.loader_handle)
@@ -154,6 +154,7 @@ SDL_bool Android_Vulkan_CreateSurface(_THIS,
                      " extension is not enabled in the Vulkan instance.");
         return SDL_FALSE;
     }
+    SDL_zero(createInfo);
     createInfo.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
     createInfo.pNext = NULL;
     createInfo.flags = 0;

+ 3 - 3
src/video/cocoa/SDL_cocoavulkan.m

@@ -83,7 +83,7 @@ int Cocoa_Vulkan_LoadLibrary(_THIS, const char *path)
         }
         SDL_strlcpy(_this->vulkan_config.loader_path, path,
                     SDL_arraysize(_this->vulkan_config.loader_path));
-        vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)SDL_LoadFunction(
+        *(void**)&vkGetInstanceProcAddr = SDL_LoadFunction(
             _this->vulkan_config.loader_handle, "vkGetInstanceProcAddr");
     }
 
@@ -95,9 +95,9 @@ int Cocoa_Vulkan_LoadLibrary(_THIS, const char *path)
         goto fail;
     }
 
-    _this->vulkan_config.vkGetInstanceProcAddr = (void *)vkGetInstanceProcAddr;
+    _this->vulkan_config.vkGetInstanceProcAddr = vkGetInstanceProcAddr;
     _this->vulkan_config.vkEnumerateInstanceExtensionProperties =
-        (void *)((PFN_vkGetInstanceProcAddr)_this->vulkan_config.vkGetInstanceProcAddr)(
+        (PFN_vkEnumerateInstanceExtensionProperties)_this->vulkan_config.vkGetInstanceProcAddr(
             VK_NULL_HANDLE, "vkEnumerateInstanceExtensionProperties");
     if (!_this->vulkan_config.vkEnumerateInstanceExtensionProperties) {
         goto fail;

+ 1 - 1
src/video/mir/SDL_mirdyn.c

@@ -139,7 +139,7 @@ SDL_MIR_LoadSymbols(void)
 #include "SDL_mirsym.h"
 
 #define SDL_MIR_MODULE(modname) thismod = &SDL_MIR_HAVE_##modname;
-#define SDL_MIR_SYM(rc,fn,params) MIR_##fn = (SDL_DYNMIRFN_##fn) MIR_GetSym(#fn,thismod);
+#define SDL_MIR_SYM(rc,fn,params) *(void**)&MIR_##fn = MIR_GetSym(#fn,thismod);
 #define SDL_MIR_SYM_CONST(type,name) MIR_##name = *(SDL_DYMMIRCONST_##name*) MIR_GetSym(#name,thismod);
 #include "SDL_mirsym.h"
 

+ 3 - 2
src/video/mir/SDL_mirvideo.c

@@ -27,6 +27,7 @@
 
 #if SDL_VIDEO_DRIVER_MIR
 
+#include "SDL_assert.h"
 #include "SDL_log.h"
 
 #include "SDL_mirwindow.h"
@@ -103,7 +104,7 @@ MIR_Available()
     if (SDL_MIR_LoadSymbols()) {
 
         /* Lets ensure we can connect to the mir server */
-        MirConnection* connection = MIR_mir_connect_sync(NULL, __PRETTY_FUNCTION__);
+        MirConnection* connection = MIR_mir_connect_sync(NULL, SDL_FUNCTION);
 
         if (!MIR_mir_connection_is_valid(connection)) {
             SDL_LogWarn(SDL_LOG_CATEGORY_VIDEO, "Unable to connect to the mir server %s",
@@ -319,7 +320,7 @@ MIR_VideoInit(_THIS)
 {
     MIR_Data* mir_data = _this->driverdata;
 
-    mir_data->connection     = MIR_mir_connect_sync(NULL, __PRETTY_FUNCTION__);
+    mir_data->connection     = MIR_mir_connect_sync(NULL, SDL_FUNCTION);
     mir_data->current_window = NULL;
     mir_data->software       = SDL_FALSE;
     mir_data->pixel_format   = mir_pixel_format_invalid;

+ 5 - 5
src/video/mir/SDL_mirvulkan.c

@@ -56,14 +56,13 @@ int MIR_Vulkan_LoadLibrary(_THIS, const char *path)
         return -1;
     SDL_strlcpy(_this->vulkan_config.loader_path, path,
                 SDL_arraysize(_this->vulkan_config.loader_path));
-    vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)SDL_LoadFunction(
+    *(void**)&vkGetInstanceProcAddr = SDL_LoadFunction(
         _this->vulkan_config.loader_handle, "vkGetInstanceProcAddr");
     if(!vkGetInstanceProcAddr)
         goto fail;
-    _this->vulkan_config.vkGetInstanceProcAddr = (void *)vkGetInstanceProcAddr;
+    _this->vulkan_config.vkGetInstanceProcAddr = vkGetInstanceProcAddr;
     _this->vulkan_config.vkEnumerateInstanceExtensionProperties =
-        (void *)((PFN_vkGetInstanceProcAddr)_this->vulkan_config.vkGetInstanceProcAddr)(
-            VK_NULL_HANDLE, "vkEnumerateInstanceExtensionProperties");
+        (PFN_vkEnumerateInstanceExtensionProperties)_this->vulkan_config.vkGetInstanceProcAddr(VK_NULL_HANDLE, "vkEnumerateInstanceExtensionProperties");
     if(!_this->vulkan_config.vkEnumerateInstanceExtensionProperties)
         goto fail;
     extensions = SDL_Vulkan_CreateInstanceExtensionsList(
@@ -139,7 +138,7 @@ SDL_bool MIR_Vulkan_CreateSurface(_THIS,
         (PFN_vkCreateMirSurfaceKHR)vkGetInstanceProcAddr(
                                             (VkInstance)instance,
                                             "vkCreateMirSurfaceKHR");
-    VkMirSurfaceCreateInfoKHR createInfo = {};
+    VkMirSurfaceCreateInfoKHR createInfo;
     VkResult result;
 
     if(!_this->vulkan_config.loader_handle)
@@ -154,6 +153,7 @@ SDL_bool MIR_Vulkan_CreateSurface(_THIS,
                      " extension is not enabled in the Vulkan instance.");
         return SDL_FALSE;
     }
+    SDL_zero(createInfo);
     createInfo.sType = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR;
     createInfo.pNext = NULL;
     createInfo.flags = 0;

+ 1 - 2
src/video/uikit/SDL_uikitvulkan.m

@@ -84,8 +84,7 @@ int UIKit_Vulkan_LoadLibrary(_THIS, const char *path)
         }
         SDL_strlcpy(_this->vulkan_config.loader_path, path,
                     SDL_arraysize(_this->vulkan_config.loader_path));
-        vkGetInstanceProcAddr =
-            (PFN_vkGetInstanceProcAddr)SDL_LoadFunction(
+        *(void**)&vkGetInstanceProcAddr = SDL_LoadFunction(
                                     _this->vulkan_config.loader_handle,
                                     "vkGetInstanceProcAddr");
     }

+ 3 - 3
src/video/wayland/SDL_waylanddatamanager.c

@@ -61,7 +61,7 @@ write_pipe(int fd, const void* buffer, size_t total_length, size_t *pos)
         bytes_written = SDL_SetError("Pipe select error");
     } else {
         if (length > 0) {
-            bytes_written = write(fd, buffer + *pos, SDL_min(length, PIPE_BUF));
+            bytes_written = write(fd, (Uint8*)buffer + *pos, SDL_min(length, PIPE_BUF));
         }
 
         if (bytes_written > 0) {
@@ -114,10 +114,10 @@ read_pipe(int fd, void** buffer, size_t* total_length, SDL_bool null_terminate)
         if (output_buffer == NULL) {
             bytes_read = SDL_OutOfMemory();
         } else {
-            SDL_memcpy(output_buffer + pos, temp, bytes_read);
+            SDL_memcpy((Uint8*)output_buffer + pos, temp, bytes_read);
 
             if (null_terminate == SDL_TRUE) {
-                SDL_memset(output_buffer + (new_buffer_length - 1), 0, 1);
+                SDL_memset((Uint8*)output_buffer + (new_buffer_length - 1), 0, 1);
             }
             
             *buffer = output_buffer;

+ 1 - 1
src/video/wayland/SDL_waylanddyn.c

@@ -147,7 +147,7 @@ SDL_WAYLAND_LoadSymbols(void)
 #include "SDL_waylandsym.h"
 
 #define SDL_WAYLAND_MODULE(modname) thismod = &SDL_WAYLAND_HAVE_##modname;
-#define SDL_WAYLAND_SYM(rc,fn,params) WAYLAND_##fn = (SDL_DYNWAYLANDFN_##fn) WAYLAND_GetSym(#fn,thismod);
+#define SDL_WAYLAND_SYM(rc,fn,params) *(void**)&WAYLAND_##fn = WAYLAND_GetSym(#fn,thismod);
 #define SDL_WAYLAND_INTERFACE(iface) WAYLAND_##iface = (struct wl_interface *) WAYLAND_GetSym(#iface,thismod);
 #include "SDL_waylandsym.h"
 

+ 1 - 0
src/video/wayland/SDL_waylandopengles.h

@@ -28,6 +28,7 @@
 
 typedef struct SDL_PrivateGLESData
 {
+    int dummy;
 } SDL_PrivateGLESData;
 
 /* OpenGLES functions */

+ 5 - 5
src/video/wayland/SDL_waylandvulkan.c

@@ -56,13 +56,12 @@ int Wayland_Vulkan_LoadLibrary(_THIS, const char *path)
         return -1;
     SDL_strlcpy(_this->vulkan_config.loader_path, path,
                 SDL_arraysize(_this->vulkan_config.loader_path));
-    vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)SDL_LoadFunction(
-        _this->vulkan_config.loader_handle, "vkGetInstanceProcAddr");
+    *(void**)&vkGetInstanceProcAddr = SDL_LoadFunction(_this->vulkan_config.loader_handle, "vkGetInstanceProcAddr");
     if(!vkGetInstanceProcAddr)
         goto fail;
-    _this->vulkan_config.vkGetInstanceProcAddr = (void *)vkGetInstanceProcAddr;
+    _this->vulkan_config.vkGetInstanceProcAddr = vkGetInstanceProcAddr;
     _this->vulkan_config.vkEnumerateInstanceExtensionProperties =
-        (void *)((PFN_vkGetInstanceProcAddr)_this->vulkan_config.vkGetInstanceProcAddr)(
+        (PFN_vkEnumerateInstanceExtensionProperties)_this->vulkan_config.vkGetInstanceProcAddr(
             VK_NULL_HANDLE, "vkEnumerateInstanceExtensionProperties");
     if(!_this->vulkan_config.vkEnumerateInstanceExtensionProperties)
         goto fail;
@@ -139,7 +138,7 @@ SDL_bool Wayland_Vulkan_CreateSurface(_THIS,
         (PFN_vkCreateWaylandSurfaceKHR)vkGetInstanceProcAddr(
                                             (VkInstance)instance,
                                             "vkCreateWaylandSurfaceKHR");
-    VkWaylandSurfaceCreateInfoKHR createInfo = {};
+    VkWaylandSurfaceCreateInfoKHR createInfo;
     VkResult result;
 
     if(!_this->vulkan_config.loader_handle)
@@ -154,6 +153,7 @@ SDL_bool Wayland_Vulkan_CreateSurface(_THIS,
                      " extension is not enabled in the Vulkan instance.");
         return SDL_FALSE;
     }
+    SDL_zero(createInfo);
     createInfo.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
     createInfo.pNext = NULL;
     createInfo.flags = 0;

+ 3 - 1
src/video/windows/SDL_windowsevents.c

@@ -1086,7 +1086,9 @@ IsWin10FCUorNewer(void)
     HMODULE handle = GetModuleHandleW(L"ntdll.dll");
     if (handle) {
         typedef LONG(WINAPI* RtlGetVersionPtr)(struct SDL_WIN_OSVERSIONINFOW*);
-        RtlGetVersionPtr getVersionPtr = (RtlGetVersionPtr)GetProcAddress(handle, "RtlGetVersion");
+        RtlGetVersionPtr getVersionPtr;
+       
+        *(void**)&getVersionPtr = GetProcAddress(handle, "RtlGetVersion");
         if (getVersionPtr != NULL) {
             struct SDL_WIN_OSVERSIONINFOW info;
             SDL_zero(info);

+ 6 - 6
src/video/windows/SDL_windowskeyboard.c

@@ -354,10 +354,10 @@ IME_Init(SDL_VideoData *videodata, HWND hwnd)
         SDL_ClearError();
         return;
     }
-    videodata->ImmLockIMC = (LPINPUTCONTEXT2 (WINAPI *)(HIMC))SDL_LoadFunction(videodata->ime_himm32, "ImmLockIMC");
-    videodata->ImmUnlockIMC = (BOOL (WINAPI *)(HIMC))SDL_LoadFunction(videodata->ime_himm32, "ImmUnlockIMC");
-    videodata->ImmLockIMCC = (LPVOID (WINAPI *)(HIMCC))SDL_LoadFunction(videodata->ime_himm32, "ImmLockIMCC");
-    videodata->ImmUnlockIMCC = (BOOL (WINAPI *)(HIMCC))SDL_LoadFunction(videodata->ime_himm32, "ImmUnlockIMCC");
+    *(void**)&videodata->ImmLockIMC = SDL_LoadFunction(videodata->ime_himm32, "ImmLockIMC");
+    *(void**)&videodata->ImmUnlockIMC = SDL_LoadFunction(videodata->ime_himm32, "ImmUnlockIMC");
+    *(void**)&videodata->ImmLockIMCC = SDL_LoadFunction(videodata->ime_himm32, "ImmLockIMCC");
+    *(void**)&videodata->ImmUnlockIMCC = SDL_LoadFunction(videodata->ime_himm32, "ImmUnlockIMCC");
 
     IME_SetWindow(videodata, hwnd);
     videodata->ime_himc = ImmGetContext(hwnd);
@@ -654,9 +654,9 @@ IME_SetupAPI(SDL_VideoData *videodata)
     if (!hime)
         return;
 
-    videodata->GetReadingString = (UINT (WINAPI *)(HIMC, UINT, LPWSTR, PINT, BOOL*, PUINT))
+    *(void**)&videodata->GetReadingString =
         SDL_LoadFunction(hime, "GetReadingString");
-    videodata->ShowReadingWindow = (BOOL (WINAPI *)(HIMC, BOOL))
+    *(void**)&videodata->ShowReadingWindow =
         SDL_LoadFunction(hime, "ShowReadingWindow");
 
     if (videodata->ShowReadingWindow) {

+ 12 - 17
src/video/windows/SDL_windowsopengl.c

@@ -119,15 +119,15 @@ WIN_GL_LoadLibrary(_THIS, const char *path)
 
     /* Load function pointers */
     handle = _this->gl_config.dll_handle;
-    _this->gl_data->wglGetProcAddress = (void *(WINAPI *) (const char *))
+    *(void**)&_this->gl_data->wglGetProcAddress =
         SDL_LoadFunction(handle, "wglGetProcAddress");
-    _this->gl_data->wglCreateContext = (HGLRC(WINAPI *) (HDC))
+    *(void**)&_this->gl_data->wglCreateContext =
         SDL_LoadFunction(handle, "wglCreateContext");
-    _this->gl_data->wglDeleteContext = (BOOL(WINAPI *) (HGLRC))
+    *(void**)&_this->gl_data->wglDeleteContext =
         SDL_LoadFunction(handle, "wglDeleteContext");
-    _this->gl_data->wglMakeCurrent = (BOOL(WINAPI *) (HDC, HGLRC))
+    *(void**)&_this->gl_data->wglMakeCurrent =
         SDL_LoadFunction(handle, "wglMakeCurrent");
-    _this->gl_data->wglShareLists = (BOOL(WINAPI *) (HGLRC, HGLRC))
+    *(void**)&_this->gl_data->wglShareLists =
         SDL_LoadFunction(handle, "wglShareLists");
 
     if (!_this->gl_data->wglGetProcAddress ||
@@ -409,7 +409,7 @@ WIN_GL_InitExtensions(_THIS)
     }
     _this->gl_data->wglMakeCurrent(hdc, hglrc);
 
-    wglGetExtensionsStringARB = (const char *(WINAPI *) (HDC))
+    *(void**)&wglGetExtensionsStringARB =
         _this->gl_data->wglGetProcAddress("wglGetExtensionsStringARB");
     if (wglGetExtensionsStringARB) {
         extensions = wglGetExtensionsStringARB(hdc);
@@ -420,13 +420,9 @@ WIN_GL_InitExtensions(_THIS)
     /* Check for WGL_ARB_pixel_format */
     _this->gl_data->HAS_WGL_ARB_pixel_format = SDL_FALSE;
     if (HasExtension("WGL_ARB_pixel_format", extensions)) {
-        _this->gl_data->wglChoosePixelFormatARB = (BOOL(WINAPI *)
-                                                   (HDC, const int *,
-                                                    const FLOAT *, UINT,
-                                                    int *, UINT *))
+        *(void**)&_this->gl_data->wglChoosePixelFormatARB =
             WIN_GL_GetProcAddress(_this, "wglChoosePixelFormatARB");
-        _this->gl_data->wglGetPixelFormatAttribivARB =
-            (BOOL(WINAPI *) (HDC, int, int, UINT, const int *, int *))
+        *(void**)&_this->gl_data->wglGetPixelFormatAttribivARB =
             WIN_GL_GetProcAddress(_this, "wglGetPixelFormatAttribivARB");
 
         if ((_this->gl_data->wglChoosePixelFormatARB != NULL) &&
@@ -438,9 +434,9 @@ WIN_GL_InitExtensions(_THIS)
     /* Check for WGL_EXT_swap_control */
     _this->gl_data->HAS_WGL_EXT_swap_control_tear = SDL_FALSE;
     if (HasExtension("WGL_EXT_swap_control", extensions)) {
-        _this->gl_data->wglSwapIntervalEXT =
+        *(void**)&_this->gl_data->wglSwapIntervalEXT =
             WIN_GL_GetProcAddress(_this, "wglSwapIntervalEXT");
-        _this->gl_data->wglGetSwapIntervalEXT =
+        *(void**)&_this->gl_data->wglGetSwapIntervalEXT =
             WIN_GL_GetProcAddress(_this, "wglGetSwapIntervalEXT");
         if (HasExtension("WGL_EXT_swap_control_tear", extensions)) {
             _this->gl_data->HAS_WGL_EXT_swap_control_tear = SDL_TRUE;
@@ -721,9 +717,8 @@ WIN_GL_CreateContext(_THIS, SDL_Window * window)
             return NULL;
         }
 
-        wglCreateContextAttribsARB =
-            (PFNWGLCREATECONTEXTATTRIBSARBPROC) _this->gl_data->
-            wglGetProcAddress("wglCreateContextAttribsARB");
+        *(void**)&wglCreateContextAttribsARB =
+            _this->gl_data->wglGetProcAddress("wglCreateContextAttribsARB");
         if (!wglCreateContextAttribsARB) {
             SDL_SetError("GL 3.x is not supported");
             context = temp_context;

+ 7 - 9
src/video/windows/SDL_windowsvideo.c

@@ -113,16 +113,16 @@ WIN_CreateDevice(int devindex)
 
     data->userDLL = SDL_LoadObject("USER32.DLL");
     if (data->userDLL) {
-        data->CloseTouchInputHandle = (BOOL (WINAPI *)(HTOUCHINPUT)) SDL_LoadFunction(data->userDLL, "CloseTouchInputHandle");
-        data->GetTouchInputInfo = (BOOL (WINAPI *)(HTOUCHINPUT, UINT, PTOUCHINPUT, int)) SDL_LoadFunction(data->userDLL, "GetTouchInputInfo");
-        data->RegisterTouchWindow = (BOOL (WINAPI *)(HWND, ULONG)) SDL_LoadFunction(data->userDLL, "RegisterTouchWindow");
+        *(void**)&data->CloseTouchInputHandle = SDL_LoadFunction(data->userDLL, "CloseTouchInputHandle");
+        *(void**)&data->GetTouchInputInfo = SDL_LoadFunction(data->userDLL, "GetTouchInputInfo");
+        *(void**)&data->RegisterTouchWindow = SDL_LoadFunction(data->userDLL, "RegisterTouchWindow");
     } else {
         SDL_ClearError();
     }
 
     data->shcoreDLL = SDL_LoadObject("SHCORE.DLL");
     if (data->shcoreDLL) {
-        data->GetDpiForMonitor = (HRESULT (WINAPI *)(HMONITOR, MONITOR_DPI_TYPE, UINT *, UINT *)) SDL_LoadFunction(data->shcoreDLL, "GetDpiForMonitor");
+        *(void**)&data->GetDpiForMonitor = SDL_LoadFunction(data->shcoreDLL, "GetDpiForMonitor");
     } else {
         SDL_ClearError();
     }
@@ -256,7 +256,7 @@ D3D_LoadDLL(void **pD3DDLL, IDirect3D9 **pDirect3D9Interface)
         typedef HRESULT (WINAPI *Direct3DCreate9Ex_t)(UINT SDKVersion, IDirect3D9Ex **ppD3D);
         Direct3DCreate9Ex_t Direct3DCreate9ExFunc;
 
-        Direct3DCreate9ExFunc = (Direct3DCreate9Ex_t)SDL_LoadFunction(*pD3DDLL, "Direct3DCreate9Ex");
+        *(void**)&Direct3DCreate9ExFunc = SDL_LoadFunction(*pD3DDLL, "Direct3DCreate9Ex");
         if (Direct3DCreate9ExFunc) {
             IDirect3D9Ex *pDirect3D9ExInterface;
             HRESULT hr = Direct3DCreate9ExFunc(D3D_SDK_VERSION, &pDirect3D9ExInterface);
@@ -271,7 +271,7 @@ D3D_LoadDLL(void **pD3DDLL, IDirect3D9 **pDirect3D9Interface)
         }
 #endif /* USE_D3D9EX */
 
-        Direct3DCreate9Func = (Direct3DCreate9_t)SDL_LoadFunction(*pD3DDLL, "Direct3DCreate9");
+        *(void**)&Direct3DCreate9Func = SDL_LoadFunction(*pD3DDLL, "Direct3DCreate9");
         if (Direct3DCreate9Func) {
             *pDirect3D9Interface = Direct3DCreate9Func(D3D_SDK_VERSION);
             if (*pDirect3D9Interface) {
@@ -338,9 +338,7 @@ DXGI_LoadDLL(void **pDXGIDLL, IDXGIFactory **pDXGIFactory)
     if (*pDXGIDLL) {
         HRESULT (WINAPI *CreateDXGI)(REFIID riid, void **ppFactory);
 
-        CreateDXGI =
-            (HRESULT (WINAPI *) (REFIID, void**)) SDL_LoadFunction(*pDXGIDLL,
-            "CreateDXGIFactory");
+        *(void**)&CreateDXGI = SDL_LoadFunction(*pDXGIDLL, "CreateDXGIFactory");
         if (CreateDXGI) {
             GUID dxgiGUID = {0x7b7166ec,0x21c7,0x44ae,{0xb2,0x1a,0xc9,0xae,0x32,0x1a,0xe3,0x69}};
             if (!SUCCEEDED(CreateDXGI(&dxgiGUID, (void**)pDXGIFactory))) {

+ 3 - 3
src/video/windows/SDL_windowsvulkan.c

@@ -57,13 +57,13 @@ int WIN_Vulkan_LoadLibrary(_THIS, const char *path)
         return -1;
     SDL_strlcpy(_this->vulkan_config.loader_path, path,
                 SDL_arraysize(_this->vulkan_config.loader_path));
-    vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)SDL_LoadFunction(
+    *(void**)vkGetInstanceProcAddr = SDL_LoadFunction(
         _this->vulkan_config.loader_handle, "vkGetInstanceProcAddr");
     if(!vkGetInstanceProcAddr)
         goto fail;
-    _this->vulkan_config.vkGetInstanceProcAddr = (void *)vkGetInstanceProcAddr;
+    _this->vulkan_config.vkGetInstanceProcAddr = vkGetInstanceProcAddr;
     _this->vulkan_config.vkEnumerateInstanceExtensionProperties =
-        (void *)((PFN_vkGetInstanceProcAddr)_this->vulkan_config.vkGetInstanceProcAddr)(
+        (PFN_vkEnumerateInstanceExtensionProperties)_this->vulkan_config.vkGetInstanceProcAddr(
             VK_NULL_HANDLE, "vkEnumerateInstanceExtensionProperties");
     if(!_this->vulkan_config.vkEnumerateInstanceExtensionProperties)
         goto fail;

+ 2 - 1
src/video/winrt/SDL_winrtopengles.cpp

@@ -63,7 +63,8 @@ WINRT_GLES_LoadLibrary(_THIS, const char *path)
     }
 
     /* Load ANGLE/WinRT-specific functions */
-    CreateWinrtEglWindow_Old_Function CreateWinrtEglWindow = (CreateWinrtEglWindow_Old_Function) SDL_LoadFunction(_this->egl_data->egl_dll_handle, "CreateWinrtEglWindow");
+    CreateWinrtEglWindow_Old_Function CreateWinrtEglWindow;
+    *(void**)&CreateWinrtEglWindow =  SDL_LoadFunction(_this->egl_data->egl_dll_handle, "CreateWinrtEglWindow");
     if (CreateWinrtEglWindow) {
         /* 'CreateWinrtEglWindow' was found, which means that an an older
          * version of ANGLE/WinRT is being used.  Continue setting up EGL,

+ 3 - 5
src/video/x11/SDL_x11dyn.c

@@ -172,14 +172,12 @@ SDL_X11_LoadSymbols(void)
 #include "SDL_x11sym.h"
 
 #define SDL_X11_MODULE(modname) thismod = &SDL_X11_HAVE_##modname;
-#define SDL_X11_SYM(a,fn,x,y,z) X11_##fn = (SDL_DYNX11FN_##fn) X11_GetSym(#fn,thismod);
+#define SDL_X11_SYM(a,fn,x,y,z) *(void**)&X11_##fn = X11_GetSym(#fn,thismod);
 #include "SDL_x11sym.h"
 
 #ifdef X_HAVE_UTF8_STRING
-        X11_XCreateIC = (SDL_DYNX11FN_XCreateIC)
-                        X11_GetSym("XCreateIC", &SDL_X11_HAVE_UTF8);
-        X11_XGetICValues = (SDL_DYNX11FN_XGetICValues)
-                        X11_GetSym("XGetICValues", &SDL_X11_HAVE_UTF8);
+        *(void**)&X11_XCreateIC = X11_GetSym("XCreateIC", &SDL_X11_HAVE_UTF8);
+        *(void**)&X11_XGetICValues = X11_GetSym("XGetICValues", &SDL_X11_HAVE_UTF8);
 #endif
 
         if (SDL_X11_HAVE_BASEXLIB) {

+ 22 - 38
src/video/x11/SDL_x11opengl.c

@@ -189,29 +189,21 @@ X11_GL_LoadLibrary(_THIS, const char *path)
 
     /* Load function pointers */
     handle = _this->gl_config.dll_handle;
-    _this->gl_data->glXQueryExtension =
-        (Bool (*)(Display *, int *, int *))
+    *(void**)&_this->gl_data->glXQueryExtension =
             GL_LoadFunction(handle, "glXQueryExtension");
-    _this->gl_data->glXGetProcAddress =
-        (void *(*)(const GLubyte *))
+    *(void**)&_this->gl_data->glXGetProcAddress =
             GL_LoadFunction(handle, "glXGetProcAddressARB");
-    _this->gl_data->glXChooseVisual =
-        (XVisualInfo * (*)(Display *, int, int *))
+    *(void**)&_this->gl_data->glXChooseVisual =
             X11_GL_GetProcAddress(_this, "glXChooseVisual");
-    _this->gl_data->glXCreateContext =
-        (GLXContext(*)(Display *, XVisualInfo *, GLXContext, int))
+    *(void**)&_this->gl_data->glXCreateContext =
             X11_GL_GetProcAddress(_this, "glXCreateContext");
-    _this->gl_data->glXDestroyContext =
-        (void (*)(Display *, GLXContext))
+    *(void**)&_this->gl_data->glXDestroyContext =
             X11_GL_GetProcAddress(_this, "glXDestroyContext");
-    _this->gl_data->glXMakeCurrent =
-        (int (*)(Display *, GLXDrawable, GLXContext))
+    *(void**)&_this->gl_data->glXMakeCurrent =
             X11_GL_GetProcAddress(_this, "glXMakeCurrent");
-    _this->gl_data->glXSwapBuffers =
-        (void (*)(Display *, GLXDrawable))
+    *(void**)&_this->gl_data->glXSwapBuffers =
             X11_GL_GetProcAddress(_this, "glXSwapBuffers");
-    _this->gl_data->glXQueryDrawable =
-        (void (*)(Display*,GLXDrawable,int,unsigned int*))
+    *(void**)&_this->gl_data->glXQueryDrawable =
             X11_GL_GetProcAddress(_this, "glXQueryDrawable");
 
     if (!_this->gl_data->glXQueryExtension ||
@@ -341,13 +333,11 @@ X11_GL_InitExtensions(_THIS)
 
     vinfo = X11_GL_GetVisual(_this, display, screen);
     if (vinfo) {
-        GLXContext (*glXGetCurrentContextFunc) (void) =
-            (GLXContext(*)(void))
-                X11_GL_GetProcAddress(_this, "glXGetCurrentContext");
+        GLXContext (*glXGetCurrentContextFunc)(void);
+        GLXDrawable (*glXGetCurrentDrawableFunc)(void);
 
-        GLXDrawable (*glXGetCurrentDrawableFunc) (void) =
-            (GLXDrawable(*)(void))
-                X11_GL_GetProcAddress(_this, "glXGetCurrentDrawable");
+        *(void**)&glXGetCurrentContextFunc = X11_GL_GetProcAddress(_this, "glXGetCurrentContext");
+        *(void**)&glXGetCurrentDrawableFunc = X11_GL_GetProcAddress(_this, "glXGetCurrentDrawable");
 
         if (glXGetCurrentContextFunc && glXGetCurrentDrawableFunc) {
             XSetWindowAttributes xattr;
@@ -373,9 +363,7 @@ X11_GL_InitExtensions(_THIS)
         X11_XFree(vinfo);
     }
 
-    glXQueryExtensionsStringFunc =
-        (const char *(*)(Display *, int)) X11_GL_GetProcAddress(_this,
-                                                                "glXQueryExtensionsString");
+    *(void**)&glXQueryExtensionsStringFunc = X11_GL_GetProcAddress(_this, "glXQueryExtensionsString");
     if (glXQueryExtensionsStringFunc) {
         extensions = glXQueryExtensionsStringFunc(display, screen);
     } else {
@@ -385,8 +373,7 @@ X11_GL_InitExtensions(_THIS)
     /* Check for GLX_EXT_swap_control(_tear) */
     _this->gl_data->HAS_GLX_EXT_swap_control_tear = SDL_FALSE;
     if (HasExtension("GLX_EXT_swap_control", extensions)) {
-        _this->gl_data->glXSwapIntervalEXT =
-            (void (*)(Display*,GLXDrawable,int))
+        *(void**)&_this->gl_data->glXSwapIntervalEXT =
                 X11_GL_GetProcAddress(_this, "glXSwapIntervalEXT");
         if (HasExtension("GLX_EXT_swap_control_tear", extensions)) {
             _this->gl_data->HAS_GLX_EXT_swap_control_tear = SDL_TRUE;
@@ -395,26 +382,23 @@ X11_GL_InitExtensions(_THIS)
 
     /* Check for GLX_MESA_swap_control */
     if (HasExtension("GLX_MESA_swap_control", extensions)) {
-        _this->gl_data->glXSwapIntervalMESA =
-            (int(*)(int)) X11_GL_GetProcAddress(_this, "glXSwapIntervalMESA");
-        _this->gl_data->glXGetSwapIntervalMESA =
-            (int(*)(void)) X11_GL_GetProcAddress(_this,
-                                                   "glXGetSwapIntervalMESA");
+        *(void**)&_this->gl_data->glXSwapIntervalMESA =
+                X11_GL_GetProcAddress(_this, "glXSwapIntervalMESA");
+        *(void**)&_this->gl_data->glXGetSwapIntervalMESA =
+                X11_GL_GetProcAddress(_this, "glXGetSwapIntervalMESA");
     }
 
     /* Check for GLX_SGI_swap_control */
     if (HasExtension("GLX_SGI_swap_control", extensions)) {
-        _this->gl_data->glXSwapIntervalSGI =
-            (int (*)(int)) X11_GL_GetProcAddress(_this, "glXSwapIntervalSGI");
+        *(void**)&_this->gl_data->glXSwapIntervalSGI =
+                 X11_GL_GetProcAddress(_this, "glXSwapIntervalSGI");
     }
 
     /* Check for GLX_ARB_create_context */
     if (HasExtension("GLX_ARB_create_context", extensions)) {
-        _this->gl_data->glXCreateContextAttribsARB =
-            (GLXContext (*)(Display*,GLXFBConfig,GLXContext,Bool,const int *))
+        *(void**)&_this->gl_data->glXCreateContextAttribsARB =
                 X11_GL_GetProcAddress(_this, "glXCreateContextAttribsARB");
-        _this->gl_data->glXChooseFBConfig =
-            (GLXFBConfig *(*)(Display *, int, const int *, int *))
+        *(void**)&_this->gl_data->glXChooseFBConfig =
                 X11_GL_GetProcAddress(_this, "glXChooseFBConfig");
     }
 

+ 9 - 7
src/video/x11/SDL_x11vulkan.c

@@ -57,14 +57,14 @@ int X11_Vulkan_LoadLibrary(_THIS, const char *path)
     if(!_this->vulkan_config.loader_handle)
         return -1;
     SDL_strlcpy(_this->vulkan_config.loader_path, path, SDL_arraysize(_this->vulkan_config.loader_path));
-    vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)SDL_LoadFunction(
+    *(void**)&vkGetInstanceProcAddr = SDL_LoadFunction(
         _this->vulkan_config.loader_handle, "vkGetInstanceProcAddr");
     if(!vkGetInstanceProcAddr)
         goto fail;
-    _this->vulkan_config.vkGetInstanceProcAddr = (void *)vkGetInstanceProcAddr;
+    _this->vulkan_config.vkGetInstanceProcAddr = vkGetInstanceProcAddr;
     _this->vulkan_config.vkEnumerateInstanceExtensionProperties =
-        (void *)((PFN_vkGetInstanceProcAddr)_this->vulkan_config.vkGetInstanceProcAddr)(
-            VK_NULL_HANDLE, "vkEnumerateInstanceExtensionProperties");
+        (PFN_vkEnumerateInstanceExtensionProperties)
+        _this->vulkan_config.vkGetInstanceProcAddr(VK_NULL_HANDLE, "vkEnumerateInstanceExtensionProperties");
     if(!_this->vulkan_config.vkEnumerateInstanceExtensionProperties)
         goto fail;
     extensions = SDL_Vulkan_CreateInstanceExtensionsList(
@@ -108,7 +108,7 @@ int X11_Vulkan_LoadLibrary(_THIS, const char *path)
         videoData->vulkan_xlib_xcb_library = SDL_LoadObject(libX11XCBLibraryName);
         if(!videoData->vulkan_xlib_xcb_library)
             goto fail;
-        videoData->vulkan_XGetXCBConnection =
+        *(void**)&videoData->vulkan_XGetXCBConnection =
             SDL_LoadFunction(videoData->vulkan_xlib_xcb_library, "XGetXCBConnection");
         if(!videoData->vulkan_XGetXCBConnection)
         {
@@ -184,7 +184,7 @@ SDL_bool X11_Vulkan_CreateSurface(_THIS,
         PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR =
             (PFN_vkCreateXcbSurfaceKHR)vkGetInstanceProcAddr((VkInstance)instance,
                                                              "vkCreateXcbSurfaceKHR");
-        VkXcbSurfaceCreateInfoKHR createInfo = {};
+        VkXcbSurfaceCreateInfoKHR createInfo;
         VkResult result;
         if(!vkCreateXcbSurfaceKHR)
         {
@@ -192,6 +192,7 @@ SDL_bool X11_Vulkan_CreateSurface(_THIS,
                          " extension is not enabled in the Vulkan instance.");
             return SDL_FALSE;
         }
+        SDL_zero(createInfo);
         createInfo.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
         createInfo.connection = videoData->vulkan_XGetXCBConnection(videoData->display);
         if(!createInfo.connection)
@@ -214,7 +215,7 @@ SDL_bool X11_Vulkan_CreateSurface(_THIS,
         PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR =
             (PFN_vkCreateXlibSurfaceKHR)vkGetInstanceProcAddr((VkInstance)instance,
                                                               "vkCreateXlibSurfaceKHR");
-        VkXlibSurfaceCreateInfoKHR createInfo = {};
+        VkXlibSurfaceCreateInfoKHR createInfo;
         VkResult result;
         if(!vkCreateXlibSurfaceKHR)
         {
@@ -222,6 +223,7 @@ SDL_bool X11_Vulkan_CreateSurface(_THIS,
                          " extension is not enabled in the Vulkan instance.");
             return SDL_FALSE;
         }
+        SDL_zero(createInfo);
         createInfo.sType = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR;
         createInfo.dpy = videoData->display;
         createInfo.window = (xcb_window_t)windowData->xwindow;

+ 5 - 5
src/video/yuv2rgb/yuv_rgb_sse_func.h

@@ -52,7 +52,7 @@
 { \
 	__m128i red_mask, tmp1, tmp2, tmp3, tmp4; \
 \
-	red_mask = _mm_set1_epi16(0xF800); \
+	red_mask = _mm_set1_epi16((short)0xF800); \
 	RGB1 = _mm_and_si128(_mm_unpacklo_epi8(_mm_setzero_si128(), R1), red_mask); \
 	RGB2 = _mm_and_si128(_mm_unpackhi_epi8(_mm_setzero_si128(), R1), red_mask); \
 	RGB3 = _mm_and_si128(_mm_unpacklo_epi8(_mm_setzero_si128(), R2), red_mask); \
@@ -145,7 +145,7 @@ PACK_RGB24_32_STEP1(R1, R2, G1, G2, B1, B2, RGB1, RGB2, RGB3, RGB4, RGB5, RGB6)
 #define PACK_PIXEL \
 	__m128i rgb_1, rgb_2, rgb_3, rgb_4, rgb_5, rgb_6, rgb_7, rgb_8; \
 	__m128i rgb_9, rgb_10, rgb_11, rgb_12, rgb_13, rgb_14, rgb_15, rgb_16; \
-	__m128i a = _mm_set1_epi8( 0xFF ); \
+	__m128i a = _mm_set1_epi8((char)0xFF); \
 	\
 	PACK_RGBA_32(r_8_11, r_8_12, g_8_11, g_8_12, b_8_11, b_8_12, a, a, rgb_1, rgb_2, rgb_3, rgb_4, rgb_5, rgb_6, rgb_7, rgb_8) \
 	\
@@ -156,7 +156,7 @@ PACK_RGB24_32_STEP1(R1, R2, G1, G2, B1, B2, RGB1, RGB2, RGB3, RGB4, RGB5, RGB6)
 #define PACK_PIXEL \
 	__m128i rgb_1, rgb_2, rgb_3, rgb_4, rgb_5, rgb_6, rgb_7, rgb_8; \
 	__m128i rgb_9, rgb_10, rgb_11, rgb_12, rgb_13, rgb_14, rgb_15, rgb_16; \
-	__m128i a = _mm_set1_epi8( 0xFF ); \
+	__m128i a = _mm_set1_epi8((char)0xFF); \
 	\
 	PACK_RGBA_32(b_8_11, b_8_12, g_8_11, g_8_12, r_8_11, r_8_12, a, a, rgb_1, rgb_2, rgb_3, rgb_4, rgb_5, rgb_6, rgb_7, rgb_8) \
 	\
@@ -167,7 +167,7 @@ PACK_RGB24_32_STEP1(R1, R2, G1, G2, B1, B2, RGB1, RGB2, RGB3, RGB4, RGB5, RGB6)
 #define PACK_PIXEL \
 	__m128i rgb_1, rgb_2, rgb_3, rgb_4, rgb_5, rgb_6, rgb_7, rgb_8; \
 	__m128i rgb_9, rgb_10, rgb_11, rgb_12, rgb_13, rgb_14, rgb_15, rgb_16; \
-	__m128i a = _mm_set1_epi8( 0xFF ); \
+	__m128i a = _mm_set1_epi8((char)0xFF); \
 	\
 	PACK_RGBA_32(a, a, r_8_11, r_8_12, g_8_11, g_8_12, b_8_11, b_8_12, rgb_1, rgb_2, rgb_3, rgb_4, rgb_5, rgb_6, rgb_7, rgb_8) \
 	\
@@ -178,7 +178,7 @@ PACK_RGB24_32_STEP1(R1, R2, G1, G2, B1, B2, RGB1, RGB2, RGB3, RGB4, RGB5, RGB6)
 #define PACK_PIXEL \
 	__m128i rgb_1, rgb_2, rgb_3, rgb_4, rgb_5, rgb_6, rgb_7, rgb_8; \
 	__m128i rgb_9, rgb_10, rgb_11, rgb_12, rgb_13, rgb_14, rgb_15, rgb_16; \
-	__m128i a = _mm_set1_epi8( 0xFF ); \
+	__m128i a = _mm_set1_epi8((char)0xFF); \
 	\
 	PACK_RGBA_32(a, a, b_8_11, b_8_12, g_8_11, g_8_12, r_8_11, r_8_12, rgb_1, rgb_2, rgb_3, rgb_4, rgb_5, rgb_6, rgb_7, rgb_8) \
 	\