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/wrapped/wrappedlibasound.c | |
| parent | e7f8ebaf77ad0eec62f14ee783e0a0b329eb1607 (diff) | |
| download | box64-f5bfb537da3a1ea8d24c573875602d211fc51cf5.tar.gz box64-f5bfb537da3a1ea8d24c573875602d211fc51cf5.zip | |
Added 3 more function to libasound
Diffstat (limited to 'src/wrapped/wrappedlibasound.c')
| -rwxr-xr-x | src/wrapped/wrappedlibasound.c | 27 |
1 files changed, 27 insertions, 0 deletions
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); |