diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-07-05 08:43:09 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-07-05 08:43:09 +0200 |
| commit | 383454610014a1c7b8b1af27a623694ee9b2f20f (patch) | |
| tree | 4b3174fd16005ef2a0a1301416e6427a1f9c8084 /src | |
| parent | a3d7f9cd85b105db53f7742a46b43bd8b2dc8662 (diff) | |
| download | box64-383454610014a1c7b8b1af27a623694ee9b2f20f.tar.gz box64-383454610014a1c7b8b1af27a623694ee9b2f20f.zip | |
Added fallback for SDL_GetJoystickGUIDInfo wrapped function if not in native lib (for #18)
Diffstat (limited to 'src')
| -rwxr-xr-x | src/wrapped/wrappedsdl2.c | 26 | ||||
| -rwxr-xr-x | src/wrapped/wrappedsdl2_private.h | 2 |
2 files changed, 26 insertions, 2 deletions
diff --git a/src/wrapped/wrappedsdl2.c b/src/wrapped/wrappedsdl2.c index 2c4c544d..0de950a4 100755 --- a/src/wrapped/wrappedsdl2.c +++ b/src/wrapped/wrappedsdl2.c @@ -80,11 +80,13 @@ typedef struct typedef void (*vFv_t)(); typedef void (*vFiupV_t)(int64_t, uint64_t, void*, va_list); +typedef void (*vFGppp_t)(SDL_JoystickGUID, void*, void*, void*); #define ADDED_FUNCTIONS() \ GO(SDL_Quit, vFv_t) \ GO(SDL_AllocRW, sdl2_allocrw) \ GO(SDL_FreeRW, sdl2_freerw) \ - GO(SDL_LogMessageV, vFiupV_t) + GO(SDL_LogMessageV, vFiupV_t) \ + GO(SDL_GetJoystickGUIDInfo, vFGppp_t) #include "generated/wrappedsdl2types.h" typedef struct sdl2_my_s { @@ -870,6 +872,28 @@ EXPORT void* my2_SDL_Vulkan_GetVkGetInstanceProcAddr(x64emu_t* emu) return NULL; } +EXPORT void my2_SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, uint16_t *vend, uint16_t *prod, uint16_t *ver) +{ + sdl2_my_t *my = (sdl2_my_t *)my_context->sdl2lib->priv.w.p2; + + if(my->SDL_GetJoystickGUIDInfo) + my->SDL_GetJoystickGUIDInfo(guid, vend, prod, ver); + // fallback + else { + uint16_t *guid16 = (uint16_t *)guid.data; + if (guid16[1]==0x0000 && guid16[3]==0x0000 && guid16[5]==0x0000) + { + if(vend) *vend = guid16[2]; + if(prod) *prod = guid16[4]; + if(ver) *ver = guid16[6]; + } else { + if(vend) *vend = 0; + if(prod) *prod = 0; + if(ver) *ver = 0; + } + } +} + #define CUSTOM_INIT \ box64->sdl2lib = lib; \ lib->priv.w.p2 = getSDL2My(lib); \ diff --git a/src/wrapped/wrappedsdl2_private.h b/src/wrapped/wrappedsdl2_private.h index 504ceec9..299119ec 100755 --- a/src/wrapped/wrappedsdl2_private.h +++ b/src/wrapped/wrappedsdl2_private.h @@ -198,7 +198,7 @@ GO(SDL_GetGlobalMouseState, uFpp) GO(SDL_GetGrabbedWindow, pFv) GO(SDL_GetHint, pFp) GO(SDL_GetHintBoolean, iFpi) -GO(SDL_GetJoystickGUIDInfo, vFppppp) // the flat SDL_JoystickGUID stuct in 1st argument is same as 2 uint64 +GOM(SDL_GetJoystickGUIDInfo, vFppppp) //%% the flat SDL_JoystickGUID stuct in 1st argument is same as 2 uint64 GO(SDL_GetKeyboardFocus, pFv) GO(SDL_GetKeyboardState, pFp) GO(SDL_GetKeyFromName, pFp) |