about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-04-16 17:42:57 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-04-16 17:42:57 +0200
commitdf15bf5c59131e7f4f62f21bce78d1df166fb23b (patch)
treeb8f5a9257a8036d25bb6a98a6a32b18c800f1e39 /src
parent2ccd9da8e877e0a689ae1e946fb5c4592d339055 (diff)
downloadbox64-df15bf5c59131e7f4f62f21bce78d1df166fb23b.tar.gz
box64-df15bf5c59131e7f4f62f21bce78d1df166fb23b.zip
Added some more gconf2 wrapped functions
Diffstat (limited to 'src')
-rw-r--r--src/wrapped/generated/functions_list.txt3
-rw-r--r--src/wrapped/generated/wrappedgconf2types.h4
-rw-r--r--src/wrapped/generated/wrapper.c2
-rw-r--r--src/wrapped/generated/wrapper.h1
-rw-r--r--src/wrapped/wrappedgconf2.c61
-rw-r--r--src/wrapped/wrappedgconf2_private.h28
6 files changed, 84 insertions, 15 deletions
diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt
index 19176594..34098912 100644
--- a/src/wrapped/generated/functions_list.txt
+++ b/src/wrapped/generated/functions_list.txt
@@ -1895,6 +1895,7 @@
 #() uFEiipppp
 #() uFEpiippp
 #() uFEpuuppp
+#() uFEpppppp
 #() uFuippppp
 #() uFppiuppp
 #() uFppuuuup
@@ -2618,6 +2619,8 @@ wrappedfreetype:
   - FTC_Manager_New
 wrappedgbm:
 wrappedgconf2:
+- uFpppppp:
+  - gconf_client_notify_add
 wrappedgcrypt:
 - uFpppV:
   - gcry_sexp_build
diff --git a/src/wrapped/generated/wrappedgconf2types.h b/src/wrapped/generated/wrappedgconf2types.h
index 91528fbd..3bdbc664 100644
--- a/src/wrapped/generated/wrappedgconf2types.h
+++ b/src/wrapped/generated/wrappedgconf2types.h
@@ -11,7 +11,9 @@
 #define ADDED_FUNCTIONS() 
 #endif
 
+typedef uint32_t (*uFpppppp_t)(void*, void*, void*, void*, void*, void*);
 
-#define SUPER() ADDED_FUNCTIONS()
+#define SUPER() ADDED_FUNCTIONS() \
+	GO(gconf_client_notify_add, uFpppppp_t)
 
 #endif // __wrappedgconf2TYPES_H_
diff --git a/src/wrapped/generated/wrapper.c b/src/wrapped/generated/wrapper.c
index 1d167ac8..7d1fd061 100644
--- a/src/wrapped/generated/wrapper.c
+++ b/src/wrapped/generated/wrapper.c
@@ -1931,6 +1931,7 @@ typedef int32_t (*iFppppppp_t)(void*, void*, void*, void*, void*, void*, void*);
 typedef uint32_t (*uFEiipppp_t)(x64emu_t*, int32_t, int32_t, void*, void*, void*, void*);
 typedef uint32_t (*uFEpiippp_t)(x64emu_t*, void*, int32_t, int32_t, void*, void*, void*);
 typedef uint32_t (*uFEpuuppp_t)(x64emu_t*, void*, uint32_t, uint32_t, void*, void*, void*);
+typedef uint32_t (*uFEpppppp_t)(x64emu_t*, void*, void*, void*, void*, void*, void*);
 typedef uint32_t (*uFuippppp_t)(uint32_t, int32_t, void*, void*, void*, void*, void*);
 typedef uint32_t (*uFppiuppp_t)(void*, void*, int32_t, uint32_t, void*, void*, void*);
 typedef uint32_t (*uFppuuuup_t)(void*, void*, uint32_t, uint32_t, uint32_t, uint32_t, void*);
@@ -4334,6 +4335,7 @@ void iFppppppp(x64emu_t *emu, uintptr_t fcn) { iFppppppp_t fn = (iFppppppp_t)fcn
 void uFEiipppp(x64emu_t *emu, uintptr_t fcn) { uFEiipppp_t fn = (uFEiipppp_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*)R_R9); }
 void uFEpiippp(x64emu_t *emu, uintptr_t fcn) { uFEpiippp_t fn = (uFEpiippp_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (int32_t)R_RSI, (int32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
 void uFEpuuppp(x64emu_t *emu, uintptr_t fcn) { uFEpuuppp_t fn = (uFEpuuppp_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (uint32_t)R_RSI, (uint32_t)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
+void uFEpppppp(x64emu_t *emu, uintptr_t fcn) { uFEpppppp_t fn = (uFEpppppp_t)fcn; R_RAX=(uint32_t)fn(emu, (void*)R_RDI, (void*)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9); }
 void uFuippppp(x64emu_t *emu, uintptr_t fcn) { uFuippppp_t fn = (uFuippppp_t)fcn; R_RAX=(uint32_t)fn((uint32_t)R_RDI, (int32_t)R_RSI, (void*)R_RDX, (void*)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void uFppiuppp(x64emu_t *emu, uintptr_t fcn) { uFppiuppp_t fn = (uFppiuppp_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (int32_t)R_RDX, (uint32_t)R_RCX, (void*)R_R8, (void*)R_R9, *(void**)(R_RSP + 8)); }
 void uFppuuuup(x64emu_t *emu, uintptr_t fcn) { uFppuuuup_t fn = (uFppuuuup_t)fcn; R_RAX=(uint32_t)fn((void*)R_RDI, (void*)R_RSI, (uint32_t)R_RDX, (uint32_t)R_RCX, (uint32_t)R_R8, (uint32_t)R_R9, *(void**)(R_RSP + 8)); }
diff --git a/src/wrapped/generated/wrapper.h b/src/wrapped/generated/wrapper.h
index ededa59d..264d26ab 100644
--- a/src/wrapped/generated/wrapper.h
+++ b/src/wrapped/generated/wrapper.h
@@ -1932,6 +1932,7 @@ void iFppppppp(x64emu_t *emu, uintptr_t fnc);
 void uFEiipppp(x64emu_t *emu, uintptr_t fnc);
 void uFEpiippp(x64emu_t *emu, uintptr_t fnc);
 void uFEpuuppp(x64emu_t *emu, uintptr_t fnc);
+void uFEpppppp(x64emu_t *emu, uintptr_t fnc);
 void uFuippppp(x64emu_t *emu, uintptr_t fnc);
 void uFppiuppp(x64emu_t *emu, uintptr_t fnc);
 void uFppuuuup(x64emu_t *emu, uintptr_t fnc);
diff --git a/src/wrapped/wrappedgconf2.c b/src/wrapped/wrappedgconf2.c
index 59f47d98..0ea85bb3 100644
--- a/src/wrapped/wrappedgconf2.c
+++ b/src/wrapped/wrappedgconf2.c
@@ -22,6 +22,67 @@
 const char* gconf2Name = "libgconf-2.so.4";
 #define LIBNAME gconf2
 
+#include "generated/wrappedgconf2types.h"
+
+#include "wrappercallback.h"
+
+#define SUPER() \
+GO(0)   \
+GO(1)   \
+GO(2)   \
+GO(3)
+
+// GFreeFct
+#define GO(A)   \
+static uintptr_t my_GFreeFct_fct_##A = 0;               \
+static void my_GFreeFct_##A(void* a)                    \
+{                                                       \
+    RunFunction(my_context, my_GFreeFct_fct_##A, 1, a); \
+}
+SUPER()
+#undef GO
+static void* findGFreeFctFct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_GFreeFct_fct_##A == (uintptr_t)fct) return my_GFreeFct_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GFreeFct_fct_##A == 0) {my_GFreeFct_fct_##A = (uintptr_t)fct; return my_GFreeFct_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gconf2 GFreeFct callback\n");
+    return NULL;
+}
+// GConfClientNotifyFunc
+#define GO(A)   \
+static uintptr_t my_GConfClientNotifyFunc_fct_##A = 0;                          \
+static void my_GConfClientNotifyFunc_##A(void* a, uint32_t b, void* c, void* d) \
+{                                                                               \
+    RunFunction(my_context, my_GConfClientNotifyFunc_fct_##A, 4, a, b, c, d);   \
+}
+SUPER()
+#undef GO
+static void* findGConfClientNotifyFuncFct(void* fct)
+{
+    if(!fct) return fct;
+    if(GetNativeFnc((uintptr_t)fct))  return GetNativeFnc((uintptr_t)fct);
+    #define GO(A) if(my_GConfClientNotifyFunc_fct_##A == (uintptr_t)fct) return my_GConfClientNotifyFunc_##A;
+    SUPER()
+    #undef GO
+    #define GO(A) if(my_GConfClientNotifyFunc_fct_##A == 0) {my_GConfClientNotifyFunc_fct_##A = (uintptr_t)fct; return my_GConfClientNotifyFunc_##A; }
+    SUPER()
+    #undef GO
+    printf_log(LOG_NONE, "Warning, no more slot for gconf2 GConfClientNotifyFunc callback\n");
+    return NULL;
+}
+
+#undef SUPER
+
+EXPORT uint32_t my_gconf_client_notify_add(x64emu_t* emu, void* client, void* section, void* f, void* data, void* d, void* error)
+{
+    return my->gconf_client_notify_add(client, section, findGConfClientNotifyFuncFct(f), data, findGFreeFctFct(d), error);
+}
 
 #define PRE_INIT    \
     if(box64_nogtk) \
diff --git a/src/wrapped/wrappedgconf2_private.h b/src/wrapped/wrappedgconf2_private.h
index 7b2cbac0..acf7c1e4 100644
--- a/src/wrapped/wrappedgconf2_private.h
+++ b/src/wrapped/wrappedgconf2_private.h
@@ -34,7 +34,7 @@
 //GO(gconf_change_set_unref, 
 //GO(gconf_change_set_unset, 
 //GO(gconf_clear_cache, 
-//GO(gconf_client_add_dir, 
+GO(gconf_client_add_dir, vFppip)
 //GO(gconf_client_all_dirs, 
 //GO(gconf_client_all_entries, 
 //GO(gconf_client_change_set_from_current, 
@@ -44,28 +44,28 @@
 //GO(gconf_client_dir_exists, 
 //GO(gconf_client_error, 
 //GO(gconf_client_error_handling_mode_get_type, 
-//GO(gconf_client_get, 
+GO(gconf_client_get, pFppp)
 //GO(gconf_client_get_bool, 
-//GO(gconf_client_get_default, 
+GO(gconf_client_get_default, pFv)
 //GO(gconf_client_get_default_from_schema, 
 //GO(gconf_client_get_entry, 
 //GO(gconf_client_get_float, 
 //GO(gconf_client_get_for_engine, 
-//GO(gconf_client_get_int, 
-//GO(gconf_client_get_list, 
+GO(gconf_client_get_int, iFppp)
+GO(gconf_client_get_list, pFppip)
 //GO(gconf_client_get_pair, 
 //GO(gconf_client_get_schema, 
-//GO(gconf_client_get_string, 
+GO(gconf_client_get_string, pFppp)
 //GO(gconf_client_get_type, 
 //GO(gconf_client_get_without_default, 
 //GO(gconf_client_key_is_writable, 
 //GO(gconf_client_notify, 
-//GO(gconf_client_notify_add, 
-//GO(gconf_client_notify_remove, 
+GOM(gconf_client_notify_add, uFEpppppp)
+GO(gconf_client_notify_remove, vFpu)
 //GO(gconf_client_preload, 
 //GO(gconf_client_preload_type_get_type, 
 //GO(gconf_client_recursive_unset, 
-//GO(gconf_client_remove_dir, 
+GO(gconf_client_remove_dir, vFppp)
 //GO(gconf_client_reverse_change_set, 
 //GO(gconf_client_set, 
 //GO(gconf_client_set_bool, 
@@ -146,10 +146,10 @@
 //GO(gconf_entry_free, 
 //GO(gconf_entry_get_is_default, 
 //GO(gconf_entry_get_is_writable, 
-//GO(gconf_entry_get_key, 
+GO(gconf_entry_get_key, pFp)
 //GO(gconf_entry_get_schema_name, 
 //GO(gconf_entry_get_type, 
-//GO(gconf_entry_get_value, 
+GO(gconf_entry_get_value, pFp)
 //GO(gconf_entry_new, 
 //GO(gconf_entry_new_nocopy, 
 //GO(gconf_entry_ref, 
@@ -278,8 +278,8 @@
 //GO(gconf_value_copy, 
 //GO(gconf_value_decode, 
 //GO(gconf_value_encode, 
-//GO(gconf_value_free, 
-//GO(gconf_value_get_bool, 
+GO(gconf_value_free, vFp)
+GO(gconf_value_get_bool, iFp)
 //GO(gconf_value_get_car, 
 //GO(gconf_value_get_cdr, 
 //GO(gconf_value_get_float, 
@@ -287,7 +287,7 @@
 //GO(gconf_value_get_list, 
 //GO(gconf_value_get_list_type, 
 //GO(gconf_value_get_schema, 
-//GO(gconf_value_get_string, 
+GO(gconf_value_get_string, pFp)
 //GO(gconf_value_get_type, 
 //GO(gconf_value_list_from_primitive_list, 
 //GO(gconf_value_list_to_primitive_list_destructive,