about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <seebastien.chev@gmail.com>2023-09-09 17:38:01 +0200
committerptitSeb <seebastien.chev@gmail.com>2023-09-09 17:38:01 +0200
commiteca872c04d167c8c89537236e0d5f396622e0545 (patch)
treeca29c1daf527f4d8c126c82520c0fe9ee7a89038 /src
parent8947b735f9f6d1906365954784236f562f9d6f8d (diff)
downloadbox64-eca872c04d167c8c89537236e0d5f396622e0545.tar.gz
box64-eca872c04d167c8c89537236e0d5f396622e0545.zip
Added some more wrapped functions
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt10
-rw-r--r--src/wrapped/generated/wrappedgstreamertypes.h9
-rw-r--r--src/wrapped/generated/wrapper.c2
-rw-r--r--src/wrapped/generated/wrapper.h1
-rw-r--r--src/wrapped/wrappedfreetype_private.h2
-rw-r--r--src/wrapped/wrappedgstreamer.c79
-rw-r--r--src/wrapped/wrappedgstreamer_private.h18
-rw-r--r--src/wrapped/wrappedlibc.c3
-rw-r--r--src/wrapped/wrappedxkbcommon_private.h2
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)