diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-05-28 18:31:05 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-05-28 18:31:05 +0200 |
| commit | ec9447ad5fbd6a818633e7b347f589a1da973b8b (patch) | |
| tree | 3194ef2ec6dc38dba2ab74ff0338e7aa3ae24407 /src | |
| parent | 26b01d56f59bc17f48044ce79fbea41a7e2439cb (diff) | |
| download | box64-ec9447ad5fbd6a818633e7b347f589a1da973b8b.tar.gz box64-ec9447ad5fbd6a818633e7b347f589a1da973b8b.zip | |
Added GstTaskPoll to gtkclass wrapping
Diffstat (limited to 'src')
| -rwxr-xr-x | src/include/gtkclass.h | 10 | ||||
| -rwxr-xr-x | src/tools/gtkclass.c | 43 | ||||
| -rw-r--r-- | src/wrapped/wrappedgstreamer.c | 2 |
3 files changed, 55 insertions, 0 deletions
diff --git a/src/include/gtkclass.h b/src/include/gtkclass.h index 23822088..ad262fda 100755 --- a/src/include/gtkclass.h +++ b/src/include/gtkclass.h @@ -778,6 +778,15 @@ typedef struct my_GstAllocatorClass_s { void* _gst_reserved[4]; } my_GstAllocatorClass_t; +typedef struct my__GstTaskPoolClass { + my_GstObjectClass_t parent_class; + void (*prepare) (void* pool, void* error); + void (*cleanup) (void* pool); + void* (*push) (void* pool, void* func, void* user_data, void* error); + void (*join) (void* pool, void* id); + void (*dispose_handle) (void* pool, void* id); + void* _gst_reserved[4-1]; +} my_GstTaskPoolClass_t; // GTypeValueTable typedef struct my_GTypeValueTable_s { @@ -884,6 +893,7 @@ GTKCLASS(AtkObject) \ GTKCLASS(AtkUtil) \ GTKCLASS(GstObject) \ GTKCLASS(GstAllocator) \ +GTKCLASS(GstTaskPool) \ #define GTKCLASS(A) void Set##A##ID(size_t id); GTKCLASSES() diff --git a/src/tools/gtkclass.c b/src/tools/gtkclass.c index e647f7b1..c41674e6 100755 --- a/src/tools/gtkclass.c +++ b/src/tools/gtkclass.c @@ -2398,6 +2398,49 @@ static void bridgeGstAllocatorClass(my_GstAllocatorClass_t* class) #undef SUPERGO +// ----- GstTaskPoolClass ------ +// wrapper x86 -> natives of callbacks +WRAPPER(GstTaskPool, prepare, void, (void* pool, void* error), "pp", pool, error); +WRAPPER(GstTaskPool, cleanup, void, (void* pool), "p", pool); +WRAPPER(GstTaskPool, push, void*, (void* pool, void* func, void* user_data, void* error), "pppp", pool, AddCheckBridge(my_bridge, vFp, func, 0, NULL), user_data, error); +WRAPPER(GstTaskPool, join, void, (void* pool, void* id), "pp", pool, id); +WRAPPER(GstTaskPool, dispose_handle, void, (void* pool, void* id), "pp", pool, id); + +#define SUPERGO() \ + GO(prepare, vFpp); \ + GO(cleanup, vFp); \ + GO(push, pFpppp); \ + GO(join, vFpp); \ + GO(dispose_handle, vFpp); \ + +// wrap (so bridge all calls, just in case) +static void wrapGstTaskPoolClass(my_GstTaskPoolClass_t* class) +{ + wrapGstObjectClass(&class->parent_class); + #define GO(A, W) class->A = reverse_##A##_GstTaskPool (W, class->A) + SUPERGO() + #undef GO +} +// unwrap (and use callback if not a native call anymore) +static void unwrapGstTaskPoolClass(my_GstTaskPoolClass_t* class) +{ + unwrapGstObjectClass(&class->parent_class); + #define GO(A, W) class->A = find_##A##_GstTaskPool (class->A) + SUPERGO() + #undef GO +} +// autobridge +static void bridgeGstTaskPoolClass(my_GstTaskPoolClass_t* class) +{ + bridgeGstObjectClass(&class->parent_class); + #define GO(A, W) autobridge_##A##_GstTaskPool (W, class->A) + SUPERGO() + #undef GO +} + +#undef SUPERGO + + // No more wrap/unwrap #undef WRAPPER #undef FIND diff --git a/src/wrapped/wrappedgstreamer.c b/src/wrapped/wrappedgstreamer.c index cbf51165..1e23a20e 100644 --- a/src/wrapped/wrappedgstreamer.c +++ b/src/wrapped/wrappedgstreamer.c @@ -32,6 +32,7 @@ typedef int (*iFpp_t)(void*, void*); #define ADDED_FUNCTIONS() \ GO(gst_object_get_type, LFv_t) \ GO(gst_allocator_get_type, LFv_t) \ + GO(gst_task_pool_get_type, LFv_t) \ GO(gst_structure_new_valist, pFppA_t) \ GO(gst_structure_new_empty, pFp_t) \ GO(gst_caps_new_empty, pFv_t) \ @@ -397,6 +398,7 @@ EXPORT int my_gst_caps_foreach(x64emu_t* emu, void* caps, void* f, void* data) getMy(lib); \ SetGstObjectID(my->gst_object_get_type()); \ SetGstAllocatorID(my->gst_allocator_get_type()); \ + SetGstTaskPoolID(my->gst_task_pool_get_type()); \ setNeededLibs(lib, 1, "libgtk-3.so.0"); #define CUSTOM_FINI \ |