diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-03-18 14:20:24 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-03-18 14:20:24 +0100 |
| commit | f5bfb537da3a1ea8d24c573875602d211fc51cf5 (patch) | |
| tree | 3c1f1a57030c8d1e9ad62dab5ea2a338f22bab2e /src | |
| parent | e7f8ebaf77ad0eec62f14ee783e0a0b329eb1607 (diff) | |
| download | box64-f5bfb537da3a1ea8d24c573875602d211fc51cf5.tar.gz box64-f5bfb537da3a1ea8d24c573875602d211fc51cf5.zip | |
Added 3 more function to libasound
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 2 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedlibasoundtypes.h | 2 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibasound.c | 27 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibasound_private.h | 6 |
4 files changed, 34 insertions, 3 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 213232a0..40255cb6 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -3090,6 +3090,8 @@ wrappedlibasound: - iFp: - snd_dlclose - snd_lib_error_set_handler +- vFpp: + - snd_mixer_elem_set_callback - pFppp: - snd_dlsym - iFpipp: diff --git a/src/wrapped/generated/wrappedlibasoundtypes.h b/src/wrapped/generated/wrappedlibasoundtypes.h index 3d88453f..0852abf9 100644 --- a/src/wrapped/generated/wrappedlibasoundtypes.h +++ b/src/wrapped/generated/wrappedlibasoundtypes.h @@ -12,6 +12,7 @@ #endif typedef int64_t (*iFp_t)(void*); +typedef void (*vFpp_t)(void*, void*); typedef void* (*pFppp_t)(void*, void*, void*); typedef int64_t (*iFpipp_t)(void*, int64_t, void*, void*); typedef int64_t (*iFpppp_t)(void*, void*, void*, void*); @@ -20,6 +21,7 @@ typedef void* (*pFpipL_t)(void*, int64_t, void*, uintptr_t); #define SUPER() ADDED_FUNCTIONS() \ GO(snd_dlclose, iFp_t) \ GO(snd_lib_error_set_handler, iFp_t) \ + GO(snd_mixer_elem_set_callback, vFpp_t) \ GO(snd_dlsym, pFppp_t) \ GO(snd_async_add_handler, iFpipp_t) \ GO(snd_async_add_pcm_handler, iFpppp_t) \ diff --git a/src/wrapped/wrappedlibasound.c b/src/wrapped/wrappedlibasound.c index 11fffc68..b28a36ba 100755 --- a/src/wrapped/wrappedlibasound.c +++ b/src/wrapped/wrappedlibasound.c @@ -67,6 +67,28 @@ static void* findAsyncFct(void* fct) printf_log(LOG_NONE, "Warning, no more slot for Asound Async callback\n"); return NULL; } +// snd_mixer_elem_callback_t +#define GO(A) \ +static uintptr_t my_elem_fct_##A = 0; \ +static int my_elem_##A(void* elem, uint32_t mask) \ +{ \ + return (int)RunFunction(my_context, my_elem_fct_##A, 2, elem, mask);\ +} +SUPER() +#undef GO +static void* findElemFct(void* fct) +{ + if(!fct) return fct; + if(GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); + #define GO(A) if(my_elem_fct_##A == (uintptr_t)fct) return my_elem_##A; + SUPER() + #undef GO + #define GO(A) if(my_elem_fct_##A == 0) {my_elem_fct_##A = (uintptr_t)fct; return my_elem_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for Asound Elem callback\n"); + return NULL; +} EXPORT int my_snd_async_add_handler(x64emu_t *emu, void *handler, int fd, void* callback, void *private_data) @@ -115,6 +137,11 @@ EXPORT int my_snd_lib_error_set_handler(x64emu_t* emu, void* handler) return my->snd_lib_error_set_handler(error_handler); } +EXPORT void my_snd_mixer_elem_set_callback(x64emu_t* emu, void* handler, void* f) +{ + my->snd_mixer_elem_set_callback(handler, findElemFct(f)); +} + void* my_dlopen(x64emu_t* emu, void *filename, int flag); // defined in wrappedlibdl.c char* my_dlerror(x64emu_t* emu); int my_dlclose(x64emu_t* emu, void *handle); diff --git a/src/wrapped/wrappedlibasound_private.h b/src/wrapped/wrappedlibasound_private.h index fdb34b09..293ca326 100755 --- a/src/wrapped/wrappedlibasound_private.h +++ b/src/wrapped/wrappedlibasound_private.h @@ -919,9 +919,9 @@ GO(snd_mixer_get_count, uFp) GO(snd_mixer_class_unregister, iFp) GO(snd_mixer_elem_next, pFp) GO(snd_mixer_elem_prev, pFp) -//GO(snd_mixer_elem_set_callback, vFpP) -//GO(snd_mixer_elem_get_callback_private, pFp) -//GO(snd_mixer_elem_set_callback_private, vFpp) +GOM(snd_mixer_elem_set_callback, vFEpp) +GO(snd_mixer_elem_get_callback_private, pFp) +GO(snd_mixer_elem_set_callback_private, vFpp) GO(snd_mixer_elem_get_type, iFp) //GO(snd_mixer_class_register, iFpp) GO(snd_mixer_add_elem, iFpp) |