diff options
Diffstat (limited to 'src/wrapped/wrappedpulse.c')
| -rw-r--r-- | src/wrapped/wrappedpulse.c | 96 |
1 files changed, 52 insertions, 44 deletions
diff --git a/src/wrapped/wrappedpulse.c b/src/wrapped/wrappedpulse.c index 02233aa0..f5ec5d43 100644 --- a/src/wrapped/wrappedpulse.c +++ b/src/wrapped/wrappedpulse.c @@ -49,7 +49,7 @@ typedef void (*vFipippV_t)(int, void*, int, void*, void*, va_list); #else typedef void (*vFipippV_t)(int, void*, int, void*, void*, void*); #endif - GO(pa_log_level_meta, vFipippV_t) + GO(pa_log_level_meta, vFipippV_t) #endif #define ADDED_FUNCTIONS() \ @@ -91,7 +91,7 @@ GO(15) \ static uintptr_t my_free_fct_##A = 0; \ static void my_free_##A(void* data) \ { \ - RunFunction(my_context, my_free_fct_##A, 1, data);\ + RunFunctionFmt(my_free_fct_##A, "p", data);\ } SUPER() #undef GO @@ -113,7 +113,7 @@ static void* findFreeFct(void* fct) static uintptr_t my_free_api_fct_##A = 0; \ static void my_free_api_##A(my_pa_mainloop_api_t* api, void* p, void* data) \ { \ - RunFunction(my_context, my_free_api_fct_##A, 3, api, p, data);\ + RunFunctionFmt(my_free_api_fct_##A, "ppp", api, p, data);\ } SUPER() #undef GO @@ -136,7 +136,7 @@ static uintptr_t my_io_event_fct_##A = 0; \ static void my_io_event_##A(my_pa_mainloop_api_t* api, void* e, int fd, int events, void* data) \ { \ if(api==my_mainloop_orig) api=my_mainloop_ref; \ - RunFunction(my_context, my_io_event_fct_##A, 5, api, e, fd, events, data); \ + RunFunctionFmt(my_io_event_fct_##A, "ppiip", api, e, fd, events, data); \ } SUPER() #undef GO @@ -159,7 +159,7 @@ static uintptr_t my_time_event_fct_##A = 0; \ static void my_time_event_##A(my_pa_mainloop_api_t* api, void* e, void* tv, void* data) \ { \ if(api==my_mainloop_orig) api=my_mainloop_ref; \ - RunFunction(my_context, my_time_event_fct_##A, 4, api, e, tv, data); \ + RunFunctionFmt(my_time_event_fct_##A, "pppp", api, e, tv, data); \ } SUPER() #undef GO @@ -183,7 +183,7 @@ static uintptr_t my_defer_event_fct_##A = 0; \ static void my_defer_event_##A(my_pa_mainloop_api_t* api, void* e, void* data) \ { \ if(api==my_mainloop_orig) api=my_mainloop_ref; \ - RunFunction(my_context, my_defer_event_fct_##A, 3, api, e, data); \ + RunFunctionFmt(my_defer_event_fct_##A, "ppp", api, e, data); \ } SUPER() #undef GO @@ -206,7 +206,7 @@ static void* findDeferEventFct(void* fct) static uintptr_t my_poll_fct_##A = 0; \ static int my_poll_##A(void* ufds, unsigned long nfds, int timeout, void* data) \ { \ - return (int)RunFunction(my_context, my_poll_fct_##A, 4, ufds, nfds, timeout, data); \ + return (int)RunFunctionFmt(my_poll_fct_##A, "pLip", ufds, nfds, timeout, data); \ } SUPER() #undef GO @@ -229,7 +229,7 @@ static uintptr_t my_signal_fct_##A = 0; \ static void my_signal_##A(my_pa_mainloop_api_t* api, void* e, int sig, void *data) \ { \ if(api==my_mainloop_orig) api=my_mainloop_ref; \ - RunFunction(my_context, my_signal_fct_##A, 4, api, e, sig, data); \ + RunFunctionFmt(my_signal_fct_##A, "ppip", api, e, sig, data); \ } SUPER() #undef GO @@ -252,7 +252,7 @@ static uintptr_t my_signal_destroy_fct_##A = 0; \ static void my_signal_destroy_##A(my_pa_mainloop_api_t* api, void* e, void *data) \ { \ if(api==my_mainloop_orig) api=my_mainloop_ref; \ - RunFunction(my_context, my_signal_destroy_fct_##A, 3, api, e, data); \ + RunFunctionFmt(my_signal_destroy_fct_##A, "ppp", api, e, data); \ } SUPER() #undef GO @@ -275,7 +275,7 @@ static void* find_signal_destroy_Fct(void* fct) static uintptr_t my_prefork_fct_##A = 0; \ static void my_prefork_##A() \ { \ - RunFunction(my_context, my_prefork_fct_##A, 0); \ + RunFunctionFmt(my_prefork_fct_##A, ""); \ } SUPER() #undef GO @@ -297,7 +297,7 @@ static void* find_prefork_Fct(void* fct) static uintptr_t my_postfork_fct_##A = 0; \ static void my_postfork_##A() \ { \ - RunFunction(my_context, my_postfork_fct_##A, 0);\ + RunFunctionFmt(my_postfork_fct_##A, "");\ } SUPER() #undef GO @@ -319,7 +319,7 @@ static void* find_postfork_Fct(void* fct) static uintptr_t my_atfork_fct_##A = 0; \ static void my_atfork_##A() \ { \ - RunFunction(my_context, my_atfork_fct_##A, 0); \ + RunFunctionFmt(my_atfork_fct_##A, ""); \ } SUPER() #undef GO @@ -342,7 +342,7 @@ static void* find_atfork_Fct(void* fct) static uintptr_t my_state_context_fct_##A = 0; \ static void my_state_context_##A(void* context, void* data) \ { \ - RunFunction(my_context, my_state_context_fct_##A, 2, context, data); \ + RunFunctionFmt(my_state_context_fct_##A, "pp", context, data); \ } SUPER() #undef GO @@ -364,7 +364,7 @@ static void* find_state_context_Fct(void* fct) static uintptr_t my_notify_context_fct_##A = 0; \ static void my_notify_context_##A(void* context, void* data) \ { \ - RunFunction(my_context, my_notify_context_fct_##A, 2, context, data); \ + RunFunctionFmt(my_notify_context_fct_##A, "pp", context, data); \ } SUPER() #undef GO @@ -386,7 +386,7 @@ static void* find_notify_context_Fct(void* fct) static uintptr_t my_success_context_fct_##A = 0; \ static void my_success_context_##A(void* context, int success, void* data) \ { \ - RunFunction(my_context, my_success_context_fct_##A, 3, context, success, data); \ + RunFunctionFmt(my_success_context_fct_##A, "pip", context, success, data); \ } SUPER() #undef GO @@ -408,7 +408,7 @@ static void* find_success_context_Fct(void* fct) static uintptr_t my_event_context_fct_##A = 0; \ static void my_event_context_##A(void* context, void* name, void* p, void* data) \ { \ - RunFunction(my_context, my_event_context_fct_##A, 4, context, name, p, data); \ + RunFunctionFmt(my_event_context_fct_##A, "pppp", context, name, p, data); \ } SUPER() #undef GO @@ -430,7 +430,7 @@ static void* find_event_context_Fct(void* fct) static uintptr_t my_module_info_fct_##A = 0; \ static void my_module_info_##A(void* context, void* i, int eol, void* data) \ { \ - RunFunction(my_context, my_module_info_fct_##A, 4, context, i, eol, data); \ + RunFunctionFmt(my_module_info_fct_##A, "ppip", context, i, eol, data); \ } SUPER() #undef GO @@ -452,7 +452,7 @@ static void* find_module_info_Fct(void* fct) static uintptr_t my_server_info_fct_##A = 0; \ static void my_server_info_##A(void* context, void* i, void* data) \ { \ - RunFunction(my_context, my_server_info_fct_##A, 3, context, i, data); \ + RunFunctionFmt(my_server_info_fct_##A, "ppp", context, i, data); \ } SUPER() #undef GO @@ -474,7 +474,7 @@ static void* find_server_info_Fct(void* fct) static uintptr_t my_client_info_fct_##A = 0; \ static void my_client_info_##A(void* context, void* i, int eol, void* data) \ { \ - RunFunction(my_context, my_client_info_fct_##A, 4, context, i, eol, data); \ + RunFunctionFmt(my_client_info_fct_##A, "ppip", context, i, eol, data); \ } SUPER() #undef GO @@ -496,7 +496,7 @@ static void* find_client_info_Fct(void* fct) static uintptr_t my_context_index_fct_##A = 0; \ static void my_context_index_##A(void* context, uint32_t idx, void* data) \ { \ - RunFunction(my_context, my_context_index_fct_##A, 3, context, idx, data); \ + RunFunctionFmt(my_context_index_fct_##A, "pup", context, idx, data); \ } SUPER() #undef GO @@ -518,7 +518,7 @@ static void* find_context_index_Fct(void* fct) static uintptr_t my_subscribe_context_fct_##A = 0; \ static void my_subscribe_context_##A(void* context, int evt, uint32_t idx, void* data) \ { \ - RunFunction(my_context, my_subscribe_context_fct_##A, 4, context, evt, idx, data); \ + RunFunctionFmt(my_subscribe_context_fct_##A, "piup", context, evt, idx, data); \ } SUPER() #undef GO @@ -541,7 +541,7 @@ static void* find_subscribe_context_Fct(void* fct) static uintptr_t my_stream_state_fct_##A = 0; \ static void my_stream_state_##A(void* s, void* data) \ { \ - RunFunction(my_context, my_stream_state_fct_##A, 2, s, data); \ + RunFunctionFmt(my_stream_state_fct_##A, "pp", s, data); \ } SUPER() #undef GO @@ -563,7 +563,7 @@ static void* find_stream_state_Fct(void* fct) static uintptr_t my_stream_success_fct_##A = 0; \ static void my_stream_success_##A(void* s, int success, void* data) \ { \ - RunFunction(my_context, my_stream_success_fct_##A, 3, s, success, data); \ + RunFunctionFmt(my_stream_success_fct_##A, "pip", s, success, data); \ } SUPER() #undef GO @@ -585,7 +585,7 @@ static void* find_stream_success_Fct(void* fct) static uintptr_t my_stream_notify_fct_##A = 0; \ static void my_stream_notify_##A(void* s, void* data) \ { \ - RunFunction(my_context, my_stream_notify_fct_##A, 2, s, data); \ + RunFunctionFmt(my_stream_notify_fct_##A, "pp", s, data); \ } SUPER() #undef GO @@ -607,7 +607,7 @@ static void* find_stream_notify_Fct(void* fct) static uintptr_t my_stream_event_fct_##A = 0; \ static void my_stream_event_##A(void* s, void* name, void* pl, void* data) \ { \ - RunFunction(my_context, my_stream_event_fct_##A, 4, s, name, pl, data); \ + RunFunctionFmt(my_stream_event_fct_##A, "pppp", s, name, pl, data); \ } SUPER() #undef GO @@ -629,7 +629,7 @@ static void* find_stream_event_Fct(void* fct) static uintptr_t my_stream_request_fct_##A = 0; \ static void my_stream_request_##A(void* s, size_t nbytes, void* data) \ { \ - RunFunction(my_context, my_stream_request_fct_##A, 3, s, nbytes, data); \ + RunFunctionFmt(my_stream_request_fct_##A, "pLp", s, nbytes, data); \ } SUPER() #undef GO @@ -651,7 +651,7 @@ static void* find_stream_request_Fct(void* fct) static uintptr_t my_device_restore_read_device_formats_fct_##A = 0; \ static void my_device_restore_read_device_formats_##A(void* a, void* b, int c, void* d) \ { \ - RunFunction(my_context, my_device_restore_read_device_formats_fct_##A, 4, a, b, c, d); \ + RunFunctionFmt(my_device_restore_read_device_formats_fct_##A, "ppip", a, b, c, d); \ } SUPER() #undef GO @@ -673,7 +673,7 @@ static void* find_device_restore_read_device_formats_Fct(void* fct) static uintptr_t my_card_info_fct_##A = 0; \ static void my_card_info_##A(void* a, void* b, int c, void* d) \ { \ - RunFunction(my_context, my_card_info_fct_##A, 4, a, b, c, d); \ + RunFunctionFmt(my_card_info_fct_##A, "ppip", a, b, c, d); \ } SUPER() #undef GO @@ -695,7 +695,7 @@ static void* find_card_info_Fct(void* fct) static uintptr_t my_source_output_info_fct_##A = 0; \ static void my_source_output_info_##A(void* a, void* b, int c, void* d) \ { \ - RunFunction(my_context, my_source_output_info_fct_##A, 4, a, b, c, d); \ + RunFunctionFmt(my_source_output_info_fct_##A, "ppip", a, b, c, d); \ } SUPER() #undef GO @@ -717,7 +717,7 @@ static void* find_source_output_info_Fct(void* fct) static uintptr_t my_device_restore_subscribe_fct_##A = 0; \ static void my_device_restore_subscribe_##A(void* a, int b, uint32_t c, void* d) \ { \ - RunFunction(my_context, my_device_restore_subscribe_fct_##A, 4, a, b, c, d); \ + RunFunctionFmt(my_device_restore_subscribe_fct_##A, "piup", a, b, c, d); \ } SUPER() #undef GO @@ -830,7 +830,7 @@ static void* my_io_new(void* api, int fd, int events, void* cb, void *userdata) if(cb) b = AddCheckBridge(bridge, vFppiip, cb, 0, NULL); if(api==my_mainloop_orig) api=my_mainloop_ref; // need emulated version - return (void*)RunFunction(my_context, (uintptr_t)my_mainloop_ref->io_new, 5, api, fd, events, b, userdata); + return (void*)RunFunctionFmt((uintptr_t)my_mainloop_ref->io_new, "piipp", api, fd, events, b, userdata); } static void my_io_enable(void* e, int events) { @@ -839,7 +839,7 @@ static void my_io_enable(void* e, int events) if(fnc) return ((vFpi_t)fnc)(e, events); - RunFunction(my_context, (uintptr_t)my_mainloop_ref->io_enable, 2, e, events); + RunFunctionFmt((uintptr_t)my_mainloop_ref->io_enable, "pi", e, events); } static void my_io_free(void* e) { @@ -848,7 +848,7 @@ static void my_io_free(void* e) if(fnc) return ((vFp_t)fnc)(e); - RunFunction(my_context, (uintptr_t)my_mainloop_ref->io_free, 1, e); + RunFunctionFmt((uintptr_t)my_mainloop_ref->io_free, "p", e); } static void my_io_set_destroy(void* e, void* cb) { @@ -864,7 +864,7 @@ static void my_io_set_destroy(void* e, void* cb) if(!b) b = AddBridge(bridge, vFppp, cb, 0, NULL); } - RunFunction(my_context, (uintptr_t)my_mainloop_ref->io_set_destroy, 2, e, b); + RunFunctionFmt((uintptr_t)my_mainloop_ref->io_set_destroy, "pp", e, b); } static void* my_time_new(void* api, void* tv, void* cb, void* data) @@ -882,7 +882,7 @@ static void* my_time_new(void* api, void* tv, void* cb, void* data) if(cb) b = AddCheckBridge(bridge, vFpppp, cb, 0, NULL); if(api==my_mainloop_orig) api=my_mainloop_ref; // need emulated version - return (void*)RunFunction(my_context, (uintptr_t)my_mainloop_ref->time_new, 4, api, tv, b, data); + return (void*)RunFunctionFmt((uintptr_t)my_mainloop_ref->time_new, "pppp", api, tv, b, data); } static void my_time_restart(void* e, void* tv) { @@ -891,7 +891,7 @@ static void my_time_restart(void* e, void* tv) if(fnc) return ((vFpp_t)fnc)(e, tv); - RunFunction(my_context, (uintptr_t)my_mainloop_ref->time_restart, 2, e, tv); + RunFunctionFmt((uintptr_t)my_mainloop_ref->time_restart, "pp", e, tv); } static void my_time_free(void* e) { @@ -900,7 +900,7 @@ static void my_time_free(void* e) if(fnc) return ((vFp_t)fnc)(e); - RunFunction(my_context, (uintptr_t)my_mainloop_ref->time_free, 1, e); + RunFunctionFmt((uintptr_t)my_mainloop_ref->time_free, "p", e); } static void my_time_set_destroy(void* e, void* cb) { @@ -913,13 +913,21 @@ static void my_time_set_destroy(void* e, void* cb) uintptr_t b = 0; if(cb) b = AddCheckBridge(bridge, vFppp, cb, 0, NULL); - RunFunction(my_context, (uintptr_t)my_mainloop_ref->time_set_destroy, 2, e, b); + RunFunctionFmt((uintptr_t)my_mainloop_ref->time_set_destroy, "pp", e, b); } static void* my_defer_new(void* api, void* cb, void* data) { uintptr_t b = (uintptr_t)cb; - void* fnc = GetNativeFnc((uintptr_t)my_mainloop_ref->defer_new); + static void* old_defer_new = NULL; + static void* old_fnc = NULL; + void* fnc = NULL; + if(old_defer_new == my_mainloop_ref->defer_new) + fnc = old_fnc; + else { + old_fnc = fnc = GetNativeFnc((uintptr_t)my_mainloop_ref->defer_new); + old_defer_new = my_mainloop_ref->defer_new; + } if(fnc) { if(api==my_mainloop_ref) api=my_mainloop_orig; // need native version if(fnc==native_defer_new) fnc=my_mainloop_native.defer_new; @@ -934,7 +942,7 @@ static void* my_defer_new(void* api, void* cb, void* data) b = AddBridge(bridge, vFppp, cb, 0, NULL); } if(api==my_mainloop_orig) api=my_mainloop_ref; // need emulated version - return (void*)RunFunction(my_context, (uintptr_t)my_mainloop_ref->defer_new, 3, api, b, data); + return (void*)RunFunctionFmt((uintptr_t)my_mainloop_ref->defer_new, "ppp", api, b, data); } static void my_defer_enable(void* e, int b) { @@ -943,7 +951,7 @@ static void my_defer_enable(void* e, int b) if(fnc) return ((vFpi_t)fnc)(e, b); - RunFunction(my_context, (uintptr_t)my_mainloop_ref->defer_enable, 2, e, b); + RunFunctionFmt((uintptr_t)my_mainloop_ref->defer_enable, "pi", e, b); } static void my_defer_free(void* e) { @@ -952,7 +960,7 @@ static void my_defer_free(void* e) if(fnc) return ((vFp_t)fnc)(e); - RunFunction(my_context, (uintptr_t)my_mainloop_ref->defer_free, 1, e); + RunFunctionFmt((uintptr_t)my_mainloop_ref->defer_free, "p", e); } static void my_defer_set_destroy(void* e, void* cb) { @@ -965,7 +973,7 @@ static void my_defer_set_destroy(void* e, void* cb) uintptr_t b = 0; if(cb) b = AddCheckBridge(bridge, vFppp, cb, 0, NULL); - RunFunction(my_context, (uintptr_t)my_mainloop_ref->defer_set_destroy, 2, e, b); + RunFunctionFmt((uintptr_t)my_mainloop_ref->defer_set_destroy, "pp", e, b); } static void my_quit(void* api, int retval) @@ -978,7 +986,7 @@ static void my_quit(void* api, int retval) } if(api==my_mainloop_orig) api=my_mainloop_ref; // need emulated version - RunFunction(my_context, (uintptr_t)my_mainloop_ref->quit, 2, api, retval); + RunFunctionFmt((uintptr_t)my_mainloop_ref->quit, "pi", api, retval); } static void bridgeMainloopAPI(bridge_t* bridge, my_pa_mainloop_api_t* api) |