diff options
| author | ptitSeb <seebastien.chev@gmail.com> | 2023-09-09 17:38:01 +0200 |
|---|---|---|
| committer | ptitSeb <seebastien.chev@gmail.com> | 2023-09-09 17:38:01 +0200 |
| commit | eca872c04d167c8c89537236e0d5f396622e0545 (patch) | |
| tree | ca29c1daf527f4d8c126c82520c0fe9ee7a89038 /src | |
| parent | 8947b735f9f6d1906365954784236f562f9d6f8d (diff) | |
| download | box64-eca872c04d167c8c89537236e0d5f396622e0545.tar.gz box64-eca872c04d167c8c89537236e0d5f396622e0545.zip | |
Added some more wrapped functions
Diffstat (limited to 'src')
| -rw-r--r-- | src/wrapped/generated/functions_list.txt | 10 | ||||
| -rw-r--r-- | src/wrapped/generated/wrappedgstreamertypes.h | 9 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.c | 2 | ||||
| -rw-r--r-- | src/wrapped/generated/wrapper.h | 1 | ||||
| -rw-r--r-- | src/wrapped/wrappedfreetype_private.h | 2 | ||||
| -rw-r--r-- | src/wrapped/wrappedgstreamer.c | 79 | ||||
| -rw-r--r-- | src/wrapped/wrappedgstreamer_private.h | 18 | ||||
| -rw-r--r-- | src/wrapped/wrappedlibc.c | 3 | ||||
| -rw-r--r-- | src/wrapped/wrappedxkbcommon_private.h | 2 |
9 files changed, 115 insertions, 11 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 85603c2f..bded7a5c 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -1975,6 +1975,7 @@ #() iFpppppp #() uFEiippp #() uFEiuppp +#() uFEpippp #() uFEpCppp #() uFEpuppp #() uFuuuuuu @@ -3495,7 +3496,10 @@ wrappedgstaudio: wrappedgstbase: wrappedgstgl: wrappedgstreamer: +- pFpp: + - gst_plugin_load_file - vFppV: + - gst_bin_add_many - gst_caps_set_simple - gst_structure_remove_fields - vFppA: @@ -3503,10 +3507,14 @@ wrappedgstreamer: - gst_structure_remove_fields_valist - iFppp: - gst_caps_foreach + - gst_init_check - iFppV: + - gst_element_link_many - gst_structure_get - iFppA: - gst_structure_get_valist +- uFppp: + - gst_bus_add_watch - pFppV: - gst_caps_new_simple - gst_structure_new @@ -3520,6 +3528,8 @@ wrappedgstreamer: - gst_pad_set_query_function_full - pFppip: - gst_registry_feature_filter +- uFpippp: + - gst_bus_add_watch_full - pFiplllpp: - gst_buffer_new_wrapped_full - vFpippippV: diff --git a/src/wrapped/generated/wrappedgstreamertypes.h b/src/wrapped/generated/wrappedgstreamertypes.h index bdaf1886..d7ec3093 100644 --- a/src/wrapped/generated/wrappedgstreamertypes.h +++ b/src/wrapped/generated/wrappedgstreamertypes.h @@ -11,26 +11,34 @@ #define ADDED_FUNCTIONS() #endif +typedef void* (*pFpp_t)(void*, void*); typedef void (*vFppV_t)(void*, void*, ...); typedef void (*vFppA_t)(void*, void*, va_list); typedef int32_t (*iFppp_t)(void*, void*, void*); typedef int32_t (*iFppV_t)(void*, void*, ...); typedef int32_t (*iFppA_t)(void*, void*, va_list); +typedef uint32_t (*uFppp_t)(void*, void*, void*); typedef void* (*pFppV_t)(void*, void*, ...); typedef void (*vFpppp_t)(void*, void*, void*, void*); typedef void* (*pFppip_t)(void*, void*, int32_t, void*); +typedef uint32_t (*uFpippp_t)(void*, int32_t, void*, void*, void*); typedef void* (*pFiplllpp_t)(int32_t, void*, intptr_t, intptr_t, intptr_t, void*, void*); typedef void (*vFpippippV_t)(void*, int32_t, void*, void*, int32_t, void*, void*, ...); typedef void (*vFpippippA_t)(void*, int32_t, void*, void*, int32_t, void*, void*, va_list); #define SUPER() ADDED_FUNCTIONS() \ + GO(gst_plugin_load_file, pFpp_t) \ + GO(gst_bin_add_many, vFppV_t) \ GO(gst_caps_set_simple, vFppV_t) \ GO(gst_structure_remove_fields, vFppV_t) \ GO(gst_caps_set_simple_valist, vFppA_t) \ GO(gst_structure_remove_fields_valist, vFppA_t) \ GO(gst_caps_foreach, iFppp_t) \ + GO(gst_init_check, iFppp_t) \ + GO(gst_element_link_many, iFppV_t) \ GO(gst_structure_get, iFppV_t) \ GO(gst_structure_get_valist, iFppA_t) \ + GO(gst_bus_add_watch, uFppp_t) \ GO(gst_caps_new_simple, pFppV_t) \ GO(gst_structure_new, pFppV_t) \ GO(gst_bus_set_sync_handler, vFpppp_t) \ @@ -41,6 +49,7 @@ typedef void (*vFpippippA_t)(void*, int32_t, void*, void*, int32_t, void*, void* GO(gst_pad_set_getrange_function_full, vFpppp_t) \ GO(gst_pad_set_query_function_full, vFpppp_t) \ GO(gst_registry_feature_filter, pFppip_t) \ + GO(gst_bus_add_watch_full, uFpippp_t) \ GO(gst_buffer_new_wrapped_full, pFiplllpp_t) \ GO(gst_debug_log, vFpippippV_t) \ GO(gst_debug_log_valist, vFpippippA_t) diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c index 32747b3f..4f866a8a 100644 --- a/src/wrapped/generated/wrapper.c +++ b/src/wrapped/generated/wrapper.c @@ -2011,6 +2011,7 @@ typedef int32_t (*iFpppppL_t)(void*, void*, void*, void*, void*, uintptr_t); typedef int32_t (*iFpppppp_t)(void*, void*, void*, void*, void*, void*); typedef uint32_t (*uFEiippp_t)(x64emu_t*, int32_t, int32_t, void*, void*, void*); typedef uint32_t (*uFEiuppp_t)(x64emu_t*, int32_t, uint32_t, void*, void*, void*); +typedef uint32_t (*uFEpippp_t)(x64emu_t*, void*, int32_t, void*, void*, void*); typedef uint32_t (*uFEpCppp_t)(x64emu_t*, void*, uint8_t, void*, void*, void*); typedef uint32_t (*uFEpuppp_t)(x64emu_t*, void*, uint32_t, void*, void*, void*); typedef uint32_t (*uFuuuuuu_t)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t); @@ -4914,6 +4915,7 @@ void iFpppppL(x64emu_t *emu, uintptr_t fcn) { iFpppppL_t fn = (iFpppppL_t)fcn; R void iFpppppp(x64emu_t *emu, uintptr_t fcn) { iFpppppp_t fn = (iFpppppp_t)fcn; R_RAX=(int32_t)fn((void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); } void uFEiippp(x64emu_t *emu, uintptr_t fcn) { uFEiippp_t fn = (uFEiippp_t)fcn; R_RAX=(uint32_t)fn(emu, (int32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); } void uFEiuppp(x64emu_t *emu, uintptr_t fcn) { uFEiuppp_t fn = (uFEiuppp_t)fcn; R_RAX=(uint32_t)fn(emu, (int32_t)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); } +void uFEpippp(x64emu_t *emu, uintptr_t fcn) { uFEpippp_t fn = (uFEpippp_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); } void uFEpCppp(x64emu_t *emu, uintptr_t fcn) { uFEpCppp_t fn = (uFEpCppp_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (uint8_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); } void uFEpuppp(x64emu_t *emu, uintptr_t fcn) { uFEpuppp_t fn = (uFEpuppp_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8); } void uFuuuuuu(x64emu_t *emu, uintptr_t fcn) { uFuuuuuu_t fn = (uFuuuuuu_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9); } diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h index 57f7aae1..9983dc46 100644 --- a/src/wrapped/generated/wrapper.h +++ b/src/wrapped/generated/wrapper.h @@ -2012,6 +2012,7 @@ void iFpppppL(x64emu_t *emu, uintptr_t fnc); void iFpppppp(x64emu_t *emu, uintptr_t fnc); void uFEiippp(x64emu_t *emu, uintptr_t fnc); void uFEiuppp(x64emu_t *emu, uintptr_t fnc); +void uFEpippp(x64emu_t *emu, uintptr_t fnc); void uFEpCppp(x64emu_t *emu, uintptr_t fnc); void uFEpuppp(x64emu_t *emu, uintptr_t fnc); void uFuuuuuu(x64emu_t *emu, uintptr_t fnc); diff --git a/src/wrapped/wrappedfreetype_private.h b/src/wrapped/wrappedfreetype_private.h index 40956930..7ec258db 100644 --- a/src/wrapped/wrappedfreetype_private.h +++ b/src/wrapped/wrappedfreetype_private.h @@ -154,7 +154,7 @@ GO(FT_Select_Size, iFpi) GO(FT_Set_Charmap, iFpp) GO(FT_Set_Char_Size, iFplluu) //GO(FT_Set_Debug_Hook, -//GO(FT_Set_Default_Properties, +GO(FT_Set_Default_Properties, vFp) //GO(FT_Set_MM_Blend_Coordinates, GO(FT_Set_MM_Design_Coordinates, iFpup) GO(FT_Set_Pixel_Sizes, iFpuu) diff --git a/src/wrapped/wrappedgstreamer.c b/src/wrapped/wrappedgstreamer.c index 8a279866..b9c5dfd7 100644 --- a/src/wrapped/wrappedgstreamer.c +++ b/src/wrapped/wrappedgstreamer.c @@ -18,6 +18,7 @@ #include "emu/x64emu_private.h" #include "myalign.h" #include "gtkclass.h" +#include "fileutils.h" const char* gstreamerName = "libgstreamer-1.0.so.0"; #define LIBNAME gstreamer @@ -38,6 +39,8 @@ typedef int (*iFpp_t)(void*, void*); GO(gst_caps_new_empty, pFv_t) \ GO(gst_caps_replace, iFpp_t) \ GO(gst_caps_append_structure, vFpp_t) \ + GO(gst_bin_add, iFpp_t) \ + GO(gst_element_link, iFpp_t) \ #include "generated/wrappedgstreamertypes.h" @@ -207,6 +210,27 @@ static void* findGstBusSyncHandlerFct(void* fct) printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstBusSyncHandler callback\n"); return NULL; } +//GstBusFunc +#define GO(A) \ +static uintptr_t my_GstBusFunc_fct_##A = 0; \ +static int my_GstBusFunc_##A(void* a, void* b, void* c) \ +{ \ + return (int)RunFunctionFmt(my_GstBusFunc_fct_##A, "ppp", a, b, c); \ +} +SUPER() +#undef GO +static void* findGstBusFuncFct(void* fct) +{ + if(!fct) return fct; + #define GO(A) if(my_GstBusFunc_fct_##A == (uintptr_t)fct) return my_GstBusFunc_##A; + SUPER() + #undef GO + #define GO(A) if(my_GstBusFunc_fct_##A == 0) {my_GstBusFunc_fct_##A = (uintptr_t)fct; return my_GstBusFunc_##A; } + SUPER() + #undef GO + printf_log(LOG_NONE, "Warning, no more slot for gstreamer GstBusFunc callback\n"); + return NULL; +} //GstPluginFeatureFilter #define GO(A) \ @@ -390,6 +414,61 @@ EXPORT int my_gst_caps_foreach(x64emu_t* emu, void* caps, void* f, void* data) return my->gst_caps_foreach(caps, findGstCapsFilterMapFuncFct(f), data); } +EXPORT uint32_t my_gst_bus_add_watch(x64emu_t* emu, void* bus, void* f, void* data) +{ + return my->gst_bus_add_watch(bus, findGstBusFuncFct(f), data); +} + +EXPORT uint32_t my_gst_bus_add_watch_full(x64emu_t* emu, void* bus, int priority, void* f, void* data, void* d) +{ + return my->gst_bus_add_watch_full(bus, priority, findGstBusFuncFct(f), data, findDestroyFct(d)); +} + +EXPORT int my_gst_bin_add_many(x64emu_t* emu, void* bin, void* first, void** b) +{ + int ret = my->gst_bin_add(bin, first); + while(ret && *b) { + ret = my->gst_bin_add(bin, *b); + ++b; + } + return ret; +} + +EXPORT int my_gst_element_link_many(x64emu_t* emu, void* e1, void* e2, void** b) +{ + int ret = my->gst_element_link(e1, e2); + void* a = e2; + while(ret && *b) { + ret = my->gst_element_link(a, *b); + a = *b; + ++b; + } + return ret; +} + +EXPORT void* my_gst_plugin_load_file(x64emu_t* emu, const char* filename, void** error) +{ +printf_log(LOG_INFO, "using gst_plugin_load_file, file %s (is x86_64=%d)\n", filename, FileIsX64ELF(filename)); + return my->gst_plugin_load_file((void*)filename, error); +} + +EXPORT int my_gst_init_check(x64emu_t* emu, int* argc, char*** argv, void** error) +{ +printf_log(LOG_INFO, "will call gst_init_check(%o, %p, %p)\n", argc, argv, error); +if(argc && argv) { + printf_log(LOG_INFO, " argc=%d, argv=[", *argc); + for(int i=0; i<*argc; ++i) + printf_log(LOG_INFO, "%s\"%s\"", i?", ":"", (*argv)[i]); + printf_log(LOG_INFO, "]"); +} +if(getenv("GST_PLUGIN_LOADING_WHITELIST")) + printf_log(LOG_INFO, "\nGST_PLUGIN_LOADING_WHITELIST=%s", getenv("GST_PLUGIN_LOADING_WHITELIST")); +printf_log(LOG_INFO, "\n"); + int ret = my->gst_init_check(argc, argv, error); +printf_log(LOG_INFO, "gst_init_check(...) return = %d\n", ret); + return ret; +} + #define PRE_INIT \ if(box64_nogtk) \ return -1; diff --git a/src/wrapped/wrappedgstreamer_private.h b/src/wrapped/wrappedgstreamer_private.h index 696de897..573683c2 100644 --- a/src/wrapped/wrappedgstreamer_private.h +++ b/src/wrapped/wrappedgstreamer_private.h @@ -22,7 +22,7 @@ GO(gst_atomic_queue_push, vFpp) GO(gst_atomic_queue_ref, vFp) GO(gst_atomic_queue_unref, vFp) GO(gst_bin_add, iFpp) -//GOM(gst_bin_add_many, vFppV) +GOM(gst_bin_add_many, vFEppV) GO(gst_bin_find_unlinked_pad, pFpi) GO(gst_bin_flags_get_type, pFv) GO(gst_bin_get_by_interface, pFpL) @@ -151,8 +151,8 @@ GO(gst_buffer_unref, vFp) GO(gst_buffer_unset_flags, iFpi) GO(gst_bus_add_signal_watch, vFp) GO(gst_bus_add_signal_watch_full, vFpi) -//GOM(gst_bus_add_watch, uFEpBp) -//GOM(gst_bus_add_watch_full, iFEpiBpB) +GOM(gst_bus_add_watch, uFEppp) +GOM(gst_bus_add_watch_full, uFEpippp) GO(gst_bus_async_signal_func, iFppp) GO(gst_bus_create_watch, pFp) GO(gst_bus_disable_sync_message_emission, vFp) @@ -467,7 +467,7 @@ GO(gst_device_get_properties, pFp) //GO(gst_device_get_type, GO(gst_device_has_classes, iFpp) GO(gst_device_has_classesv, iFpp) -//GO(gst_device_monitor_add_filter, +GO(gst_device_monitor_add_filter, uFppp) GO(gst_device_monitor_get_bus, pFp) GO(gst_device_monitor_get_devices, pFp) GO(gst_device_monitor_get_providers, pFp) @@ -476,7 +476,7 @@ GO(gst_device_monitor_get_show_all_devices, iFp) GO(gst_device_monitor_new, pFv) GO(gst_device_monitor_remove_filter, iFpu) GO(gst_device_monitor_set_show_all_devices, vFpi) -//GO(gst_device_monitor_start, +GO(gst_device_monitor_start, iFp) //GO(gst_device_monitor_stop, //GO(gst_device_provider_can_monitor, //GO(gst_device_provider_class_add_metadata, @@ -582,7 +582,7 @@ GO(gst_element_iterate_sink_pads, pFp) GO(gst_element_iterate_src_pads, pFp) GO(gst_element_link, iFpp) GO(gst_element_link_filtered, iFppp) -//GOM(gst_element_link_many, iFEppV) +GOM(gst_element_link_many, iFEppV) GO(gst_element_link_pads, iFpppp) GO(gst_element_link_pads_filtered, iFppppp) GO(gst_element_link_pads_full, iFppppu) @@ -722,7 +722,7 @@ GO(gst_get_main_executable_path, pFv) //GO(gst_ghost_pad_get_target, //GO(gst_ghost_pad_get_type, //GO(gst_ghost_pad_internal_activate_mode_default, -//GO(gst_ghost_pad_new, +GO(gst_ghost_pad_new, pFpp) //GO(gst_ghost_pad_new_from_template, //GO(gst_ghost_pad_new_no_target, //GO(gst_ghost_pad_new_no_target_from_template, @@ -732,7 +732,7 @@ GO(gst_get_main_executable_path, pFv) //GO(gst_info_strdup_vprintf, //GO(gst_info_vasprintf, GO(gst_init, vFpp) -GO(gst_init_check, iFppp) +GOM(gst_init_check, iFEppp) GO(gst_init_get_option_group, pFv) //GO(gst_int64_range_get_type, //DATAB(_gst_int64_range_type, @@ -1122,7 +1122,7 @@ GO(gst_plugin_is_loaded, iFp) GO(gst_plugin_load, pFp) GO(gst_plugin_load_by_name, pFp) //GO(_gst_plugin_loader_client_run, -GO(gst_plugin_load_file, pFpp) +GOM(gst_plugin_load_file, pFEpp) //GO(gst_plugin_register_static, //GO(gst_plugin_register_static_full, GO(gst_plugin_set_cache_data, vFpp) diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index acfc2618..b1010939 100644 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -2082,6 +2082,9 @@ EXPORT int32_t my_execve(x64emu_t* emu, const char* path, char* const argv[], ch int ret = execve(path, (char* const*)newargv, envp); return ret; } + /*if(!strcmp(path + strlen(path) - strlen("/bwrap"), "/bwrap")) { + printf_log(LOG_NONE, "\n\n*********\n\nCalling bwrap!\n\n**********\n\n"); + }*/ #endif return execve(path, argv, envp); diff --git a/src/wrapped/wrappedxkbcommon_private.h b/src/wrapped/wrappedxkbcommon_private.h index 6d4a3dc5..ccbc71ed 100644 --- a/src/wrapped/wrappedxkbcommon_private.h +++ b/src/wrapped/wrappedxkbcommon_private.h @@ -33,7 +33,7 @@ GO(xkb_context_set_log_level, vFpi) GO(xkb_context_set_log_verbosity, vFpi) GO(xkb_context_set_user_data, vFpp) GO(xkb_context_unref, vFp) -//GO(xkb_keymap_get_as_string, +GO(xkb_keymap_get_as_string, pFpi) GO(xkb_keymap_key_by_name, uFpp) //GOM(xkb_keymap_key_for_each, vFEppp) GO(xkb_keymap_key_get_name, pFpu) |