about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-12-07 22:39:46 +0100
committerptitSeb <sebastien.chev@gmail.com>2023-12-07 22:39:46 +0100
commitdf2ad6b1ca761805efaaeef4ef1a658c4a827747 (patch)
tree6453cb65f11d27a08df92249453677d1ffe9feef /src
parent1d462b75582b8df716631feae9136af07aca8d6c (diff)
downloadbox64-df2ad6b1ca761805efaaeef4ef1a658c4a827747.tar.gz
box64-df2ad6b1ca761805efaaeef4ef1a658c4a827747.zip
Added some new wrapped function to pulseaudio
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt4
-rw-r--r--src/wrapped/generated/wrappedpulsetypes.h3
-rw-r--r--src/wrapped/generated/wrapper.c2
-rw-r--r--src/wrapped/generated/wrapper.h1
-rw-r--r--src/wrapped/wrappedpulse.c34
-rw-r--r--src/wrapped/wrappedpulse_private.h4
6 files changed, 47 insertions, 1 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 2ef24f1b..62ab6255 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -1637,6 +1637,7 @@
 #() pFEpipV
 #() pFEpipA
 #() pFEpupp
+#() pFEpUpp
 #() pFEppii
 #() pFEppip
 #() pFEppLp
@@ -4918,6 +4919,7 @@ wrappedpulse:
   - pa_context_set_event_callback
   - pa_context_set_state_callback
   - pa_context_set_subscribe_callback
+  - pa_mainloop_api_once
   - pa_mainloop_set_poll_func
   - pa_stream_set_buffer_attr_callback
   - pa_stream_set_event_callback
@@ -4968,6 +4970,8 @@ wrappedpulse:
   - pa_context_subscribe
   - pa_context_unload_module
   - pa_stream_update_sample_rate
+- pFpUpp:
+  - pa_context_rttime_new
 - pFpppp:
   - pa_context_get_sink_info_by_name
   - pa_context_get_source_info_by_name
diff --git a/src/wrapped/generated/wrappedpulsetypes.h b/src/wrapped/generated/wrappedpulsetypes.h
index a24120dc..2a3a4a94 100644
--- a/src/wrapped/generated/wrappedpulsetypes.h
+++ b/src/wrapped/generated/wrappedpulsetypes.h
@@ -23,6 +23,7 @@ typedef int32_t (*iFppip_t)(void*, void*, int32_t, void*);
 typedef int32_t (*iFpppV_t)(void*, void*, void*, ...);
 typedef void* (*pFpipp_t)(void*, int32_t, void*, void*);
 typedef void* (*pFpupp_t)(void*, uint32_t, void*, void*);
+typedef void* (*pFpUpp_t)(void*, uint64_t, void*, void*);
 typedef void* (*pFpppp_t)(void*, void*, void*, void*);
 typedef void* (*pFpiupp_t)(void*, int32_t, uint32_t, void*, void*);
 typedef void* (*pFpippp_t)(void*, int32_t, void*, void*, void*);
@@ -44,6 +45,7 @@ typedef void* (*pFpiuCppp_t)(void*, int32_t, uint32_t, uint8_t, void*, void*, vo
 	GO(pa_context_set_event_callback, vFppp_t) \
 	GO(pa_context_set_state_callback, vFppp_t) \
 	GO(pa_context_set_subscribe_callback, vFppp_t) \
+	GO(pa_mainloop_api_once, vFppp_t) \
 	GO(pa_mainloop_set_poll_func, vFppp_t) \
 	GO(pa_stream_set_buffer_attr_callback, vFppp_t) \
 	GO(pa_stream_set_event_callback, vFppp_t) \
@@ -88,6 +90,7 @@ typedef void* (*pFpiuCppp_t)(void*, int32_t, uint32_t, uint8_t, void*, void*, vo
 	GO(pa_context_subscribe, pFpupp_t) \
 	GO(pa_context_unload_module, pFpupp_t) \
 	GO(pa_stream_update_sample_rate, pFpupp_t) \
+	GO(pa_context_rttime_new, pFpUpp_t) \
 	GO(pa_context_get_sink_info_by_name, pFpppp_t) \
 	GO(pa_context_get_source_info_by_name, pFpppp_t) \
 	GO(pa_context_proplist_remove, pFpppp_t) \
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 25aba59b..141774db 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -1673,6 +1673,7 @@ typedef void* (*pFEpipp_t)(x64emu_t*, void*, int32_t, void*, void*);
 typedef void* (*pFEpipV_t)(x64emu_t*, void*, int32_t, void*, void*);
 typedef void* (*pFEpipA_t)(x64emu_t*, void*, int32_t, void*, void*);
 typedef void* (*pFEpupp_t)(x64emu_t*, void*, uint32_t, void*, void*);
+typedef void* (*pFEpUpp_t)(x64emu_t*, void*, uint64_t, void*, void*);
 typedef void* (*pFEppii_t)(x64emu_t*, void*, void*, int32_t, int32_t);
 typedef void* (*pFEppip_t)(x64emu_t*, void*, void*, int32_t, void*);
 typedef void* (*pFEppLp_t)(x64emu_t*, void*, void*, uintptr_t, void*);
@@ -4659,6 +4660,7 @@ void pFEpipp(x64emu_t *emu, uintptr_t fcn) { pFEpipp_t fn = (pFEpipp_t)fcn; R_RA
 void pFEpipV(x64emu_t *emu, uintptr_t fcn) { pFEpipV_t fn = (pFEpipV_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)(R_RSP + 8)); }
 void pFEpipA(x64emu_t *emu, uintptr_t fcn) { pFEpipA_t fn = (pFEpipA_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void pFEpupp(x64emu_t *emu, uintptr_t fcn) { pFEpupp_t fn = (pFEpupp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
+void pFEpUpp(x64emu_t *emu, uintptr_t fcn) { pFEpUpp_t fn = (pFEpUpp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (uint64_t)R_RSI, (void*)R_RDX, (void*)R_RCX); }
 void pFEppii(x64emu_t *emu, uintptr_t fcn) { pFEppii_t fn = (pFEppii_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (int32_t)R_RCX); }
 void pFEppip(x64emu_t *emu, uintptr_t fcn) { pFEppip_t fn = (pFEppip_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (void*)R_RCX); }
 void pFEppLp(x64emu_t *emu, uintptr_t fcn) { pFEppLp_t fn = (pFEppLp_t)fcn; R_RAX=(uintptr_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (uintptr_t)R_RDX, (void*)R_RCX); }
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index 2634394d..1aebf62c 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -1674,6 +1674,7 @@ void pFEpipp(x64emu_t *emu, uintptr_t fnc);
 void pFEpipV(x64emu_t *emu, uintptr_t fnc);
 void pFEpipA(x64emu_t *emu, uintptr_t fnc);
 void pFEpupp(x64emu_t *emu, uintptr_t fnc);
+void pFEpUpp(x64emu_t *emu, uintptr_t fnc);
 void pFEppii(x64emu_t *emu, uintptr_t fnc);
 void pFEppip(x64emu_t *emu, uintptr_t fnc);
 void pFEppLp(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedpulse.c b/src/wrapped/wrappedpulse.c
index cfeebecb..7cf0012a 100644
--- a/src/wrapped/wrappedpulse.c
+++ b/src/wrapped/wrappedpulse.c
@@ -739,6 +739,28 @@ static void* find_device_restore_subscribe_Fct(void* fct)
     printf_log(LOG_NONE, "Warning, no more slot for pulse audio device_restore_subscribe callback\n");
     return NULL;
 }
+// mainloop_once
+#define GO(A)                                               \
+static uintptr_t my_mainloop_once_fct_##A = 0;              \
+static void my_mainloop_once_##A(void* api, void* b)        \
+{                                                           \
+    RunFunctionFmt(my_mainloop_once_fct_##A, "pp", api, b); \
+}
+SUPER()
+#undef GO
+static void* find_mainloop_once_Fct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_mainloop_once_fct_##A == (uintptr_t)fct) return my_mainloop_once_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_mainloop_once_fct_##A == 0) {my_mainloop_once_fct_##A = (uintptr_t)fct; return my_mainloop_once_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for pulse audio mainloop_once callback\n");
+    return NULL;
+}
 
 #undef SUPER
 
@@ -1492,6 +1514,18 @@ EXPORT void* my_pa_context_get_source_output_info(x64emu_t* emu, void* c, uint32
 {
     return my->pa_context_get_source_output_info(c, idx, find_source_output_info_Fct(cb), data);
 }
+
+EXPORT void* my_pa_context_rttime_new(x64emu_t* emu, void* c, uint64_t usec, void* cb, void* data)
+{
+    return my->pa_context_rttime_new(c, usec, findTimeEventFct(cb) ,data);
+}
+
+EXPORT void my_pa_mainloop_api_once(void* mainloop, void* cb, void* data)
+{
+    if(mainloop==my_mainloop_ref) mainloop=my_mainloop_orig;    // need native version
+    my->pa_mainloop_api_once(mainloop, find_mainloop_once_Fct(cb), data);
+}
+
 #define PRE_INIT        \
     if(box64_nopulse)   \
         return -1;
diff --git a/src/wrapped/wrappedpulse_private.h b/src/wrapped/wrappedpulse_private.h
index bceeaacf..f0644d67 100644
--- a/src/wrapped/wrappedpulse_private.h
+++ b/src/wrapped/wrappedpulse_private.h
@@ -79,6 +79,7 @@ GO(pa_context_ref, pFp)
 //GO(pa_context_remove_autoload_by_index, 
 //GO(pa_context_remove_autoload_by_name, 
 //GO(pa_context_remove_sample, 
+GOM(pa_context_rttime_new, pFEpUpp)
 GOM(pa_context_set_card_profile_by_index, pFEpuppp)
 //GO(pa_context_set_card_profile_by_name, 
 GOM(pa_context_set_default_sink, pFEpppp)
@@ -145,7 +146,7 @@ GO(pa_get_library_version, pFv)
 GO(pa_gettimeofday, pFp)
 GO(pa_get_user_name, pFpL)
 //GO(pa_locale_to_utf8, 
-//GO(pa_mainloop_api_once, 
+GOM(pa_mainloop_api_once, vFEppp)
 GO(pa_mainloop_dispatch, iFp)
 GOM(pa_mainloop_free, vFEp)
 GOM(pa_mainloop_get_api, pFEp)
@@ -184,6 +185,7 @@ GO(pa_proplist_to_string_sep, pFpp)
 GO(pa_proplist_unset, iFpp)
 GO(pa_proplist_unset_many, iFpp)
 GO(pa_proplist_update, vFpup)
+GO(pa_rtclock_now, UFv)
 GO(pa_sample_format_to_string, pFi)
 GO(pa_sample_size, LFp)
 GO(pa_sample_size_of_format, LFi)