diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index 54bd9cbcd..ed9ea7b73 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -4220,9 +4220,13 @@ wrappedgdkx112: - uFiuppp: - gdk_threads_add_timeout_full wrappedgio2: +- vFpp: + - g_task_run_in_thread + - g_task_run_in_thread_sync - vFppp: - g_simple_async_result_set_op_res_gpointer - g_task_return_pointer + - g_task_set_task_data - vFippp: - g_bus_get - vFppip: @@ -4357,6 +4361,7 @@ wrappedglib2: - g_strdup_vprintf - vFppp: - g_array_sort_with_data + - g_datalist_foreach - g_hash_table_foreach - g_list_foreach - g_log_set_writer_func @@ -4401,6 +4406,7 @@ wrappedglib2: - g_node_copy_deep - g_once_impl - g_queue_find_custom + - g_slist_copy_deep - g_slist_find_custom - g_slist_insert_sorted - g_slist_sort_with_data diff --git a/src/wrapped/generated/wrappedgio2types.h b/src/wrapped/generated/wrappedgio2types.h index c6a01462d..eaea925d3 100644 --- a/src/wrapped/generated/wrappedgio2types.h +++ b/src/wrapped/generated/wrappedgio2types.h @@ -11,6 +11,7 @@ #define ADDED_FUNCTIONS() #endif +typedef void (*vFpp_t)(void*, void*); typedef void (*vFppp_t)(void*, void*, void*); typedef void (*vFippp_t)(int32_t, void*, void*, void*); typedef void (*vFppip_t)(void*, void*, int32_t, void*); @@ -45,8 +46,11 @@ typedef uint32_t (*uFppppppuppp_t)(void*, void*, void*, void*, void*, void*, uin typedef void (*vFpppppppuippp_t)(void*, void*, void*, void*, void*, void*, void*, uint32_t, int32_t, void*, void*, void*); #define SUPER() ADDED_FUNCTIONS() \ + GO(g_task_run_in_thread, vFpp_t) \ + GO(g_task_run_in_thread_sync, vFpp_t) \ GO(g_simple_async_result_set_op_res_gpointer, vFppp_t) \ GO(g_task_return_pointer, vFppp_t) \ + GO(g_task_set_task_data, vFppp_t) \ GO(g_bus_get, vFippp_t) \ GO(g_simple_async_result_run_in_thread, vFppip_t) \ GO(g_dbus_connection_close, vFpppp_t) \ diff --git a/src/wrapped/generated/wrappedglib2types.h b/src/wrapped/generated/wrappedglib2types.h index 6a484dd5f..c8c37ebcd 100644 --- a/src/wrapped/generated/wrappedglib2types.h +++ b/src/wrapped/generated/wrappedglib2types.h @@ -111,6 +111,7 @@ typedef int32_t (*iFpppuppppppp_t)(void*, void*, void*, uint32_t, void*, void*, GO(g_markup_vprintf_escaped, pFpA_t) \ GO(g_strdup_vprintf, pFpA_t) \ GO(g_array_sort_with_data, vFppp_t) \ + GO(g_datalist_foreach, vFppp_t) \ GO(g_hash_table_foreach, vFppp_t) \ GO(g_list_foreach, vFppp_t) \ GO(g_log_set_writer_func, vFppp_t) \ @@ -147,6 +148,7 @@ typedef int32_t (*iFpppuppppppp_t)(void*, void*, void*, uint32_t, void*, void*, GO(g_node_copy_deep, pFppp_t) \ GO(g_once_impl, pFppp_t) \ GO(g_queue_find_custom, pFppp_t) \ + GO(g_slist_copy_deep, pFppp_t) \ GO(g_slist_find_custom, pFppp_t) \ GO(g_slist_insert_sorted, pFppp_t) \ GO(g_slist_sort_with_data, pFppp_t) \ diff --git a/src/wrapped/wrappedgio2.c b/src/wrapped/wrappedgio2.c index 04e3462ea..e80bdceae 100644 --- a/src/wrapped/wrappedgio2.c +++ b/src/wrapped/wrappedgio2.c @@ -87,6 +87,34 @@ static void* findGDestroyNotifyFct(void* fct) return NULL; } +// GTaskThreadFunc +#define GO(A) \ + static uintptr_t my_GTaskThreadFunc_fct_##A = 0; \ + static void my_GTaskThreadFunc_##A(void* task, void* source_object, void* task_data, void* cancellable) \ + { \ + RunFunctionFmt(my_GTaskThreadFunc_fct_##A, "pppp", task, source_object, task_data, cancellable); \ + } +SUPER() +#undef GO +static void* findGTaskThreadFuncFct(void* fct) +{ + if (!fct) return fct; + if (GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); +#define GO(A) \ + if (my_GTaskThreadFunc_fct_##A == (uintptr_t)fct) return my_GTaskThreadFunc_##A; + SUPER() +#undef GO +#define GO(A) \ + if (my_GTaskThreadFunc_fct_##A == 0) { \ + my_GTaskThreadFunc_fct_##A = (uintptr_t)fct; \ + return my_GTaskThreadFunc_##A; \ + } + SUPER() +#undef GO + printf_log(LOG_NONE, "Warning, no more slot for gio2 GTaskThreadFunc callback\n"); + return NULL; +} + // GDBusProxyTypeFunc #define GO(A) \ static uintptr_t my_GDBusProxyTypeFunc_fct_##A = 0; \ @@ -381,6 +409,21 @@ EXPORT void my_g_task_return_pointer(x64emu_t* emu, void* task, void* result, vo my->g_task_return_pointer(task, result, findGDestroyNotifyFct(destroy)); } +EXPORT void my_g_task_set_task_data(x64emu_t* emu, void* task, void* data, void* destroy) +{ + my->g_task_set_task_data(task, data, findGDestroyNotifyFct(destroy)); +} + +EXPORT void my_g_task_run_in_thread(x64emu_t* emu, void* task, void* func) +{ + my->g_task_run_in_thread(task, findGTaskThreadFuncFct(func)); +} + +EXPORT void my_g_task_run_in_thread_sync(x64emu_t* emu, void* task, void* func) +{ + my->g_task_run_in_thread_sync(task, findGTaskThreadFuncFct(func)); +} + EXPORT void my_g_dbus_proxy_new(x64emu_t* emu, void* connection, uint32_t flags, void* info, void* name, void* path, void* interface, void* cancellable, void* cb, void* data) { my->g_dbus_proxy_new(connection, flags, info, name, path, interface, cancellable, findGAsyncReadyCallbackFct(cb), data); diff --git a/src/wrapped/wrappedgio2_private.h b/src/wrapped/wrappedgio2_private.h index 647da3345..fb25008b0 100644 --- a/src/wrapped/wrappedgio2_private.h +++ b/src/wrapped/wrappedgio2_private.h @@ -1620,6 +1620,7 @@ GO(g_subprocess_wait_finish, iFppp) GO(g_task_get_cancellable, pFp) GO(g_task_get_check_cancellable, iFp) GO(g_task_get_context, pFp) +GO(g_task_get_name, pFp) GO(g_task_get_priority, iFp) GO(g_task_get_return_on_cancel, iFp) GO(g_task_get_source_object, pFp) @@ -1640,13 +1641,14 @@ GO(g_task_return_error_if_cancelled, iFp) GO(g_task_return_int, vFpl) GOM(g_task_return_new_error, vFEpuipV) GOM(g_task_return_pointer, vFEppp) -//GOM(g_task_run_in_thread, vFpp) -//GOM(g_task_run_in_thread_sync, vFpp) +GOM(g_task_run_in_thread, vFEpp) +GOM(g_task_run_in_thread_sync, vFEpp) GO(g_task_set_check_cancellable, vFpi) +GO(g_task_set_name, vFpp) GO(g_task_set_priority, vFpi) GO(g_task_set_return_on_cancel, iFpi) GO(g_task_set_source_tag, vFpp) -//GOM(g_task_set_task_data, vFppp) +GOM(g_task_set_task_data, vFEppp) GO(g_tcp_connection_get_graceful_disconnect, iFp) GO(g_tcp_connection_get_type, LFv) GO(g_tcp_connection_set_graceful_disconnect, vFpi) diff --git a/src/wrapped/wrappedglib2.c b/src/wrapped/wrappedglib2.c index 4b16a8372..6fd4fb286 100644 --- a/src/wrapped/wrappedglib2.c +++ b/src/wrapped/wrappedglib2.c @@ -77,12 +77,12 @@ GO(13) \ GO(14) \ // GCopyFct -#define GO(A) \ -static uintptr_t my_copy_fct_##A = 0; \ -static void* my_copy_##A(void* data) \ -{ \ - return (void*)RunFunctionFmt(my_copy_fct_##A, "p", data); \ -} +#define GO(A) \ + static uintptr_t my_copy_fct_##A = 0; \ + static void* my_copy_##A(void* src, void* data) \ + { \ + return (void*)RunFunctionFmt(my_copy_fct_##A, "pp", src, data); \ + } SUPER() #undef GO static void* findCopyFct(void* fct) @@ -789,6 +789,34 @@ static void* findLogWriterFct(void* fct) return NULL; } +// GDataForeachFunc ... +#define GO(A) \ + static uintptr_t my_GDataForeachFunc_fct_##A = 0; \ + static void* my_GDataForeachFunc_##A(uint32_t a, void* b, void* c) \ + { \ + return (void*)RunFunctionFmt(my_GDataForeachFunc_fct_##A, "upp", a, b, c); \ + } +SUPER() +#undef GO +static void* findGDataForeachFuncFct(void* fct) +{ + if (!fct) return fct; + if (GetNativeFnc((uintptr_t)fct)) return GetNativeFnc((uintptr_t)fct); +#define GO(A) \ + if (my_GDataForeachFunc_fct_##A == (uintptr_t)fct) return my_GDataForeachFunc_##A; + SUPER() +#undef GO +#define GO(A) \ + if (my_GDataForeachFunc_fct_##A == 0) { \ + my_GDataForeachFunc_fct_##A = (uintptr_t)fct; \ + return my_GDataForeachFunc_##A; \ + } + SUPER() +#undef GO + printf_log(LOG_NONE, "Warning, no more slot for glib2 GDataForeachFunc callback\n"); + return NULL; +} + #undef SUPER EXPORT void* my_g_markup_vprintf_escaped(x64emu_t *emu, void* fmt, void* b) { @@ -834,6 +862,11 @@ EXPORT void my_g_datalist_id_set_data_full(x64emu_t* emu, void* datalist, uintpt my->g_datalist_id_set_data_full(datalist, key, data, fc); } +EXPORT void my_g_datalist_foreach(x64emu_t* emu, void* datalist, void* func, void* data) +{ + my->g_datalist_foreach(datalist, findGDataForeachFuncFct(func), data); +} + EXPORT void* my_g_datalist_id_dup_data(x64emu_t* emu, void* datalist, uintptr_t key, void* dupcb, void* data) { void* cc = findDuplicateFct(dupcb); @@ -1502,6 +1535,11 @@ EXPORT void* my_g_node_copy_deep(x64emu_t* emu, void* node, void* f, void* data) return my->g_node_copy_deep(node, findCopyFct(f), data); } +EXPORT void* my_g_slist_copy_deep(x64emu_t* emu, void* list, void* f, void* data) +{ + return my->g_slist_copy_deep(list, findCopyFct(f), data); +} + EXPORT void* my_g_thread_try_new(x64emu_t* emu, void* name, void* f, void* data, void* err) { return my->g_thread_try_new(name, findGThreadFuncFct(f), data, err); diff --git a/src/wrapped/wrappedglib2_private.h b/src/wrapped/wrappedglib2_private.h index 5ad2e0c17..1a673062f 100644 --- a/src/wrapped/wrappedglib2_private.h +++ b/src/wrapped/wrappedglib2_private.h @@ -222,7 +222,7 @@ GO(g_convert_with_fallback, pFplpppppp) GO(g_convert_with_iconv, pFplpppp) GO(g_creat, iFpi) GO(g_datalist_clear, vFp) -//GOM(g_datalist_foreach, vFEppp) +GOM(g_datalist_foreach, vFEppp) GO(g_datalist_get_data, pFpp) GO(g_datalist_get_flags, uFp) GOM(g_datalist_id_dup_data, pFEpupp) @@ -389,6 +389,7 @@ GO(g_get_filename_charsets, iFp) GO(g_get_home_dir, pFv) GO(g_get_host_name, pFv) GO(g_get_language_names, pFv) +GO(g_get_language_names_with_category, pFp) GO(g_get_locale_variants, pFp) GO(g_get_monotonic_time, lFv) GO(g_get_num_processors, uFv) @@ -681,7 +682,7 @@ GO(g_markup_parse_context_get_user_data, pFp) GOM(g_markup_parse_context_new, pFEpupp) GO(g_markup_parse_context_parse, iFpplp) GO(g_markup_parse_context_pop, pFp) -//GOM(g_markup_parse_context_push, vFppp) +GO(g_markup_parse_context_push, vFppp) GO(g_markup_parse_context_ref, pFp) GO(g_markup_parse_context_unref, vFp) GOM(g_markup_printf_escaped, pFEpV) @@ -1042,7 +1043,7 @@ GO(g_slist_alloc, pFv) GO(g_slist_append, pFpp) GO(g_slist_concat, pFpp) GO(g_slist_copy, pFp) -//GOM(g_slist_copy_deep, pFEppp) +GOM(g_slist_copy_deep, pFEppp) GO(g_slist_delete_link, pFpp) GO(g_slist_find, pFpp) GOM(g_slist_find_custom, pFEppp)