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
This commit is contained in:
Sam Lantinga 2018-01-30 18:08:34 -08:00
parent e1d85985b2
commit 90e72bf4e2
40 changed files with 176 additions and 196 deletions

View File

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

View File

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

View File

@ -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! */ 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) { if (libavrt) {
pAvSetMmThreadCharacteristicsW = (pfnAvSetMmThreadCharacteristicsW) GetProcAddress(libavrt, "AvSetMmThreadCharacteristicsW"); *(void **)&pAvSetMmThreadCharacteristicsW = GetProcAddress(libavrt, "AvSetMmThreadCharacteristicsW");
pAvRevertMmThreadCharacteristics = (pfnAvRevertMmThreadCharacteristics) GetProcAddress(libavrt, "AvRevertMmThreadCharacteristics"); *(void **)&pAvRevertMmThreadCharacteristics = GetProcAddress(libavrt, "AvRevertMmThreadCharacteristics");
} }
return 0; return 0;

View File

@ -33,7 +33,7 @@ static int
LoadDBUSSyms(void) LoadDBUSSyms(void)
{ {
#define SDL_DBUS_SYM2(x, y) \ #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) \ #define SDL_DBUS_SYM(x) \
SDL_DBUS_SYM2(x, dbus_##x) SDL_DBUS_SYM2(x, dbus_##x)

View File

@ -104,13 +104,13 @@ WIN_LoadXInputDLL(void)
s_XInputDLLRefCount = 1; 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... */ /* 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) { 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"); *(void**)&SDL_XInputSetState = GetProcAddress((HMODULE)s_pXInputDLL, "XInputSetState");
SDL_XInputGetCapabilities = (XInputGetCapabilities_t)GetProcAddress((HMODULE)s_pXInputDLL, "XInputGetCapabilities"); *(void**)&SDL_XInputGetCapabilities = GetProcAddress((HMODULE)s_pXInputDLL, "XInputGetCapabilities");
SDL_XInputGetBatteryInformation = (XInputGetBatteryInformation_t)GetProcAddress( (HMODULE)s_pXInputDLL, "XInputGetBatteryInformation" ); *(void**)&SDL_XInputGetBatteryInformation = GetProcAddress( (HMODULE)s_pXInputDLL, "XInputGetBatteryInformation" );
if (!SDL_XInputGetState || !SDL_XInputSetState || !SDL_XInputGetCapabilities) { if (!SDL_XInputGetState || !SDL_XInputSetState || !SDL_XInputGetCapabilities) {
WIN_UnloadXInputDLL(); WIN_UnloadXInputDLL();
return -1; return -1;

View File

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

View File

@ -55,7 +55,7 @@ SDL_QuitInit_Internal(void)
struct sigaction action; struct sigaction action;
sigaction(SIGINT, NULL, &action); sigaction(SIGINT, NULL, &action);
#ifdef HAVE_SA_SIGACTION #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 #else
if ( action.sa_handler == SIG_DFL ) { if ( action.sa_handler == SIG_DFL ) {
#endif #endif
@ -65,7 +65,7 @@ SDL_QuitInit_Internal(void)
sigaction(SIGTERM, NULL, &action); sigaction(SIGTERM, NULL, &action);
#ifdef HAVE_SA_SIGACTION #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 #else
if ( action.sa_handler == SIG_DFL ) { if ( action.sa_handler == SIG_DFL ) {
#endif #endif

View File

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

View File

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

View File

@ -260,10 +260,8 @@ GL_CheckAllErrors (const char *prefix, SDL_Renderer *renderer, const char *file,
#if 0 #if 0
#define GL_CheckError(prefix, renderer) #define GL_CheckError(prefix, renderer)
#elif defined(_MSC_VER) || defined(__WATCOMC__)
#define GL_CheckError(prefix, renderer) GL_CheckAllErrors(prefix, renderer, __FILE__, __LINE__, __FUNCTION__)
#else #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 #endif
static int static int
@ -274,7 +272,7 @@ GL_LoadFunctions(GL_RenderData * data)
#else #else
#define SDL_PROC(ret,func,params) \ #define SDL_PROC(ret,func,params) \
do { \ do { \
data->func = SDL_GL_GetProcAddress(#func); \ *(void **)&data->func = SDL_GL_GetProcAddress(#func); \
if ( ! data->func ) { \ if ( ! data->func ) { \
return SDL_SetError("Couldn't load GL function %s: %s", #func, SDL_GetError()); \ 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; data->debug_enabled = SDL_TRUE;
} }
if (data->debug_enabled && SDL_GL_ExtensionSupported("GL_ARB_debug_output")) { 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->GL_ARB_debug_output_supported = SDL_TRUE;
data->glGetPointerv(GL_DEBUG_CALLBACK_FUNCTION_ARB, (GLvoid **)(char *)&data->next_error_callback); 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 */ /* Check for multitexture support */
if (SDL_GL_ExtensionSupported("GL_ARB_multitexture")) { if (SDL_GL_ExtensionSupported("GL_ARB_multitexture")) {
data->glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC) SDL_GL_GetProcAddress("glActiveTextureARB"); *(void **)&data->glActiveTextureARB = SDL_GL_GetProcAddress("glActiveTextureARB");
if (data->glActiveTextureARB) { if (data->glActiveTextureARB) {
data->GL_ARB_multitexture_supported = SDL_TRUE; data->GL_ARB_multitexture_supported = SDL_TRUE;
data->glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &data->num_texture_units); 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")) { if (SDL_GL_ExtensionSupported("GL_EXT_framebuffer_object")) {
data->GL_EXT_framebuffer_object_supported = SDL_TRUE; data->GL_EXT_framebuffer_object_supported = SDL_TRUE;
data->glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC) *(void**)&data->glGenFramebuffersEXT = SDL_GL_GetProcAddress("glGenFramebuffersEXT");
SDL_GL_GetProcAddress("glGenFramebuffersEXT"); *(void**)&data->glDeleteFramebuffersEXT = SDL_GL_GetProcAddress("glDeleteFramebuffersEXT");
data->glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC) *(void**)&data->glFramebufferTexture2DEXT = SDL_GL_GetProcAddress("glFramebufferTexture2DEXT");
SDL_GL_GetProcAddress("glDeleteFramebuffersEXT"); *(void**)&data->glBindFramebufferEXT = SDL_GL_GetProcAddress("glBindFramebufferEXT");
data->glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) *(void**)&data->glCheckFramebufferStatusEXT = SDL_GL_GetProcAddress("glCheckFramebufferStatusEXT");
SDL_GL_GetProcAddress("glFramebufferTexture2DEXT");
data->glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)
SDL_GL_GetProcAddress("glBindFramebufferEXT");
data->glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)
SDL_GL_GetProcAddress("glCheckFramebufferStatusEXT");
renderer->info.flags |= SDL_RENDERER_TARGETTEXTURE; renderer->info.flags |= SDL_RENDERER_TARGETTEXTURE;
} }
data->framebuffers = NULL; data->framebuffers = NULL;
@ -1615,7 +1610,9 @@ GL_DestroyRenderer(SDL_Renderer * renderer)
GL_ClearErrors(renderer); GL_ClearErrors(renderer);
if (data->GL_ARB_debug_output_supported) { 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. */ /* 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 */ /* For now, just always replace the callback with the original one */

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -87,7 +87,7 @@ static const char g_rpi_opt_path[] = "/opt/vc/lib";
_this->egl_data->NAME = (void *)NAME; _this->egl_data->NAME = (void *)NAME;
#else #else
#define LOAD_FUNC(NAME) \ #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) \ if (!_this->egl_data->NAME) \
{ \ { \
return SDL_SetError("Could not retrieve EGL function " #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); _this->egl_data->egl_display = _this->egl_data->eglGetPlatformDisplay(platform, (void *)(size_t)native_display, NULL);
} else { } else {
if (SDL_EGL_HasExtension(_this, SDL_EGL_CLIENT_EXTENSION, "EGL_EXT_platform_base")) { 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) { if (_this->egl_data->eglGetPlatformDisplayEXT) {
_this->egl_data->egl_display = _this->egl_data->eglGetPlatformDisplayEXT(platform, (void *)(size_t)native_display, NULL); _this->egl_data->egl_display = _this->egl_data->eglGetPlatformDisplayEXT(platform, (void *)(size_t)native_display, NULL);
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -139,7 +139,7 @@ SDL_MIR_LoadSymbols(void)
#include "SDL_mirsym.h" #include "SDL_mirsym.h"
#define SDL_MIR_MODULE(modname) thismod = &SDL_MIR_HAVE_##modname; #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); #define SDL_MIR_SYM_CONST(type,name) MIR_##name = *(SDL_DYMMIRCONST_##name*) MIR_GetSym(#name,thismod);
#include "SDL_mirsym.h" #include "SDL_mirsym.h"

View File

@ -27,6 +27,7 @@
#if SDL_VIDEO_DRIVER_MIR #if SDL_VIDEO_DRIVER_MIR
#include "SDL_assert.h"
#include "SDL_log.h" #include "SDL_log.h"
#include "SDL_mirwindow.h" #include "SDL_mirwindow.h"
@ -103,7 +104,7 @@ MIR_Available()
if (SDL_MIR_LoadSymbols()) { if (SDL_MIR_LoadSymbols()) {
/* Lets ensure we can connect to the mir server */ /* 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)) { if (!MIR_mir_connection_is_valid(connection)) {
SDL_LogWarn(SDL_LOG_CATEGORY_VIDEO, "Unable to connect to the mir server %s", 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* 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->current_window = NULL;
mir_data->software = SDL_FALSE; mir_data->software = SDL_FALSE;
mir_data->pixel_format = mir_pixel_format_invalid; mir_data->pixel_format = mir_pixel_format_invalid;

View File

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

View File

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

View File

@ -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"); bytes_written = SDL_SetError("Pipe select error");
} else { } else {
if (length > 0) { 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) { 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) { if (output_buffer == NULL) {
bytes_read = SDL_OutOfMemory(); bytes_read = SDL_OutOfMemory();
} else { } else {
SDL_memcpy(output_buffer + pos, temp, bytes_read); SDL_memcpy((Uint8*)output_buffer + pos, temp, bytes_read);
if (null_terminate == SDL_TRUE) { 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; *buffer = output_buffer;

View File

@ -147,7 +147,7 @@ SDL_WAYLAND_LoadSymbols(void)
#include "SDL_waylandsym.h" #include "SDL_waylandsym.h"
#define SDL_WAYLAND_MODULE(modname) thismod = &SDL_WAYLAND_HAVE_##modname; #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); #define SDL_WAYLAND_INTERFACE(iface) WAYLAND_##iface = (struct wl_interface *) WAYLAND_GetSym(#iface,thismod);
#include "SDL_waylandsym.h" #include "SDL_waylandsym.h"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -63,7 +63,8 @@ WINRT_GLES_LoadLibrary(_THIS, const char *path)
} }
/* Load ANGLE/WinRT-specific functions */ /* 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) { if (CreateWinrtEglWindow) {
/* 'CreateWinrtEglWindow' was found, which means that an an older /* 'CreateWinrtEglWindow' was found, which means that an an older
* version of ANGLE/WinRT is being used. Continue setting up EGL, * version of ANGLE/WinRT is being used. Continue setting up EGL,

View File

@ -172,14 +172,12 @@ SDL_X11_LoadSymbols(void)
#include "SDL_x11sym.h" #include "SDL_x11sym.h"
#define SDL_X11_MODULE(modname) thismod = &SDL_X11_HAVE_##modname; #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" #include "SDL_x11sym.h"
#ifdef X_HAVE_UTF8_STRING #ifdef X_HAVE_UTF8_STRING
X11_XCreateIC = (SDL_DYNX11FN_XCreateIC) *(void**)&X11_XCreateIC = X11_GetSym("XCreateIC", &SDL_X11_HAVE_UTF8);
X11_GetSym("XCreateIC", &SDL_X11_HAVE_UTF8); *(void**)&X11_XGetICValues = X11_GetSym("XGetICValues", &SDL_X11_HAVE_UTF8);
X11_XGetICValues = (SDL_DYNX11FN_XGetICValues)
X11_GetSym("XGetICValues", &SDL_X11_HAVE_UTF8);
#endif #endif
if (SDL_X11_HAVE_BASEXLIB) { if (SDL_X11_HAVE_BASEXLIB) {

View File

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

View File

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

View File

@ -52,7 +52,7 @@
{ \ { \
__m128i red_mask, tmp1, tmp2, tmp3, tmp4; \ __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); \ 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); \ 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); \ 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 \ #define PACK_PIXEL \
__m128i rgb_1, rgb_2, rgb_3, rgb_4, rgb_5, rgb_6, rgb_7, rgb_8; \ __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 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) \ 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 \ #define PACK_PIXEL \
__m128i rgb_1, rgb_2, rgb_3, rgb_4, rgb_5, rgb_6, rgb_7, rgb_8; \ __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 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) \ 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 \ #define PACK_PIXEL \
__m128i rgb_1, rgb_2, rgb_3, rgb_4, rgb_5, rgb_6, rgb_7, rgb_8; \ __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 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) \ 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 \ #define PACK_PIXEL \
__m128i rgb_1, rgb_2, rgb_3, rgb_4, rgb_5, rgb_6, rgb_7, rgb_8; \ __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 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) \ 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) \
\ \